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 1 is superior.