private static Mono<Void> deleteRoutes(
      final CloudFoundryClient cloudFoundryClient, Optional<List<Route>> routes) {
    return routes
        .map(
            new Function<List<Route>, Stream<Route>>() {

              @Override
              public Stream<Route> apply(List<Route> routes) {
                return Stream.fromIterable(routes);
              }
            })
        .orElse(Stream.<Route>empty())
        .map(
            new Function<Route, String>() {

              @Override
              public String apply(Route route) {
                return route.getId();
              }
            })
        .flatMap(
            new Function<String, Mono<Void>>() {

              @Override
              public Mono<Void> apply(String routeId) {
                return requestDeleteRoute(cloudFoundryClient, routeId);
              }
            })
        .after();
  }