VehicleType t2 = VehicleTypeImpl.Builder.newInstance("t2").addCapacityDimension(0, 1000).setCostPerDistance(2.0).build();
    newVehicle = VehicleImpl.Builder.newInstance("newVehicle").setLatestArrival(100.0).setStartLocationId("0,0").setType(t2).build();
    
    driver = DriverImpl.noDriver();
    
    final Locations locations = new Locations(){
      @Override
      public Coordinate getCoord(String id) {
        //assume: locationId="x,y"
        String[] splitted = id.split(",");
        return Coordinate.newInstance(Double.parseDouble(splitted[0]), 
            Double.parseDouble(splitted[1]));
      }
      
    };
    costs = new AbstractForwardVehicleRoutingTransportCosts() {
      
      @Override
      public double getTransportTime(String fromId, String toId,double departureTime, Driver driver, Vehicle vehicle) {
        return ManhattanDistanceCalculator.calculateDistance(locations.getCoord(fromId), locations.getCoord(toId));
      }
      
      @Override
      public double getTransportCost(String fromId, String toId, double departureTime, Driver driver, Vehicle vehicle) {
        return vehicle.getType().getVehicleCostParams().perDistanceUnit*ManhattanDistanceCalculator.calculateDistance(locations.getCoord(fromId), locations.getCoord(toId));
      }
    };
    
    first = Service.Builder.newInstance("1").addSizeDimension(0, 0).setLocationId("0,10").setTimeWindow(TimeWindow.newInstance(0.0, 100.0)).build();