Option 1: Define road/tramtype using different "allocate label" properties. 0x07: Allocate road label 0x08: Allocate tram label RoadTypeReserveInfo: case 0x07: GetRoadTypeByLabel(rtl, ROADTYPE_ROAD, false); rt = AllocateRoadType(rtl, ROADTYPE_ROAD); case 0x08: GetRoadTypeByLabel(rtl, ROADTYPE_TRAM, false); rt = AllocateRoadType(rtl, ROADTYPE_TRAM); Option 2: Flag in property 0x10. RoadTypeReserveInfo: Labels are not immediately allocated, but only collected per GRF: RoadTypeReserveInfo also collects the road/tram flag. After the reservation pass, stuff are really allocated. Problem: This breaks GRF loading stages, and essentially adds a second reservation stage. GRFs cannot properly test for already defined labels. Option 3: Separate GRF features, both with property 8 Advantage: (GRF feature, ID) is a key to the type, as it is to all other thing like industries. => Option 3 > Option 1 > Option 2