Good question. In earlier iterations, pre-MachineTypeInZone (not that that particular change made a difference - just meant adding the second transform), I had:
```java
public Iterable<MachineType> listHardwareProfiles() {
      ImmutableSet.Builder<MachineType> builder = ImmutableSet.builder();
      for (final Location zone : zones.get().values()) {
         builder.addAll(api.getMachineTypeApiForProject(userProject.get()).listInZone(zone.getId()).concat());
      }
      return builder.build();
}
```

...and for some reason, I kept getting just the machineTypes from the *first* zone. But now I think that was due to another problem that I caught later (equality check on MachineType didn't take zone into equation). Once I deal with the various and sundry sure things that need to be cleaned up, I'll revisit this and see how it works with the imperative approach.