diff --git a/csminify.go b/csminify.go
index 661b227..edad2f0 100644
--- a/csminify.go
+++ b/csminify.go
@@ -86,11 +86,16 @@ func ToReplayWithConfig(r io.Reader, cfg ReplayConfig) (rep.Replay, error) {
 	// Make the parser accessible for the custom event handlers
 	cfg.EventCollector.parser = p
 
-	m := newMinifier(p, cfg.EventCollector)
+	m := newMinifier(p, cfg.EventCollector, cfg.SnapshotFrequency)
 
 	m.replay.Header.MapName = header.MapName
-	m.replay.Header.TickRate = header.FrameRate()
-	m.replay.Header.SnapshotRate = int(math.Round(m.replay.Header.TickRate / cfg.SnapshotFrequency))
+	m.tickRate(p.TickRate())
+
+	p.RegisterEventHandler(func(events.ConVarsUpdated) {
+		if tickRate := p.TickRate(); tickRate != 0 {
+			m.tickRate(tickRate)
+		}
+	})
 
 	// Register event handlers from collector
 	for _, h := range cfg.EventCollector.handlers {
@@ -108,18 +113,20 @@ func ToReplayWithConfig(r io.Reader, cfg ReplayConfig) (rep.Replay, error) {
 }
 
 type minifier struct {
-	parser         dem.Parser
-	replay         rep.Replay
-	eventCollector *EventCollector
+	parser            dem.Parser
+	replay            rep.Replay
+	eventCollector    *EventCollector
+	snapshotFrequency float64
 
 	knownPlayerEntityIDs map[int]struct{}
 }
 
-func newMinifier(parser dem.Parser, eventCollector *EventCollector) minifier {
+func newMinifier(parser dem.Parser, eventCollector *EventCollector, snapshotFrequency float64) minifier {
 	return minifier{
 		parser:               parser,
 		eventCollector:       eventCollector,
 		knownPlayerEntityIDs: make(map[int]struct{}),
+		snapshotFrequency:    snapshotFrequency,
 	}
 }
 
@@ -196,6 +203,11 @@ func (m *minifier) updateKnownPlayers() {
 	}
 }
 
+func (m *minifier) tickRate(rate float64) {
+	m.replay.Header.TickRate = rate
+	m.replay.Header.SnapshotRate = int(math.Round(rate / m.snapshotFrequency))
+}
+
 func r3VectorToPoint(v r3.Vector) rep.Point {
 	return rep.Point{X: int(v.X), Y: int(v.Y), Z: int(v.Z)}
 }
diff --git a/examples/minimal.json b/examples/minimal.json
index a4df55d..83f1a1c 100644
--- a/examples/minimal.json
+++ b/examples/minimal.json
@@ -1,23 +1,23 @@
 {
 	"header": {
 		"map": "de_cache",
-		"tickRate": 25.595680094066637,
-		"snapshotRate": 51
+		"tickRate": 128,
+		"snapshotRate": 256
 	},
 	"entities": [
 		{
-			"id": 2,
-			"name": "xms*ASUS ♥ /F/",
+			"id": 3,
+			"name": "to1nou * Seagate",
 			"team": 2
 		},
 		{
-			"id": 4,
-			"name": "tiziaN",
-			"team": 3
+			"id": 7,
+			"name": "Ex6TenZ-BALLISTIX",
+			"team": 2
 		},
 		{
-			"id": 10,
-			"name": "syrsoNR",
+			"id": 9,
+			"name": "crisby",
 			"team": 3
 		},
 		{
@@ -25,40 +25,29 @@
 			"name": "Ptikrazy",
 			"team": 1
 		},
-		{
-			"id": 9,
-			"name": "crisby",
-			"team": 3
-		},
-		{
-			"id": 11,
-			"name": "mistou * Cooler Master",
-			"team": 2
-		},
 		{
 			"id": 13,
 			"name": "keev",
 			"team": 3
 		},
 		{
-			"id": 1,
-			"name": "ESWC TV - By VeryGames.net",
-			"team": 0,
-			"isNpc": true
+			"id": 14,
+			"name": "kzy LJ∼",
+			"team": 3
 		},
 		{
-			"id": 3,
-			"name": "to1nou * Seagate",
+			"id": 2,
+			"name": "xms*ASUS ♥ /F/",
 			"team": 2
 		},
 		{
-			"id": 5,
-			"name": "ALEX * Intel",
-			"team": 2
+			"id": 4,
+			"name": "tiziaN",
+			"team": 3
 		},
 		{
-			"id": 7,
-			"name": "Ex6TenZ-BALLISTIX",
+			"id": 5,
+			"name": "ALEX * Intel",
 			"team": 2
 		},
 		{
@@ -67,10 +56,21 @@
 			"team": 1
 		},
 		{
-			"id": 14,
-			"name": "kzy LJ∼",
+			"id": 10,
+			"name": "syrsoNR",
 			"team": 3
 		},
+		{
+			"id": 11,
+			"name": "mistou * Cooler Master",
+			"team": 2
+		},
+		{
+			"id": 1,
+			"name": "ESWC TV - By VeryGames.net",
+			"team": 0,
+			"isNpc": true
+		},
 		{
 			"id": 6,
 			"name": "eswc.com | Samy",
@@ -79,87 +79,86 @@
 	],
 	"snapshots": [
 		{
-			"tick": 51,
+			"tick": 256,
 			"entityUpdates": [
 				{
 					"entityId": 5,
 					"team": 2,
 					"positions": [
 						{
-							"x": 418,
-							"y": 233,
-							"z": 1613
+							"x": 3114,
+							"y": -160,
+							"z": 1614
 						}
 					],
-					"angleX": 195,
-					"angleY": 357,
-					"hp": 11,
-					"armor": 86,
-					"hasHelmet": true,
+					"angleX": 182,
+					"hp": 100,
 					"equipment": [
 						{
-							"type": 3,
-							"ammoInMagazine": 13,
+							"type": 405,
+							"ammoInMagazine": -1,
 							"ammoReserve": 0
 						},
 						{
-							"type": 405,
+							"type": 2,
+							"ammoInMagazine": 20,
+							"ammoReserve": 120
+						},
+						{
+							"type": 404,
 							"ammoInMagazine": -1,
 							"ammoReserve": 0
 						}
 					]
 				},
 				{
-					"entityId": 11,
-					"team": 2,
+					"entityId": 10,
+					"team": 3,
 					"positions": [
 						{
-							"x": 529,
-							"y": -250,
-							"z": 1748
+							"x": -1563,
+							"y": 790,
+							"z": 1614
 						}
 					],
-					"angleX": 195,
-					"angleY": 6,
-					"hp": 16,
-					"armor": 98,
-					"hasHelmet": true,
+					"angleX": 270,
+					"hp": 100,
 					"equipment": [
-						{
-							"type": 4,
-							"ammoInMagazine": 7,
-							"ammoReserve": 27
-						},
 						{
 							"type": 405,
 							"ammoInMagazine": -1,
 							"ammoReserve": 0
+						},
+						{
+							"type": 9,
+							"ammoInMagazine": 12,
+							"ammoReserve": 24
 						}
 					]
 				},
 				{
-					"entityId": 13,
-					"team": 3,
+					"entityId": 11,
+					"team": 2,
 					"positions": [
 						{
-							"x": -1572,
-							"y": 722,
-							"z": 1614
+							"x": 3009,
+							"y": -168,
+							"z": 1615
 						}
 					],
-					"angleX": 270,
+					"angleX": 181,
 					"angleY": 359,
 					"hp": 100,
 					"equipment": [
-						{
-							"type": 9,
-							"ammoInMagazine": 12,
-							"ammoReserve": 24
-						},
 						{
 							"type": 405,
 							"ammoInMagazine": -1,
 							"ammoReserve": 0
+						},
+						{
+							"type": 2,
+							"ammoInMagazine": 20,
+							"ammoReserve": 120
 						}
 					]
 				},
@@ -168,16 +167,14 @@
 					"team": 3,
 					"positions": [
 						{
-							"x": -825,
-							"y": 606,
-							"z": 1636
+							"x": -1588,
+							"y": 856,
+							"z": 1614
 						}
 					],
-					"angleX": 86,
-					"angleY": 8,
-					"hp": 8,
-					"armor": 86,
-					"hasHelmet": true,
+					"angleX": 290,
+					"angleY": 5,
+					"hp": 100,
 					"equipment": [
 						{
 							"type": 405,
@@ -188,32 +185,47 @@
 							"type": 9,
 							"ammoInMagazine": 12,
 							"ammoReserve": 24
-						},
+						}
+					]
+				},
+				{
+					"entityId": 2,
+					"team": 2,
+					"positions": [
 						{
-							"type": 309,
-							"ammoInMagazine": 5,
-							"ammoReserve": 30
-						},
+							"x": 3068,
+							"y": 250,
+							"z": 1613
+						}
+					],
+					"angleX": 182,
+					"hp": 100,
+					"equipment": [
 						{
-							"type": 505,
-							"ammoInMagazine": 1,
+							"type": 405,
+							"ammoInMagazine": -1,
 							"ammoReserve": 0
+						},
+						{
+							"type": 2,
+							"ammoInMagazine": 20,
+							"ammoReserve": 120
 						}
 					]
 				},
 				{
-					"entityId": 4,
-					"team": 3,
+					"entityId": 3,
+					"team": 2,
 					"positions": [
 						{
-							"x": -817,
-							"y": -451,
-							"z": 1614
+							"x": 3190,
+							"y": -134,
+							"z": 1613
 						}
 					],
-					"angleX": 92,
-					"angleY": 12,
-					"hp": 97,
+					"angleX": 172,
+					"angleY": 359,
+					"hp": 100,
 					"equipment": [
 						{
 							"type": 405,
@@ -221,19 +233,19 @@
 							"ammoReserve": 0
 						},
 						{
-							"type": 9,
-							"ammoInMagazine": 12,
-							"ammoReserve": 18
+							"type": 2,
+							"ammoInMagazine": 20,
+							"ammoReserve": 120
 						}
 					]
 				},
 				{
-					"entityId": 10,
+					"entityId": 13,
 					"team": 3,
 					"positions": [
 						{
-							"x": -1382,
-							"y": 815,
+							"x": -1400,
+							"y": 550,
 							"z": 1614
 						}
 					],
@@ -253,20 +265,17 @@
 					]
 				},
 				{
-					"entityId": 3,
+					"entityId": 7,
 					"team": 2,
 					"positions": [
 						{
-							"x": 555,
-							"y": 186,
+							"x": 3158,
+							"y": 131,
 							"z": 1613
 						}
 					],
-					"angleX": 187,
-					"angleY": 357,
+					"angleX": 182,
 					"hp": 100,
-					"armor": 100,
-					"hasHelmet": true,
 					"equipment": [
 						{
 							"type": 405,
@@ -277,25 +286,20 @@
 							"type": 2,
 							"ammoInMagazine": 20,
 							"ammoReserve": 120
-						},
-						{
-							"type": 303,
-							"ammoInMagazine": 10,
-							"ammoReserve": 90
 						}
 					]
 				},
 				{
-					"entityId": 7,
-					"team": 2,
+					"entityId": 9,
+					"team": 3,
 					"positions": [
 						{
-							"x": 2973,
-							"y": 250,
-							"z": 1613
+							"x": -1560,
+							"y": 536,
+							"z": 1614
 						}
 					],
-					"angleX": 182,
+					"angleX": 270,
 					"hp": 100,
 					"equipment": [
 						{
@@ -304,76 +308,63 @@
 							"ammoReserve": 0
 						},
 						{
-							"type": 2,
-							"ammoInMagazine": 20,
-							"ammoReserve": 120
+							"type": 9,
+							"ammoInMagazine": 12,
+							"ammoReserve": 24
 						}
 					]
 				},
 				{
-					"entityId": 2,
-					"team": 2,
+					"entityId": 4,
+					"team": 3,
 					"positions": [
 						{
-							"x": 513,
-							"y": -85,
-							"z": 1744
+							"x": -1442,
+							"y": 868,
+							"z": 1614
 						}
 					],
-					"angleX": 170,
-					"angleY": 4,
-					"hp": 24,
-					"armor": 83,
-					"hasHelmet": true,
+					"angleX": 250,
+					"angleY": 359,
+					"hp": 100,
 					"equipment": [
-						{
-							"type": 2,
-							"ammoInMagazine": 20,
-							"ammoReserve": 120
-						},
-						{
-							"type": 303,
-							"ammoInMagazine": 15,
-							"ammoReserve": 90
-						},
 						{
 							"type": 405,
 							"ammoInMagazine": -1,
 							"ammoReserve": 0
+						},
+						{
+							"type": 9,
+							"ammoInMagazine": 12,
+							"ammoReserve": 24
 						}
 					]
 				}
 			]
 		},
 		{
-			"tick": 102,
+			"tick": 512,
 			"entityUpdates": [
 				{
-					"entityId": 2,
+					"entityId": 3,
 					"team": 2,
 					"positions": [
 						{
-							"x": 336,
-							"y": -127,
-							"z": 1790
+							"x": 3190,
+							"y": -134,
+							"z": 1613
 						}
 					],
-					"angleX": 163,
-					"angleY": 8,
-					"hp": 24,
-					"armor": 83,
-					"hasHelmet": true,
+					"angleX": 166,
+					"angleY": 358,
+					"hp": 100,
+					"armor": 100,
 					"equipment": [
 						{
 							"type": 2,
 							"ammoInMagazine": 20,
 							"ammoReserve": 120
 						},
-						{
-							"type": 303,
-							"ammoInMagazine": 15,
-							"ammoReserve": 90
-						},
 						{
 							"type": 405,
 							"ammoInMagazine": -1,
@@ -386,13 +377,15 @@
 					"team": 2,
 					"positions": [
 						{
-							"x": 2973,
-							"y": 250,
+							"x": 3158,
+							"y": 131,
 							"z": 1613
 						}
 					],
-					"angleX": 182,
+					"angleX": 209,
+					"angleY": 7,
 					"hp": 100,
+					"armor": 100,
 					"equipment": [
 						{
 							"type": 405,
@@ -407,18 +400,18 @@
 					]
 				},
 				{
-					"entityId": 13,
+					"entityId": 10,
 					"team": 3,
 					"positions": [
 						{
-							"x": -1572,
-							"y": 722,
+							"x": -1563,
+							"y": 790,
 							"z": 1614
 						}
 					],
 					"angleX": 270,
-					"angleY": 359,
 					"hp": 100,
+					"armor": 100,
 					"equipment": [
 						{
 							"type": 405,
@@ -437,137 +430,140 @@
 					"team": 2,
 					"positions": [
 						{
-							"x": -29,
-							"y": 368,
-							"z": 1613
+							"x": 3114,
+							"y": -160,
+							"z": 1614
 						}
 					],
-					"angleX": 101,
-					"angleY": 353,
-					"hp": 11,
-					"armor": 86,
-					"hasHelmet": true,
+					"angleX": 170,
+					"angleY": 8,
+					"hp": 100,
+					"armor": 100,
 					"equipment": [
 						{
-							"type": 405,
+							"type": 2,
+							"ammoInMagazine": 20,
+							"ammoReserve": 120
+						},
+						{
+							"type": 404,
 							"ammoInMagazine": -1,
 							"ammoReserve": 0
 						},
 						{
-							"type": 3,
-							"ammoInMagazine": 6,
+							"type": 405,
+							"ammoInMagazine": -1,
 							"ammoReserve": 0
 						}
 					]
 				},
 				{
-					"entityId": 3,
-					"team": 2,
+					"entityId": 14,
+					"team": 3,
 					"positions": [
 						{
-							"x": 374,
-							"y": 167,
-							"z": 1613
+							"x": -1588,
+							"y": 856,
+							"z": 1614
 						}
 					],
-					"angleX": 150,
+					"angleX": 293,
+					"angleY": 6,
 					"hp": 100,
-					"armor": 100,
-					"hasHelmet": true,
 					"equipment": [
-						{
-							"type": 303,
-							"ammoInMagazine": 5,
-							"ammoReserve": 90
-						},
 						{
 							"type": 405,
 							"ammoInMagazine": -1,
 							"ammoReserve": 0
 						},
 						{
-							"type": 2,
-							"ammoInMagazine": 20,
-							"ammoReserve": 120
+							"type": 9,
+							"ammoInMagazine": 12,
+							"ammoReserve": 24
 						}
 					]
 				},
 				{
-					"entityId": 14,
-					"team": 3,
+					"entityId": 2,
+					"team": 2,
 					"positions": [
 						{
-							"x": -825,
-							"y": 606,
-							"z": 1636
+							"x": 3068,
+							"y": 250,
+							"z": 1613
 						}
 					],
-					"angleX": 86,
-					"angleY": 8,
-					"hp": 8,
-					"armor": 86,
-					"hasHelmet": true,
+					"angleX": 189,
+					"angleY": 12,
+					"hp": 100,
+					"armor": 100,
 					"equipment": [
-						{
-							"type": 505,
-							"ammoInMagazine": 1,
-							"ammoReserve": 0
-						},
 						{
 							"type": 405,
 							"ammoInMagazine": -1,
 							"ammoReserve": 0
 						},
 						{
-							"type": 9,
-							"ammoInMagazine": 12,
-							"ammoReserve": 24
+							"type": 2,
+							"ammoInMagazine": 20,
+							"ammoReserve": 120
 						},
 						{
-							"type": 309,
-							"ammoInMagazine": 5,
-							"ammoReserve": 30
+							"type": 501,
+							"ammoInMagazine": 1,
+							"ammoReserve": 0
 						}
 					]
 				},
 				{
-					"entityId": 4,
-					"team": 3,
+					"entityId": 11,
+					"team": 2,
 					"positions": [
 						{
-							"x": -840,
-							"y": 37,
-							"z": 1614
+							"x": 3009,
+							"y": -168,
+							"z": 1615
 						}
 					],
-					"angleX": 87,
-					"angleY": 11,
-					"hp": 97,
+					"angleX": 190,
+					"hp": 100,
 					"equipment": [
 						{
-							"type": 9,
-							"ammoInMagazine": 12,
-							"ammoReserve": 18
+							"type": 505,
+							"ammoInMagazine": 1,
+							"ammoReserve": 0
+						},
+						{
+							"type": 504,
+							"ammoInMagazine": 1,
+							"ammoReserve": 0
 						},
 						{
 							"type": 405,
 							"ammoInMagazine": -1,
 							"ammoReserve": 0
+						},
+						{
+							"type": 3,
+							"ammoInMagazine": 13,
+							"ammoReserve": 26
 						}
 					]
 				},
 				{
-					"entityId": 10,
+					"entityId": 4,
 					"team": 3,
 					"positions": [
 						{
-							"x": -1382,
-							"y": 815,
+							"x": -1442,
+							"y": 868,
 							"z": 1614
 						}
 					],
-					"angleX": 270,
+					"angleX": 275,
+					"angleY": 4,
 					"hp": 100,
+					"armor": 100,
 					"equipment": [
 						{
 							"type": 405,
@@ -586,14 +582,15 @@
 					"team": 3,
 					"positions": [
 						{
-							"x": -1394,
-							"y": 515,
+							"x": -1560,
+							"y": 536,
 							"z": 1614
 						}
 					],
-					"angleX": 281,
-					"angleY": 2,
+					"angleX": 318,
+					"angleY": 4,
 					"hp": 100,
+					"armor": 100,
 					"equipment": [
 						{
 							"type": 405,
@@ -608,30 +605,24 @@
 					]
 				},
 				{
-					"entityId": 11,
-					"team": 2,
+					"entityId": 13,
+					"team": 3,
 					"positions": [
 						{
-							"x": 112,
-							"y": -366,
+							"x": -1400,
+							"y": 550,
 							"z": 1614
 						}
 					],
-					"angleX": 201,
-					"angleY": 1,
-					"hp": 16,
-					"armor": 98,
-					"hasHelmet": true,
+					"angleX": 276,
+					"angleY": 9,
+					"hp": 100,
+					"armor": 100,
 					"equipment": [
 						{
 							"type": 405,
 							"ammoInMagazine": -1,
 							"ammoReserve": 0
-						},
-						{
-							"type": 4,
-							"ammoInMagazine": 7,
-							"ammoReserve": 27
 						}
 					]
 				}
diff --git a/examples/minimal.mp b/examples/minimal.mp
index 287b5ee..bf8d21a 100644
Binary files a/examples/minimal.mp and b/examples/minimal.mp differ
diff --git a/examples/minimal.pb b/examples/minimal.pb
index cfa93dd..8dafe42 100644
Binary files a/examples/minimal.pb and b/examples/minimal.pb differ