added abstract TravelComponent class