diff --git a/library/Octane/Data.hs b/library/Octane/Data.hs
--- a/library/Octane/Data.hs
+++ b/library/Octane/Data.hs
@@ -5,6 +5,7 @@
 import Data.Function ((&))
 import Data.Monoid ((<>))
 
+import qualified Data.Bimap as Bimap
 import qualified Data.Map.Strict as Map
 import qualified Data.Set as Set
 import qualified Data.Text as Text
@@ -42,11 +43,9 @@
         , ( "TAGame.CarComponent_Jump_TA",
             [ "Archetypes.CarComponents.CarComponent_Jump"
             ])
-        , ( "TAGame.Car_Season_TA",
-            [ "Archetypes.GameEvent.GameEvent_Season:CarArchetype"
-            ])
         , ( "TAGame.Car_TA",
             [ "Archetypes.Car.Car_Default"
+            , "Archetypes.GameEvent.GameEvent_Season:CarArchetype"
             ])
         , ( "TAGame.GameEvent_Season_TA",
             [ "Archetypes.GameEvent.GameEvent_Season"
@@ -74,7 +73,7 @@
         , ( "TAGame.PRI_TA",
             [ "TAGame.Default__PRI_TA"
             ])
-        , ( "TAGame.Team_TA",
+        , ( "TAGame.Team_Soccar_TA",
             [ "Archetypes.Teams.Team"
             ])
         , ( "TAGame.VoteActor_TA",
@@ -112,7 +111,7 @@
     , "TAGame.GameEvent_SoccarSplitscreen_TA"
     , "TAGame.GameEvent_Soccar_TA"
     , "TAGame.PRI_TA"
-    , "TAGame.Team_TA"
+    , "TAGame.Team_Soccar_TA"
     ] & map Text.pack & Set.fromList
 
 -- | A set of classes that have an initial rotation vector.
@@ -337,6 +336,7 @@
     , "TAGame.PRI_TA:MatchShots"
     , "TAGame.PRI_TA:Title"
     , "TAGame.PRI_TA:TotalXP"
+    , "TAGame.Team_Soccar_TA:GameScore"
     ] & map Text.pack & Set.fromList
 
 -- | A set of properties that are online loadouts.
@@ -422,3 +422,757 @@
     [ "Engine.PlayerReplicationInfo:UniqueId"
     -- , "TAGame.PRI_TA:PartyLeader"
     ] & map Text.pack & Set.fromList
+
+-- * Garage
+
+-- TODO
+todo :: Int
+todo = -1
+
+-- | A one-to-one mapping between body IDs and their names.
+bodies :: Bimap.Bimap Int Text.Text
+bodies =
+    [ ("Backfire", 21)
+    , ("Batmobile", 803)
+    , ("Breakout", 22)
+    , ("DeLorean Time Machine", 597)
+    , ("Dominus", 403)
+    , ("Gizmo", 26)
+    , ("Grog", 607)
+    , ("Hotshot", 29)
+    , ("Merc", 30)
+    , ("Octane", 23)
+    , ("Paladin", 24)
+    , ("Ripper", 600)
+    , ("Road Hog", 25)
+    , ("Scarab", 404)
+    , ("Takumi", 402)
+    , ("Venom", 31)
+    , ("X-Devil", 28)
+    , ("Zippy", 523)
+    ] & map (\ (v, k) -> (k, Text.pack v)) & Bimap.fromList
+
+-- | A one-to-one mapping between decal IDs and their names.
+decals :: Bimap.Bimap Int Text.Text
+decals =
+    [ ( "Backfire",
+        [ ("Flames", 288)
+        , ("Lightning", 289)
+        , ("Skulls", 290)
+        , ("Stars", 291)
+        , ("Stripes", 292)
+        , ("Tech", 293)
+        , ("Wings", 294)
+        ])
+    , ( "Breakout",
+        [ ("Flames", 295)
+        , ("Lightning", 296)
+        , ("Skulls", 297)
+        , ("Stars", 298)
+        , ("Stripes", 299)
+        , ("Tech", 300)
+        , ("Wings", 301)
+        ])
+    , ( "Dominus",
+        [ ("Flames", 504)
+        , ("Scorpions", 506)
+        , ("Skulls", 507)
+        , ("Stripes", 508)
+        , ("Tats", 509)
+        , ("Wings", 510)
+        ])
+    , ( "Gizmo",
+        [ ("Flames", 323)
+        , ("Lightning", 324)
+        , ("Skulls", 325)
+        , ("Stars", 326)
+        , ("Stripes", 327)
+        , ("Tech", 328)
+        , ("Wings", 329)
+        ])
+    , ( "Grog",
+        [ ("Bomber", 693)
+        , ("Cyclops", 694)
+        , ("Lepus", 675)
+        , ("Stripes", 687)
+        , ("Tagged", 695)
+        , ("Tribal", 696)
+        ])
+    , ( "Hotshot",
+        [ ("Flames", 337)
+        , ("Lightning", 338)
+        , ("Skulls", 339)
+        , ("Stars", 340)
+        , ("Stripes", 341)
+        , ("Tech", 342)
+        , ("Wings", 343)
+        ])
+    , ( "Merc",
+        [ ("Dots", 344)
+        , ("Flames", 345)
+        , ("Lightning", 346)
+        , ("Skulls", 347)
+        , ("Stars", 348)
+        , ("Stripes", 349)
+        , ("Wings", 350)
+        ])
+    , ( "Octane",
+        [ ("Flames", 302)
+        , ("Lightning", 303)
+        , ("Skulls", 304)
+        , ("Stars", 305)
+        , ("Stripes", 306)
+        , ("Tech", 307)
+        , ("Wings", 308)
+        ])
+    , ( "Paladin",
+        [ ("Flames", 309)
+        , ("Lightning", 310)
+        , ("Skulls", 311)
+        , ("Stars", 312)
+        , ("Stripes", 313)
+        , ("Tech", 314)
+        , ("Wings", 315)
+        ])
+    , ( "Ripper",
+        [ ("Bomber", 701)
+        , ("Flames", 669)
+        , ("Ockie", 700)
+        , ("Shot Fox", 670)
+        , ("Spikes", 671)
+        , ("Tribal", 672)
+        ])
+    , ( "Road Hog",
+        [ ("Flames", 316)
+        , ("Lightning", 317)
+        , ("Skulls", 318)
+        , ("Stars", 319)
+        , ("Stripes", 320)
+        , ("Tech", 321)
+        , ("Wings", 322)
+        ])
+    , ( "Scarab",
+        [ ("Bomani", 585)
+        , ("Derby Girl", 592)
+        , ("Flames", 591)
+        , ("Hearts", 586)
+        , ("Tiger", 587)
+        , ("Tribal", 588)
+        ])
+    , ( "Takumi",
+        [ ("Chaser", 503)
+        , ("Copycat", 497)
+        , ("Crazy-8", 502)
+        , ("Gaki", 499)
+        , ("Reiko", 498)
+        , ("Stripes", 501)
+        ])
+    , ( "Venom",
+        [ ("Dots", 351)
+        , ("Flames", 352)
+        , ("Lightning", 353)
+        , ("Skulls", 354)
+        , ("Stripes", 355)
+        , ("Tagged", 356)
+        , ("Wings", 357)
+        ])
+    , ( "X-Devil",
+        [ ("Flames", 330)
+        , ("Lightning", 331)
+        , ("Skulls", 332)
+        , ("Stars", 333)
+        , ("Stripes", 334)
+        , ("Tech", 335)
+        , ("Wings", 336)
+        ])
+    , ( "Zippy",
+        [ ("Caboodle", 589)
+        , ("Callous", 590)
+        , ("Flames", 583)
+        , ("Hearts", 581)
+        , ("Leopard", 584)
+        , ("Tiger", 582)
+        ])
+    ]
+        & map (\ (body, values) -> values &
+            map (\ (v, k) -> (k, v ++ " [" ++ body ++ "]")))
+        & concat
+        & map (\ (k, v) -> (k, Text.pack v))
+        & Bimap.fromList
+        & Bimap.insert 0 (Text.pack "None")
+
+-- | A one-to-one mapping between wheels IDs and their names.
+wheels :: Bimap.Bimap Int Text.Text
+wheels =
+    [ ("Alchemist", 374)
+    , ("Almas", 364)
+    , ("Batmobile", 874)
+    , ("Bender", 369)
+    , ("Carriage", 549)
+    , ("Cristiano", 386)
+    , ("DeLorean Time Machine", 609)
+    , ("Dieci", 363)
+    , ("Falco", 382)
+    , ("Foreman", 372)
+    , ("Grog", 613)
+    , ("Invader", 380)
+    , ("Lowrider", 369)
+    , ("Lucci", 361)
+    , ("Mountaineer", 375)
+    , ("Neptune", 370)
+    , ("Octavian", 379)
+    , ("OEM", 376)
+    , ("Rat Rod", 366)
+    , ("Ripper", 690)
+    , ("Scarab", 540)
+    , ("Servergate", 519)
+    , ("Spinner", 388)
+    , ("Spyder", 371)
+    , ("Stallion", 365)
+    , ("Stern", 368)
+    , ("Sunburt", 383)
+    , ("Tempest", 377)
+    , ("Tomahawk", 362)
+    , ("Trahere", 367)
+    , ("Tunica", 359)
+    , ("Veloce", 373)
+    , ("Vortex", 381)
+    , ("Zippy", 518)
+    ] & map (\ (v, k) -> (k, Text.pack v)) & Bimap.fromList
+
+-- | A one-to-one mapping between rocket trail IDs and their names.
+rocketTrails :: Bimap.Bimap Int Text.Text
+rocketTrails =
+    [ ("Accelerato", 524)
+    , ("Batmobile", 868)
+    , ("Battle-Stars", 545)
+    , ("Bubbles", 33)
+    , ("Burnout", 387)
+    , ("Candy Corn", 578)
+    , ("Confetti", 34)
+    , ("Datastream", 35)
+    , ("Flamethrower", 36)
+    , ("Flamethrower Blue", 37)
+    , ("Flamethrower Green", 38)
+    , ("Flamethrower Pink", 39)
+    , ("Flamethrower Purple", 40)
+    , ("Flamethrower Red", 41)
+    , ("Flowers", 42)
+    , ("Grass", 43)
+    , ("Hydro", 69)
+    , ("Ion Blue", 45)
+    , ("Ion Green", 46)
+    , ("Ion Pink", 47)
+    , ("Ion Purple", 48)
+    , ("Ion Red", 49)
+    , ("Ion Yellow", 50)
+    , ("Money", 51)
+    , ("Nitrous", 384)
+    , ("Nuts & Bolts", 544)
+    , ("OutaTime", 626)
+    , ("Plasma", 52)
+    , ("Portal - Conversion Gel", 651)
+    , ("Portal - Propulsion Gel", 652)
+    , ("Portal - Reuplsion Gel", 653)
+    , ("Rainbow", 59)
+    , ("Sacred", 44)
+    , ("Sandstorm", 664)
+    , ("Slime", 60)
+    , ("Snowflakes", 61)
+    , ("Sparkles", 62)
+    , ("Standard Blue", 64)
+    , ("Standard Pink", 65)
+    , ("Standard Purple", 66)
+    , ("Standard Red", 63)
+    , ("Standard Yellow", 67)
+    , ("Thermal", 53)
+    , ("Thermal Blue", 54)
+    , ("Thermal Green", 55)
+    , ("Thermal Pink", 56)
+    , ("Thermal Purple", 57)
+    , ("Thermal Yellow", 58)
+    , ("Xmas", 635)
+    ] & map (\ (v, k) -> (k, Text.pack v)) & Bimap.fromList
+
+-- | A one-to-one mapping between antenna IDs and their names.
+antennas :: Bimap.Bimap Int Text.Text
+antennas =
+    [ ("None", 0)
+    , ("8-Ball", 1)
+    , ("Alien", 753)
+    , ("Balloon Dog", 752)
+    , ("Batman", 804)
+    , ("Blue Chequered Flag", 284)
+    , ("Bomb Pole", 614)
+    , ("Calavera", 574)
+    , ("Camo Flag", 285)
+    , ("Candle", 757)
+    , ("Candy Cane", 649)
+    , ("Chick Magnet", 392)
+    , ("Cupcake", 393)
+    , ("Dave's Bread", 391)
+    , ("deadmau5", 781)
+    , ("Disco Ball", 800)
+    , ("Disconnect", 394)
+    , ("Dollar Sign", 3)
+    , ("Donut", 395)
+    , ("Foam Finger", 398)
+    , ("Fuzzy Brute", 593)
+    , ("Fuzzy Vamp", 595)
+    , ("Genie Lamp", 798)
+    , ("Gingerbread Man", 5)
+    , ("Heart", 7)
+    , ("Holiday Gift", 650)
+    , ("Horseshoe", 8)
+    , ("Hula Girl", 762)
+    , ("Jolly Roger", 217)
+    , ("Lightning Bolt", 9)
+    , ("Moai", 522)
+    , ("Parrot", 750)
+    , ("Peace", 11)
+    , ("Piñata", 400)
+    , ("Planetoid", 12)
+    , ("Radioactive", 615)
+    , ("Reddit Snoo", 629)
+    , ("Retro Ball - Urban", 575)
+    , ("Retro Ball - Utopia", 576)
+    , ("Retro Ball - Wasteland", 577)
+    , ("Rocket", 755)
+    , ("Rose", 785)
+    , ("Rubber Duckie", 779)
+    , ("Safety Flag", 286)
+    , ("Skull", 13)
+    , ("Smiley", 14)
+    , ("Snowman", 15)
+    , ("Soccer Ball", 16)
+    , ("Star", 17)
+    , ("Sunflower", 786)
+    , ("Superman", 805)
+    , ("Tennis Ball", 19)
+    , ("The Game Awards - Statue", 655)
+    , ("UFO", 20)
+    , ("Venus Flytrap", 788)
+    , ("Waffle", 401)
+    , ("White Flag", 491)
+    , ("Wonder Woman", 806)
+    -- Community Flags
+    , ("9GAG", 799)
+    , ("AbleGamers", 814)
+    , ("Achievement Hunter", 610)
+    , ("Angry Army", 548)
+    , ("Anne Munition", 531)
+    , ("Day[9]TV", 654)
+    , ("Destructoid", 724)
+    , ("EMD1", 532)
+    , ("ESL", 536)
+    , ("Funhaus", 611)
+    , ("Gamespot", 725)
+    , ("Gassy Mexican", 511)
+    , ("Gfinity", 732)
+    , ("GoldGlove", 728)
+    , ("IGN", 802)
+    , ("itmeJP", 533)
+    , ("LIRIK", 513)
+    , ("lolRenaynay", 628)
+    , ("MLG", 538)
+    , ("NeoGAF", 616)
+    , ("NVIDIA", 808)
+    , ("Operation Sports", 726)
+    , ("PC Gamer", 667)
+    , ("Polaris", 608)
+    , ("Razer", 573)
+    , ("Reddit", 630)
+    , ("RL Garage", 645)
+    , ("Rocket Beans TV", 869)
+    , ("Rooster Teeth", 612)
+    , ("Saudi Gamer", 534)
+    , ("Serious Gaming", 572)
+    , ("Something Awful", 699)
+    , ("Spooky1611", 514)
+    , ("Team Fat", 220)
+    , ("Team PowA", 515)
+    , ("The Attack", 535)
+    , ("The Game Awards - Logo", 693)
+    , ("Twitch", 221)
+    , ("YouTube Gaming", 516)
+    -- Country Flags
+    , ("Afghanistan", 407)
+    , ("Albania", todo)
+    , ("Algeria", todo)
+    , ("American Samoa", todo)
+    , ("Andorra", todo)
+    , ("Angola", todo)
+    , ("Anguilla", todo)
+    , ("Antigua & Barbuda", todo)
+    , ("Argentina", todo)
+    , ("Armenia", todo)
+    , ("Aruba", todo)
+    , ("Australia", todo)
+    , ("Austria", todo)
+    , ("Azerbaijan", todo)
+    , ("Bahamas", todo)
+    , ("Bahrain", todo)
+    , ("Bangladesh", todo)
+    , ("Barbados", todo)
+    , ("Belarus", todo)
+    , ("Belgium", todo)
+    , ("Belize", todo)
+    , ("Benin", todo)
+    , ("Bermuda", todo)
+    , ("Bhutan", todo)
+    , ("Bolivia", todo)
+    , ("Bosnia and Herzegovina", todo)
+    , ("Botswana", todo)
+    , ("Brazil", todo)
+    , ("British Virgin Islands", todo)
+    , ("Bulgaria", todo)
+    , ("Burkina Faso", todo)
+    , ("Burma", todo)
+    , ("Burundi", todo)
+    , ("Cambodia", todo)
+    , ("Cameroon", todo)
+    , ("Canada", todo)
+    , ("Cape Verde Islands", todo)
+    , ("Cayman Islands", todo)
+    , ("Central African Republic", todo)
+    , ("Chad", todo)
+    , ("Chile", todo)
+    , ("China", todo)
+    , ("Chinese Taipei", todo)
+    , ("Colombia", todo)
+    , ("Comoros", todo)
+    , ("Congo", todo)
+    , ("Congo DR", todo)
+    , ("Cook Islands", todo)
+    , ("Costa Rica", todo)
+    , ("Croatia", todo)
+    , ("Cuba", todo)
+    , ("Curacao", todo)
+    , ("Cyprus", todo)
+    , ("Czech Republic", todo)
+    , ("Côte d'Ivoire", todo)
+    , ("Denmark", todo)
+    , ("Djibouti", todo)
+    , ("Dominica", todo)
+    , ("Dominican Republic", todo)
+    , ("East Timor", todo)
+    , ("Ecuador", todo)
+    , ("Egypt", todo)
+    , ("El Salvador", todo)
+    , ("England", todo)
+    , ("Equatorial Guinea", todo)
+    , ("Eritrea", todo)
+    , ("Estonia", todo)
+    , ("Ethiopia", todo)
+    , ("Falkland Islands", todo)
+    , ("Faroe Islands", todo)
+    , ("Fiji", todo)
+    , ("Finland", todo)
+    , ("France", todo)
+    , ("Gabon", todo)
+    , ("Gambia", todo)
+    , ("Georgia", todo)
+    , ("Germany", todo)
+    , ("Ghana", todo)
+    , ("Gibraltar", todo)
+    , ("Greece", todo)
+    , ("Grenada", todo)
+    , ("Guam", todo)
+    , ("Guatemala", todo)
+    , ("Guinea", todo)
+    , ("Guinea Bissau", todo)
+    , ("Guyana", todo)
+    , ("Haiti", todo)
+    , ("Honduras", todo)
+    , ("Hong Kong", todo)
+    , ("Hungary", todo)
+    , ("Iceland", todo)
+    , ("India", todo)
+    , ("Indonesia", todo)
+    , ("Iran", todo)
+    , ("Iraq", todo)
+    , ("Ireland", todo)
+    , ("Isle Of Man", todo)
+    , ("Israel", todo)
+    , ("Italy", todo)
+    , ("Jamaica", todo)
+    , ("Japan", todo)
+    , ("Jordan", todo)
+    , ("Kazakhstan", todo)
+    , ("Kenya", todo)
+    , ("Kiribati", todo)
+    , ("Kosovo", todo)
+    , ("Kuwait", todo)
+    , ("Kyrgyzstan", todo)
+    , ("Laos", todo)
+    , ("Latvia", todo)
+    , ("Lebanon", todo)
+    , ("Lesotho", todo)
+    , ("Liberia", todo)
+    , ("Libya", todo)
+    , ("Lithuania", todo)
+    , ("Luxembourg", todo)
+    , ("Macau", todo)
+    , ("Macedonia", todo)
+    , ("Madagascar", todo)
+    , ("Malawi", todo)
+    , ("Malaysia", todo)
+    , ("Maldives", todo)
+    , ("Mali", todo)
+    , ("Malta", todo)
+    , ("Marshall Islands", todo)
+    , ("Mauritania", todo)
+    , ("Mauritius", todo)
+    , ("Mexico", todo)
+    , ("Micronesia", todo)
+    , ("Moldova", todo)
+    , ("Mongolia", todo)
+    , ("Montenegro", todo)
+    , ("Montserrat", todo)
+    , ("Morocco", todo)
+    , ("Mozambique", todo)
+    , ("Namibia", todo)
+    , ("Nepal", todo)
+    , ("Netherlands", todo)
+    , ("New Caledonia", todo)
+    , ("New Zealand", todo)
+    , ("Nicaragua", todo)
+    , ("Nigeria", todo)
+    , ("North Korea", todo)
+    , ("North Mariana Islands", todo)
+    , ("Northern Ireland", todo)
+    , ("Norway", todo)
+    , ("Oman", todo)
+    , ("Palestine", todo)
+    , ("Palau", todo)
+    , ("Palestine", todo)
+    , ("Panama", todo)
+    , ("Papua New Guinea", todo)
+    , ("Paraguay", todo)
+    , ("Peru", todo)
+    , ("Philippines", todo)
+    , ("Poland", todo)
+    , ("Portugal", todo)
+    , ("Puerto Rico", todo)
+    , ("Puntland", todo)
+    , ("Qatar", todo)
+    , ("Republic of Niger", todo)
+    , ("Romania", todo)
+    , ("Russia", todo)
+    , ("Rwanda", todo)
+    , ("Réunion", todo)
+    , ("Saint Kitts & Nevis", todo)
+    , ("Saint Lucia", todo)
+    , ("Saint Vincent", todo)
+    , ("Samoa", todo)
+    , ("San Marino", todo)
+    , ("Sao Tome", todo)
+    , ("Saudi Arabia", todo)
+    , ("Scotland", todo)
+    , ("Senegal", todo)
+    , ("Serbia", todo)
+    , ("Setchelles", todo)
+    , ("Sierra Leone", todo)
+    , ("Singapore", todo)
+    , ("Slovakia", todo)
+    , ("Slovenia", todo)
+    , ("Solomon Islands", todo)
+    , ("Somalia", todo)
+    , ("Somaliland", todo)
+    , ("South Africa", todo)
+    , ("South Korea", todo)
+    , ("South Sudan", todo)
+    , ("Spain", todo)
+    , ("Sri Lanka", todo)
+    , ("Sudan", todo)
+    , ("Suriname", todo)
+    , ("Swaziland", todo)
+    , ("Sweden", todo)
+    , ("Switzerland", todo)
+    , ("Syria", todo)
+    , ("Tahiti", todo)
+    , ("Tajikistan", todo)
+    , ("Tanzania", todo)
+    , ("Thailand", todo)
+    , ("Togo", todo)
+    , ("Tonga", todo)
+    , ("Trinidad and Tobago", todo)
+    , ("Tunisia", todo)
+    , ("Turkey", todo)
+    , ("Turkmenistan", todo)
+    , ("Turks & Caicos", todo)
+    , ("Uganda", todo)
+    , ("Ukraine", todo)
+    , ("United Arab Emirates", todo)
+    , ("United Kingdom", todo)
+    , ("United States", todo)
+    , ("Uruguay", todo)
+    , ("US Virgin Islands", todo)
+    , ("Uzbekistan", todo)
+    , ("Vanuatu", todo)
+    , ("Vatican City", todo)
+    , ("Venezuela", todo)
+    , ("Vietnam", todo)
+    , ("Wales", todo)
+    , ("Western Sahara", todo)
+    , ("Yemen", todo)
+    , ("Zambia", todo)
+    , ("Zimbabwe", 483)
+    -- NBA Flags
+    , ("NBA", 1263)
+    , ("Atlanta Hawks", 1245)
+    , ("Boston Celtics", 1246)
+    , ("Brooklyn Nets", 1247)
+    , ("Charlotte Hornets", 1248)
+    , ("Chicago Bulls", 1249)
+    , ("Cleveland Cavaliers", 1250)
+    , ("Dallas Mavericks", 1251)
+    , ("Denver Nuggets", 1252)
+    , ("Detroit Pistons", 1253)
+    , ("Golden State Warriors", 1254)
+    , ("Houston Rockets", 1255)
+    , ("Indian Pacers", 1256)
+    , ("Los Angeles Clippers", 1257)
+    , ("Los Angeles Lakers", 1258)
+    , ("Memphis Grizzlies", 1259)
+    , ("Miami Heat", 1260)
+    , ("Milwaukee Bucks", 1261)
+    , ("Minnesota Timberwolves", 1262)
+    , ("New Orleans Pelicans", 1264)
+    , ("New Tork Knicks", 1265)
+    , ("Oklahoma City Thunder", 1266)
+    , ("Orlando Magic", 1267)
+    , ("Philadelphia 76ers", 1268)
+    , ("Phoenix Suns", 1269)
+    , ("Portland Trail Blazers", 1270)
+    , ("Sacramento Kings", 1271)
+    , ("San Antonio Spurs", 1272)
+    , ("Toronto Raptors", 1273)
+    , ("Utah Jazz", 1274)
+    , ("Washington Wizards", 1275)
+    -- Video Games
+    , ("Blacklight", 385)
+    , ("Blacklight: Retribution", todo)
+    , ("Chivalry - Agatha Knights", todo)
+    , ("Chivalry - Mason Order", todo)
+    , ("Edge Of Space", todo)
+    , ("Euro Truck Simulator Rig", todo)
+    , ("Fallout - Vault Boy", todo)
+    , ("Fenix Rage", todo)
+    , ("Goat Simulator - G2", todo)
+    , ("Goat Simulator - Goatenna", todo)
+    , ("Oddworld - Abe", todo)
+    , ("Oddworld - Molluck", todo)
+    , ("Oddworld - Necrum", todo)
+    , ("Oddworld - RuptureFarms", todo)
+    , ("Portal - Aperture Laboratories", todo)
+    , ("Portal - Cake Sticker", todo)
+    , ("Portal - Companion Cube", todo)
+    , ("Portal - PotatOS", todo)
+    , ("Portal - Wheatley", todo)
+    , ("Shadowgate", todo)
+    , ("Strike Vector EX", todo)
+    , ("Unreal", todo)
+    , ("Unreal Frag Center", todo)
+    , ("Unreal Tournament", todo)
+    , ("Unreal Tournament (Classic)", todo)
+    , ("Unreal Tournament - Blue", todo)
+    , ("Unreal Tournament - Flak Shell", todo)
+    , ("Unreal Tournament - Red", todo)
+    , ("Unreal Tournament 2004", todo)
+    , ("Warframe", todo)
+    , ("Warframe - Chroma", todo)
+    , ("Warframe - Excalibur", todo)
+    , ("Warframe - Loki", todo)
+    , ("Witcher Medallion", todo)
+    , ("Worms W.M.D", todo)
+    , ("Worms W.M.D. Grenade", 1000)
+    ] & map (\ (v, k) -> (k, Text.pack v)) & Bimap.fromList
+
+-- | A one-to-one mapping between topper IDs and their names.
+toppers :: Bimap.Bimap Int Text.Text
+toppers =
+    [ ("None", 0)
+    , ("Antlers", 774)
+    , ("Beret", 775)
+    , ("Biker Cap", 776)
+    , ("Birthday Cake", 789)
+    , ("Blitzen", 640)
+    , ("Bobby Helmet", 227)
+    , ("Boombox", 521)
+    , ("Bowler", 745)
+    , ("Brodie Helmet", 743)
+    , ("Brünnhilde", 241)
+    , ("Captain's Hat", 741)
+    , ("Cavalier", 580)
+    , ("Chainsaw", 795)
+    , ("Chef's Hat", 756)
+    , ("Cherry Top", 237)
+    , ("Christmas Tree", 639)
+    , ("Cockroach", 769)
+    , ("Cow Skull", 685)
+    , ("deadmau5", 796)
+    , ("Deerstalker", 792)
+    , ("Derby", 790)
+    , ("Devil Horns", 229)
+    , ("Fez", 230)
+    , ("Fire Helmet", 231)
+    , ("Foam Hat", 390)
+    , ("Fruit Hat", 744)
+    , ("Graduation Cap", 778)
+    , ("Halo", 232)
+    , ("Hard Hat", 233)
+    , ("Homburg", 742)
+    , ("Locomotive", 547)
+    , ("Mariachi Hat", 234)
+    , ("Mohawk", 638)
+    , ("Mouse Trap", 782)
+    , ("Paper Boat", 770)
+    , ("Pirate's Hat", 235)
+    , ("Pixelated Shades", 494)
+    , ("Pizza Topper", 236)
+    , ("Plunger", 772)
+    , ("Police Hat", 746)
+    , ("Portal - Cake", 661)
+    , ("Propellerhead", 225)
+    , ("Pumpkin", 546)
+    , ("Rasta", 771)
+    , ("Rhino Horns", 780)
+    , ("Royal Crown", 228)
+    , ("Sad Sapling", 641)
+    , ("Santa", 642)
+    , ("Season 1 - Gold", 706)
+    , ("Shark Fin", 579)
+    , ("Shuriken", 773)
+    , ("Sombrero", 238)
+    , ("Taxi Topper", 239)
+    , ("Tiara", 495)
+    , ("Top Hat", 240)
+    , ("Traffic Cone", 747)
+    , ("Unicorn", 748)
+    , ("Witch's Hat", 242)
+    , ("Wizard Hat", 243)
+    , ("Work Boot", 740)
+    , ("Worms W.M.D.", 1028)
+    ] & map (\ (v, k) -> (k, Text.pack v)) & Bimap.fromList
+
+-- | A one-to-one mapping between paint finish IDs and their names.
+finishes :: Bimap.Bimap Int Text.Text
+finishes =
+    [ ("Brushed Metal", 266)
+    , ("Camo", 541)
+    , ("Carbon Fiber", 272)
+    , ("Corroded Metal", 268)
+    , ("DeLorean Time Machine", 623)
+    , ("Glossy", 270)
+    , ("Matte", 273)
+    , ("Metallic", 274)
+    , ("Metallic Pearl", 275)
+    , ("Pearlescent", 276)
+    , ("Semigloss", 277)
+    , ("Sun-Damaged", 542)
+    , ("Toon Glossy", 279)
+    , ("Toon Matte", 281)
+    , ("Toon Wood", 280)
+    , ("Wood", 283)
+    ] & map (\ (v, k) -> (k, Text.pack v)) & Bimap.fromList
diff --git a/library/Octane/Parser.hs b/library/Octane/Parser.hs
--- a/library/Octane/Parser.hs
+++ b/library/Octane/Parser.hs
@@ -23,6 +23,7 @@
 import qualified Octane.Data as Data
 import qualified Octane.Json as Json
 import qualified Octane.Parser.ClassPropertyMap as CPM
+import qualified Octane.Parser.Garage as Garage
 import qualified Octane.Type as Type
 import qualified Text.Printf as Printf
 
@@ -347,12 +348,18 @@
 getLoadoutProperty :: Bits.BitGet PropValue
 getLoadoutProperty = do
     version <- getInt8
-    body <- getInt32
-    decal <- getInt32
-    wheels <- getInt32
-    rocketTrail <- getInt32
-    antenna <- getInt32
-    topper <- getInt32
+    bodyId <- getInt32
+    let body = Garage.getBody bodyId
+    decalId <- getInt32
+    let decal = Garage.getDecal decalId
+    wheelsId <- getInt32
+    let wheels = Garage.getWheels wheelsId
+    rocketTrailId <- getInt32
+    let rocketTrail = Garage.getRocketTrail rocketTrailId
+    antennaId <- getInt32
+    let antenna = Garage.getAntenna antennaId
+    topperId <- getInt32
+    let topper = Garage.getTopper topperId
     g <- getInt32
     h <- if version > 10
         then do
@@ -433,11 +440,13 @@
 getTeamPaintProperty :: Bits.BitGet PropValue
 getTeamPaintProperty = do
     team <- getInt8
-    teamColor <- getInt8
-    customColor <- getInt8
-    teamFinish <- getInt32
-    customFinish <- getInt32
-    return (PTeamPaint team teamColor customColor teamFinish customFinish)
+    primaryColor <- getInt8
+    accentColor <- getInt8
+    primaryFinishId <- getInt32
+    let primaryFinish = Garage.getFinish primaryFinishId
+    accentFinishId <- getInt32
+    let accentFinish = Garage.getFinish accentFinishId
+    return (PTeamPaint team primaryColor accentColor primaryFinish accentFinish)
 
 getUniqueIdProperty :: Bits.BitGet PropValue
 getUniqueIdProperty = do
@@ -561,7 +570,16 @@
     | PFloat !Float
     | PGameMode !Word.Word8
     | PInt !Int
-    | PLoadout !Int !Int !Int !Int !Int !Int !Int !Int !(Maybe Int)
+    | PLoadout
+        !Int
+        !Garage.Body
+        !Garage.Decal
+        !Garage.Wheels
+        !Garage.RocketTrail
+        !Garage.Antenna
+        !Garage.Topper
+        !Int
+        !(Maybe Int)
     | PLoadoutOnline !Int !Int !Int !(Maybe Int)
     | PLocation !(Vector Int)
     | PMusicStinger !Bool !Int !Int
@@ -572,7 +590,12 @@
     | PReservation !Int !SystemId !RemoteId !LocalId !(Maybe Text.Text) !Bool !Bool
     | PRigidBodyState !Bool !(Vector Int) !(Vector Float) !(Maybe (Vector Int)) !(Maybe (Vector Int))
     | PString !Text.Text
-    | PTeamPaint !Int !Int !Int !Int !Int
+    | PTeamPaint
+        !Int
+        !Int
+        !Int
+        !Garage.Finish
+        !Garage.Finish
     | PUniqueId !SystemId !RemoteId !LocalId
     deriving (Eq, Generics.Generic, Show)
 
diff --git a/library/Octane/Parser/Garage.hs b/library/Octane/Parser/Garage.hs
new file mode 100644
--- /dev/null
+++ b/library/Octane/Parser/Garage.hs
@@ -0,0 +1,56 @@
+module Octane.Parser.Garage where
+
+import Data.Function ((&))
+
+import qualified Data.Bimap as Bimap
+import qualified Data.Maybe as Maybe
+import qualified Data.Text as Text
+import qualified Octane.Data as Data
+
+
+type Body = Text.Text
+type Decal = Text.Text
+type Wheels = Text.Text
+type RocketTrail = Text.Text
+type Antenna = Text.Text
+type Topper = Text.Text
+type Finish = Text.Text
+
+
+getDefaultItem :: String -> Int -> Text.Text
+getDefaultItem itemType itemId =
+    ["Unknown", itemType, show itemId] & unwords & Text.pack
+
+
+getItem :: Bimap.Bimap Int Text.Text -> String -> Int -> Text.Text
+getItem items itemType itemId = items
+    & Bimap.lookup itemId
+    & Maybe.fromMaybe (getDefaultItem itemType itemId)
+
+
+getBody :: Int -> Body
+getBody = getItem Data.bodies "body"
+
+
+getDecal :: Int -> Decal
+getDecal = getItem Data.decals "decal"
+
+
+getWheels :: Int -> Wheels
+getWheels = getItem Data.wheels "wheels"
+
+
+getRocketTrail :: Int -> RocketTrail
+getRocketTrail = getItem Data.rocketTrails "rocket trail"
+
+
+getAntenna :: Int -> Antenna
+getAntenna = getItem Data.antennas "antenna"
+
+
+getTopper :: Int -> Topper
+getTopper = getItem Data.toppers "topper"
+
+
+getFinish :: Int -> Finish
+getFinish = getItem Data.finishes "finish"
diff --git a/octane.cabal b/octane.cabal
--- a/octane.cabal
+++ b/octane.cabal
@@ -3,7 +3,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           octane
-version:        0.6.3
+version:        0.7.0
 synopsis:       Parse Rocket League replays.
 description:    Octane parses Rocket League replays.
 category:       Game
@@ -33,6 +33,7 @@
       aeson ==0.11.*
     , autoexporter ==0.2.*
     , base ==4.9.*
+    , bimap ==0.3.*
     , binary ==0.8.*
     , binary-bits ==0.5.*
     , bytestring ==0.10.*
@@ -48,6 +49,7 @@
       Octane.Main
       Octane.Parser
       Octane.Parser.ClassPropertyMap
+      Octane.Parser.Garage
       Octane.Type
       Octane.Type.Actor
       Octane.Type.CacheItem
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -38,6 +38,7 @@
   - aeson ==0.11.*
   - autoexporter ==0.2.*
   - base ==4.9.*
+  - bimap ==0.3.*
   - binary ==0.8.*
   - binary-bits ==0.5.*
   - bytestring ==0.10.*
@@ -68,4 +69,4 @@
     - -with-rtsopts=-N
     main: TestSuite.hs
     source-dirs: test-suite
-version: '0.6.3'
+version: '0.7.0'
