Prefer Regions to Zones
diff --git a/openstack-glance/src/main/java/org/jclouds/openstack/glance/functions/ZoneToEndpointNegotiateVersion.java b/openstack-glance/src/main/java/org/jclouds/openstack/glance/functions/RegionToEndpointNegotiateVersion.java
similarity index 87%
rename from openstack-glance/src/main/java/org/jclouds/openstack/glance/functions/ZoneToEndpointNegotiateVersion.java
rename to openstack-glance/src/main/java/org/jclouds/openstack/glance/functions/RegionToEndpointNegotiateVersion.java
index 7f5779d..f45a57d 100644
--- a/openstack-glance/src/main/java/org/jclouds/openstack/glance/functions/ZoneToEndpointNegotiateVersion.java
+++ b/openstack-glance/src/main/java/org/jclouds/openstack/glance/functions/RegionToEndpointNegotiateVersion.java
@@ -21,8 +21,8 @@
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
-import java.io.InputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.List;
@@ -35,9 +35,9 @@
 
 import org.jclouds.http.HttpRequest;
 import org.jclouds.json.Json;
-import org.jclouds.location.Zone;
-import org.jclouds.rest.annotations.ApiVersion;
+import org.jclouds.location.Region;
 import org.jclouds.rest.HttpClient;
+import org.jclouds.rest.annotations.ApiVersion;
 import org.jclouds.util.Strings2;
 
 import com.google.common.base.Function;
@@ -51,7 +51,7 @@
 import com.google.common.collect.Iterables;
 
 @Singleton
-public class ZoneToEndpointNegotiateVersion implements Function<Object, URI> {
+public class RegionToEndpointNegotiateVersion implements Function<Object, URI> {
 
    public static final String VERSION_NEGOTIATION_HEADER = "Is-Version-Negotiation-Request";
 
@@ -70,14 +70,14 @@
       public List<Version> versions;
    }
 
-   private final Supplier<Map<String, Supplier<URI>>> zoneToEndpointSupplier;
+   private final Supplier<Map<String, Supplier<URI>>> regionToEndpointSupplier;
    private final String apiVersion;
    private final LoadingCache<URI, URI> endpointCache;
 
    @Inject
-   public ZoneToEndpointNegotiateVersion(@Zone Supplier<Map<String, Supplier<URI>>> zoneToEndpointSupplier,
+   public RegionToEndpointNegotiateVersion(@Region Supplier<Map<String, Supplier<URI>>> regionToEndpointSupplier,
          @ApiVersion String rawApiVersionString, final HttpClient client, final Json json) {
-      this.zoneToEndpointSupplier = checkNotNull(zoneToEndpointSupplier, "zoneToEndpointSupplier");
+      this.regionToEndpointSupplier = checkNotNull(regionToEndpointSupplier, "regionToEndpointSupplier");
       if (!rawApiVersionString.startsWith("v")) {
          this.apiVersion = "v" + rawApiVersionString;
       } else {
@@ -125,12 +125,12 @@
 
    @Override
    public URI apply(Object from) {
-      checkArgument(from instanceof String, "you must specify a zone, as a String argument");
-      Map<String, Supplier<URI>> zoneToEndpoint = zoneToEndpointSupplier.get();
-      checkState(!zoneToEndpoint.isEmpty(), "no zone name to endpoint mappings configured!");
-      checkArgument(zoneToEndpoint.containsKey(from),
-               "requested location %s, which is not in the configured locations: %s", from, zoneToEndpoint);
-      URI uri = zoneToEndpointSupplier.get().get(from).get();
+      checkArgument(from instanceof String, "you must specify a region, as a String argument");
+      Map<String, Supplier<URI>> regionToEndpoint = regionToEndpointSupplier.get();
+      checkState(!regionToEndpoint.isEmpty(), "no region name to endpoint mappings configured!");
+      checkArgument(regionToEndpoint.containsKey(from),
+               "requested location %s, which is not in the configured locations: %s", from, regionToEndpoint);
+      URI uri = regionToEndpointSupplier.get().get(from).get();
 
       try {
          return endpointCache.get(uri);
diff --git a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/GlanceApi.java b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/GlanceApi.java
index c2d43e0..db88dcc 100644
--- a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/GlanceApi.java
+++ b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/GlanceApi.java
@@ -20,8 +20,8 @@
 import java.util.Set;
 
 import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.location.Zone;
-import org.jclouds.openstack.glance.functions.ZoneToEndpointNegotiateVersion;
+import org.jclouds.location.Region;
+import org.jclouds.openstack.glance.functions.RegionToEndpointNegotiateVersion;
 import org.jclouds.openstack.glance.v1_0.features.ImageApi;
 import org.jclouds.rest.annotations.Delegate;
 import org.jclouds.rest.annotations.EndpointParam;
@@ -35,18 +35,18 @@
  */
 public interface GlanceApi extends Closeable {
    /**
-    * Gets the configured zones.
+    * Gets the configured regions.
     *
-    * @return the zone codes currently configured
+    * @return the region codes currently configured
     */
    @Provides
-   @Zone
-   Set<String> getConfiguredZones();
+   @Region
+   Set<String> getConfiguredRegions();
 
    /**
     * Provides access to Image features.
     */
    @Delegate
-   ImageApi getImageApiForZone(@EndpointParam(parser = ZoneToEndpointNegotiateVersion.class) @Nullable String zone);
+   ImageApi getImageApi(@EndpointParam(parser = RegionToEndpointNegotiateVersion.class) @Nullable String region);
 
 }
diff --git a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/GlanceApiMetadata.java b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/GlanceApiMetadata.java
index cf546fa..fbf0f7d 100644
--- a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/GlanceApiMetadata.java
+++ b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/GlanceApiMetadata.java
@@ -26,7 +26,7 @@
 import org.jclouds.openstack.keystone.v2_0.config.AuthenticationApiModule;
 import org.jclouds.openstack.keystone.v2_0.config.CredentialTypes;
 import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule;
-import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.ZoneModule;
+import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.RegionModule;
 import org.jclouds.openstack.v2_0.ServiceType;
 import org.jclouds.rest.internal.BaseHttpApiMetadata;
 
@@ -34,7 +34,7 @@
 import com.google.inject.Module;
 
 /**
- * Implementation of {@link ApiMetadata} for Glance 1.0 API
+ * Implementation of {@link org.jclouds.apis.ApiMetadata} for Glance 1.0 API
  */
 public class GlanceApiMetadata extends BaseHttpApiMetadata<GlanceApi> {
 
@@ -73,10 +73,10 @@
          .defaultModules(ImmutableSet.<Class<? extends Module>>builder()
                                      .add(AuthenticationApiModule.class)
                                      .add(KeystoneAuthenticationModule.class)
-                                     .add(ZoneModule.class)
+                                     .add(RegionModule.class)
                                      .add(GlanceHttpApiModule.class).build());
       }
-      
+
       @Override
       public GlanceApiMetadata build() {
          return new GlanceApiMetadata(this);
diff --git a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImageDetails.java b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImageDetails.java
index 49ef9c1..cce2913 100644
--- a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImageDetails.java
+++ b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImageDetails.java
@@ -35,14 +35,14 @@
 import org.jclouds.openstack.glance.v1_0.domain.ImageDetails;
 import org.jclouds.openstack.glance.v1_0.features.ImageApi;
 import org.jclouds.openstack.glance.v1_0.functions.internal.ParseImageDetails.Images;
-import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
 import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
 
 import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
 import com.google.common.base.Optional;
 import com.google.inject.TypeLiteral;
-import org.jclouds.openstack.v2_0.options.PaginationOptions;
 
 /**
  * boiler plate until we determine a better way
@@ -75,8 +75,8 @@
 
       @Override
       protected Function<Object, IterableWithMarker<ImageDetails>> markerToNextForArg0(Optional<Object> arg0) {
-         String zone = arg0.isPresent() ? arg0.get().toString() : null;
-         final ImageApi imageApi = api.getImageApiForZone(zone);
+         String region = arg0.isPresent() ? arg0.get().toString() : null;
+         final ImageApi imageApi = api.getImageApi(region);
          return new Function<Object, IterableWithMarker<ImageDetails>>() {
 
             @SuppressWarnings("unchecked")
@@ -90,7 +90,7 @@
                }
                else {
                   return IterableWithMarkers.EMPTY;
-               }                 
+               }
             }
 
             @Override
diff --git a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImages.java b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImages.java
index 5d02694..3ac8547 100644
--- a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImages.java
+++ b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/functions/internal/ParseImages.java
@@ -35,14 +35,14 @@
 import org.jclouds.openstack.glance.v1_0.domain.Image;
 import org.jclouds.openstack.glance.v1_0.features.ImageApi;
 import org.jclouds.openstack.glance.v1_0.functions.internal.ParseImages.Images;
-import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
 import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.openstack.v2_0.domain.PaginatedCollection;
+import org.jclouds.openstack.v2_0.options.PaginationOptions;
 
 import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
 import com.google.common.base.Optional;
 import com.google.inject.TypeLiteral;
-import org.jclouds.openstack.v2_0.options.PaginationOptions;
 
 /**
  * boiler plate until we determine a better way
@@ -75,8 +75,8 @@
 
       @Override
       protected Function<Object, IterableWithMarker<Image>> markerToNextForArg0(Optional<Object> arg0) {
-         String zone = arg0.isPresent() ? arg0.get().toString() : null;
-         final ImageApi imageApi = api.getImageApiForZone(zone);
+         String region = arg0.isPresent() ? arg0.get().toString() : null;
+         final ImageApi imageApi = api.getImageApi(region);
          return new Function<Object, IterableWithMarker<Image>>() {
 
             @SuppressWarnings("unchecked")
diff --git a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/handlers/GlanceErrorHandler.java b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/handlers/GlanceErrorHandler.java
index 67412f2..232f5bf 100644
--- a/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/handlers/GlanceErrorHandler.java
+++ b/openstack-glance/src/main/java/org/jclouds/openstack/glance/v1_0/handlers/GlanceErrorHandler.java
@@ -24,7 +24,7 @@
 import org.jclouds.http.HttpErrorHandler;
 import org.jclouds.http.HttpResponse;
 import org.jclouds.http.HttpResponseException;
-import org.jclouds.openstack.glance.functions.ZoneToEndpointNegotiateVersion;
+import org.jclouds.openstack.glance.functions.RegionToEndpointNegotiateVersion;
 import org.jclouds.rest.AuthorizationException;
 import org.jclouds.rest.ResourceNotFoundException;
 
@@ -46,7 +46,7 @@
       switch (response.getStatusCode()) {
          // do not throw exceptions on Glance version negotiation
          case 300:
-            if (command.getCurrentRequest().getFirstHeaderOrNull(ZoneToEndpointNegotiateVersion.VERSION_NEGOTIATION_HEADER) != null) {
+            if (command.getCurrentRequest().getFirstHeaderOrNull(RegionToEndpointNegotiateVersion.VERSION_NEGOTIATION_HEADER) != null) {
                return;
             }
             break;
diff --git a/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/GlanceVersionNegotiationExpectTest.java b/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/GlanceVersionNegotiationExpectTest.java
index e6d1b96..8694b37 100644
--- a/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/GlanceVersionNegotiationExpectTest.java
+++ b/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/GlanceVersionNegotiationExpectTest.java
@@ -53,7 +53,7 @@
             responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             list, listResponse);
 
-      assertEquals(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").list().concat().toString(),
+      assertEquals(apiWhenExist.getImageApi("az-1.region-a.geo-1").list().concat().toString(),
             new ParseImagesTest().expected().toString());
    }
 
@@ -70,7 +70,7 @@
       GlanceApi apiWhenExist = requestsSendResponses(keystoneAuthWithUsernameAndPassword,
             responseWithKeystoneAccess, versionNegotiationRequest, localVersionNegotiationResponse);
 
-      apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").list();
+      apiWhenExist.getImageApi("az-1.region-a.geo-1").list();
    }
 
     /*
@@ -95,7 +95,7 @@
             localResponseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             list, listResponse);
 
-      assertEquals(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").list().concat().toString(),
+      assertEquals(apiWhenExist.getImageApi("az-1.region-a.geo-1").list().concat().toString(),
             new ParseImagesTest().expected().toString());
    }
 }
diff --git a/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/ImageApiExpectTest.java b/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/ImageApiExpectTest.java
index 56cdd0b..d9e89df 100644
--- a/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/ImageApiExpectTest.java
+++ b/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/ImageApiExpectTest.java
@@ -58,9 +58,9 @@
             responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             list, listResponse);
 
-      assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+      assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
 
-      assertEquals(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").list().concat().toString(),
+      assertEquals(apiWhenExist.getImageApi("az-1.region-a.geo-1").list().concat().toString(),
             new ParseImagesTest().expected().toString());
    }
 
@@ -76,7 +76,7 @@
             responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             list, listResponse);
 
-      assertTrue(apiWhenNoExist.getImageApiForZone("az-1.region-a.geo-1").list().concat().isEmpty());
+      assertTrue(apiWhenNoExist.getImageApi("az-1.region-a.geo-1").list().concat().isEmpty());
    }
 
    public void testListInDetailWhenResponseIs2xx() throws Exception {
@@ -92,9 +92,9 @@
             responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             listInDetail, listInDetailResponse);
 
-      assertEquals(apiWhenExistInDetail.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+      assertEquals(apiWhenExistInDetail.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
 
-      assertEquals(apiWhenExistInDetail.getImageApiForZone("az-1.region-a.geo-1").listInDetail().concat().toString(),
+      assertEquals(apiWhenExistInDetail.getImageApi("az-1.region-a.geo-1").listInDetail().concat().toString(),
             new ParseImagesInDetailTest().expected().toString());
    }
 
@@ -110,7 +110,7 @@
             responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             listInDetail, listInDetailResponse);
 
-      assertTrue(apiWhenNoExistInDetail.getImageApiForZone("az-1.region-a.geo-1").listInDetail().concat().isEmpty());
+      assertTrue(apiWhenNoExistInDetail.getImageApi("az-1.region-a.geo-1").listInDetail().concat().isEmpty());
    }
 
    public void testShowWhenResponseIs2xx() throws Exception {
@@ -125,9 +125,9 @@
             responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             show, showResponse);
 
-      assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+      assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
 
-      assertEquals(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").get("fcc451d0-f6e4-4824-ad8f-70ec12326d07").toString(),
+      assertEquals(apiWhenExist.getImageApi("az-1.region-a.geo-1").get("fcc451d0-f6e4-4824-ad8f-70ec12326d07").toString(),
             new ParseImageDetailsFromHeadersTest().expected().toString());
    }
 
@@ -144,7 +144,7 @@
             responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             show, showResponse);
 
-      assertNull(apiWhenNoExist.getImageApiForZone("az-1.region-a.geo-1").get("fcc451d0-f6e4-4824-ad8f-70ec12326d07"));
+      assertNull(apiWhenNoExist.getImageApi("az-1.region-a.geo-1").get("fcc451d0-f6e4-4824-ad8f-70ec12326d07"));
    }
 
 
@@ -160,9 +160,9 @@
             responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             get, getResponse);
 
-      assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+      assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
 
-      assertEquals(Strings2.toStringAndClose(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").getAsStream("fcc451d0-f6e4-4824-ad8f-70ec12326d07")),
+      assertEquals(Strings2.toStringAndClose(apiWhenExist.getImageApi("az-1.region-a.geo-1").getAsStream("fcc451d0-f6e4-4824-ad8f-70ec12326d07")),
                "foo");
    }
 
@@ -178,7 +178,7 @@
             responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             get, getResponse);
 
-      assertNull(apiWhenNoExist.getImageApiForZone("az-1.region-a.geo-1").getAsStream("fcc451d0-f6e4-4824-ad8f-70ec12326d07"));
+      assertNull(apiWhenNoExist.getImageApi("az-1.region-a.geo-1").getAsStream("fcc451d0-f6e4-4824-ad8f-70ec12326d07"));
    }
 
    public void testCreateWhenResponseIs2xx() throws Exception {
@@ -196,9 +196,9 @@
             responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             get, createResponse);
 
-      assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+      assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
 
-      assertEquals(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").create("test", new StringPayload("somedata")),
+      assertEquals(apiWhenExist.getImageApi("az-1.region-a.geo-1").create("test", new StringPayload("somedata")),
             new ParseImageDetailsTest().expected());
    }
 
@@ -218,9 +218,9 @@
             responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             get, createResponse);
 
-      assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+      assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
 
-      apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").create("test", new StringPayload("somedata"));
+      apiWhenExist.getImageApi("az-1.region-a.geo-1").create("test", new StringPayload("somedata"));
    }
 
    public void testReserveWhenResponseIs2xx() throws Exception {
@@ -237,9 +237,9 @@
             responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             get, createResponse);
 
-      assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+      assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
 
-      assertEquals(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").reserve("test"), new ParseImageDetailsTest().expected());
+      assertEquals(apiWhenExist.getImageApi("az-1.region-a.geo-1").reserve("test"), new ParseImageDetailsTest().expected());
    }
 
    @Test(expectedExceptions = AuthorizationException.class)
@@ -257,9 +257,9 @@
             responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             get, createResponse);
 
-      assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+      assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
 
-      apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").reserve("test");
+      apiWhenExist.getImageApi("az-1.region-a.geo-1").reserve("test");
    }
 
    public void testUpdateMetadataWhenResponseIs2xx() throws Exception {
@@ -285,9 +285,9 @@
             responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             get, updateResponse);
 
-      assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+      assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
 
-      assertEquals(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1")
+      assertEquals(apiWhenExist.getImageApi("az-1.region-a.geo-1")
             .update("fcc451d0-f6e4-4824-ad8f-70ec12326d07",
                   UpdateImageOptions.Builder.name("newname"),
                   UpdateImageOptions.Builder.isPublic(true),
@@ -317,9 +317,9 @@
             responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             get, updateResponse);
 
-      assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+      assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
 
-      apiWhenExist.getImageApiForZone("az-1.region-a.geo-1")
+      apiWhenExist.getImageApi("az-1.region-a.geo-1")
             .update("fcc451d0-f6e4-4824-ad8f-70ec12326d07",
                   UpdateImageOptions.Builder.name("newname"),
                   UpdateImageOptions.Builder.isPublic(true));
@@ -341,9 +341,9 @@
             responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             get, updateResponse);
 
-      assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+      assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
 
-      assertEquals(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").upload("fcc451d0-f6e4-4824-ad8f-70ec12326d07",
+      assertEquals(apiWhenExist.getImageApi("az-1.region-a.geo-1").upload("fcc451d0-f6e4-4824-ad8f-70ec12326d07",
             new StringPayload("somenewdata")), new ParseImageDetailsTest().expected());
    }
 
@@ -366,9 +366,9 @@
             responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             get, updateResponse);
 
-      assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+      assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
 
-      assertEquals(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").upload("fcc451d0-f6e4-4824-ad8f-70ec12326d07",
+      assertEquals(apiWhenExist.getImageApi("az-1.region-a.geo-1").upload("fcc451d0-f6e4-4824-ad8f-70ec12326d07",
             new StringPayload("somenewdata"), UpdateImageOptions.Builder.name("anothernewname")), new ParseImageDetailsTest().expected());
    }
 
@@ -390,9 +390,9 @@
             responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             get, updateResponse);
 
-      assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+      assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
 
-      apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").upload("fcc451d0-f6e4-4824-ad8f-70ec12326d07",
+      apiWhenExist.getImageApi("az-1.region-a.geo-1").upload("fcc451d0-f6e4-4824-ad8f-70ec12326d07",
             new StringPayload("somenewdata"), UpdateImageOptions.Builder.name("anothernewname"));
    }
 
@@ -408,9 +408,9 @@
             responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             get, getResponse);
 
-      assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+      assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
 
-      assertTrue(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").delete("fcc451d0-f6e4-4824-ad8f-70ec12326d07"));
+      assertTrue(apiWhenExist.getImageApi("az-1.region-a.geo-1").delete("fcc451d0-f6e4-4824-ad8f-70ec12326d07"));
    }
 
    public void testDeleteWhenResponseIs4xx() throws Exception {
@@ -426,8 +426,8 @@
             responseWithKeystoneAccess, versionNegotiationRequest, versionNegotiationResponse,
             get, getResponse);
 
-      assertEquals(apiWhenExist.getConfiguredZones(), ImmutableSet.of("az-1.region-a.geo-1"));
+      assertEquals(apiWhenExist.getConfiguredRegions(), ImmutableSet.of("az-1.region-a.geo-1"));
 
-      assertFalse(apiWhenExist.getImageApiForZone("az-1.region-a.geo-1").delete("fcc451d0-f6e4-4824-ad8f-70ec12326d07"));
+      assertFalse(apiWhenExist.getImageApi("az-1.region-a.geo-1").delete("fcc451d0-f6e4-4824-ad8f-70ec12326d07"));
    }
 }
diff --git a/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/ImageApiLiveTest.java b/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/ImageApiLiveTest.java
index c624224..1be12f5 100644
--- a/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/ImageApiLiveTest.java
+++ b/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/features/ImageApiLiveTest.java
@@ -41,8 +41,8 @@
 
    @Test
    public void testList() throws Exception {
-      for (String zoneId : api.getConfiguredZones()) {
-         ImageApi imageApi = api.getImageApiForZone(zoneId);
+      for (String region : api.getConfiguredRegions()) {
+         ImageApi imageApi = api.getImageApi(region);
          Set<? extends Image> response = imageApi.list().concat().toSet();
          assert null != response;
          for (Image image : response) {
@@ -59,8 +59,8 @@
 
    @Test
    public void testListInDetail() throws Exception {
-      for (String zoneId : api.getConfiguredZones()) {
-         ImageApi imageApi = api.getImageApiForZone(zoneId);
+      for (String region : api.getConfiguredRegions()) {
+         ImageApi imageApi = api.getImageApi(region);
          Set<? extends ImageDetails> response = imageApi.listInDetail().concat().toSet();
          assert null != response;
          for (ImageDetails image : response) {
@@ -87,16 +87,16 @@
    @Test
    public void testCreateUpdateAndDeleteImage() {
       StringPayload imageData = new StringPayload("This isn't really an image!");
-      for (String zoneId : api.getConfiguredZones()) {
-         ImageApi imageApi = api.getImageApiForZone(zoneId);
+      for (String region : api.getConfiguredRegions()) {
+         ImageApi imageApi = api.getImageApi(region);
          ImageDetails details = imageApi.create("jclouds-live-test", imageData, diskFormat(DiskFormat.RAW), containerFormat(ContainerFormat.BARE));
          assertEquals(details.getName(), "jclouds-live-test");
          assertEquals(details.getSize().get().longValue(), imageData.getRawContent().length());
-         
+
          details = imageApi.update(details.getId(), UpdateImageOptions.Builder.name("jclouds-live-test2"), UpdateImageOptions.Builder.minDisk(10));
          assertEquals(details.getName(), "jclouds-live-test2");
          assertEquals(details.getMinDisk(), 10);
-         
+
          Image fromListing = imageApi.list(
                   ListImageOptions.Builder.containerFormat(ContainerFormat.BARE).name("jclouds-live-test2").limit(2))
                   .get(0);
@@ -106,7 +106,7 @@
          assertEquals(Iterables.getOnlyElement(imageApi.listInDetail(ListImageOptions.Builder.name("jclouds-live-test2"))), details);
 
          assertTrue(imageApi.delete(details.getId()));
-         
+
          assertTrue(imageApi.list(ListImageOptions.Builder.name("jclouds-live-test2")).isEmpty());
       }
    }
@@ -114,11 +114,11 @@
    @Test
    public void testReserveUploadAndDeleteImage() {
       StringPayload imageData = new StringPayload("This isn't an image!");
-      for (String zoneId : api.getConfiguredZones()) {
-         ImageApi imageApi = api.getImageApiForZone(zoneId);
+      for (String region : api.getConfiguredRegions()) {
+         ImageApi imageApi = api.getImageApi(region);
          ImageDetails details = imageApi.reserve("jclouds-live-res-test", diskFormat(DiskFormat.RAW), containerFormat(ContainerFormat.BARE));
          assertEquals(details.getName(), "jclouds-live-res-test");
- 
+
          details = imageApi.upload(details.getId(), imageData, UpdateImageOptions.Builder.name("jclouds-live-res-test2"), UpdateImageOptions.Builder.minDisk(10));
          assertEquals(details.getName(), "jclouds-live-res-test2");
          assertEquals(details.getSize().get().longValue(), imageData.getRawContent().length());
diff --git a/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/internal/BaseGlanceExpectTest.java b/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/internal/BaseGlanceExpectTest.java
index adcb8b4..0bfaf37 100644
--- a/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/internal/BaseGlanceExpectTest.java
+++ b/openstack-glance/src/test/java/org/jclouds/openstack/glance/v1_0/internal/BaseGlanceExpectTest.java
@@ -18,7 +18,7 @@
 
 import org.jclouds.http.HttpRequest;
 import org.jclouds.http.HttpResponse;
-import org.jclouds.openstack.glance.functions.ZoneToEndpointNegotiateVersion;
+import org.jclouds.openstack.glance.functions.RegionToEndpointNegotiateVersion;
 import org.jclouds.openstack.glance.v1_0.GlanceApi;
 import org.jclouds.openstack.keystone.v2_0.internal.KeystoneFixture;
 import org.jclouds.rest.internal.BaseRestApiExpectTest;
@@ -50,7 +50,7 @@
       // version negotiation
       versionNegotiationRequest = HttpRequest.builder().method("GET")
             .endpoint("https://glance.jclouds.org:9292/")
-            .addHeader(ZoneToEndpointNegotiateVersion.VERSION_NEGOTIATION_HEADER, "true").build();
+            .addHeader(RegionToEndpointNegotiateVersion.VERSION_NEGOTIATION_HEADER, "true").build();
       versionNegotiationResponse = HttpResponse.builder().statusCode(300).message("HTTP/1.1 300 Multiple Choices").payload(
             payloadFromResourceWithContentType("/glanceVersionResponse.json", "application/json")).build();
    }
diff --git a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/MarconiApi.java b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/MarconiApi.java
index 8fc2eea..c69e0d4 100644
--- a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/MarconiApi.java
+++ b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/MarconiApi.java
@@ -16,32 +16,91 @@
  */
 package org.jclouds.openstack.marconi.v1;
 
-import com.google.inject.Provides;
+import java.io.Closeable;
+import java.util.Set;
+import java.util.UUID;
+
+import javax.ws.rs.HeaderParam;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+
 import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.location.Zone;
-import org.jclouds.location.functions.ZoneToEndpoint;
+import org.jclouds.location.Region;
+import org.jclouds.location.functions.RegionToEndpoint;
 import org.jclouds.openstack.marconi.v1.features.ClaimApi;
 import org.jclouds.openstack.marconi.v1.features.MessageApi;
 import org.jclouds.openstack.marconi.v1.features.QueueApi;
 import org.jclouds.rest.annotations.Delegate;
 import org.jclouds.rest.annotations.EndpointParam;
 
-import javax.ws.rs.HeaderParam;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import java.io.Closeable;
-import java.util.Set;
-import java.util.UUID;
+import com.google.inject.Provides;
 
 /**
  * Marconi is a robust, web-scale message queuing service to support the distributed nature of large web applications.
  */
 public interface MarconiApi extends Closeable {
    /**
-    * @return The Zone codes configured
+    * @return the Region codes configured
     */
    @Provides
-   @Zone
+   @Region
+   Set<String> getConfiguredRegions();
+
+   /**
+    * Provides access to Queue features.
+    *
+    * @param region   The region where this queue will live.
+    * @param clientId A UUID for each client instance. The UUID must be submitted in its canonical form (for example,
+    *                 3381af92-2b9e-11e3-b191-71861300734c). The client generates the Client-ID once. Client-ID
+    *                 persists between restarts of the client so the client should reuse that same Client-ID. All
+    *                 message-related operations require the use of Client-ID in the headers to ensure that messages
+    *                 are not echoed back to the client that posted them, unless the client explicitly requests this.
+    */
+   @Delegate
+   QueueApi getQueueApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region,
+         @HeaderParam("Client-ID") UUID clientId);
+
+   /**
+    * Provides access to Message features.
+    *
+    * @param region   The region where this queue lives.
+    * @param clientId A UUID for each client instance. The UUID must be submitted in its canonical form (for example,
+    *                 3381af92-2b9e-11e3-b191-71861300734c). The client generates the Client-ID once. Client-ID
+    *                 persists between restarts of the client so the client should reuse that same Client-ID. All
+    *                 message-related operations require the use of Client-ID in the headers to ensure that messages
+    *                 are not echoed back to the client that posted them, unless the client explicitly requests this.
+    * @param name     Name of the queue.
+    */
+   @Delegate
+   @Path("/queues/{name}")
+   MessageApi getMessageApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region,
+         @HeaderParam("Client-ID") UUID clientId,
+         @PathParam("name") String name);
+
+   /**
+    * Provides access to Claim features.
+    *
+    * @param region   The region where this queue lives.
+    * @param clientId A UUID for each client instance. The UUID must be submitted in its canonical form (for example,
+    *                 3381af92-2b9e-11e3-b191-71861300734c). The client generates the Client-ID once. Client-ID
+    *                 persists between restarts of the client so the client should reuse that same Client-ID. All
+    *                 message-related operations require the use of Client-ID in the headers to ensure that messages
+    *                 are not echoed back to the client that posted them, unless the client explicitly requests this.
+    * @param name     Name of the queue.
+    */
+   @Delegate
+   @Path("/queues/{name}")
+   ClaimApi getClaimApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region,
+         @HeaderParam("Client-ID") UUID clientId,
+         @PathParam("name") String name);
+
+   /**
+    * @return the Zone codes configured
+    * @deprecated Please use {@link #getConfiguredRegions()} as this method will be removed in jclouds 3.0.
+    */
+   @Deprecated
+   @Provides
+   @Region
    Set<String> getConfiguredZones();
 
    /**
@@ -53,10 +112,13 @@
     *                 persists between restarts of the client so the client should reuse that same Client-ID. All
     *                 message-related operations require the use of Client-ID in the headers to ensure that messages
     *                 are not echoed back to the client that posted them, unless the client explicitly requests this.
+    * @deprecated Please use {@link #getQueueApi(String, UUID)} as this method will be removed
+    *             in jclouds 3.0.
     */
+   @Deprecated
    @Delegate
    QueueApi getQueueApiForZoneAndClient(
-         @EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone,
+         @EndpointParam(parser = RegionToEndpoint.class) @Nullable String zone,
          @HeaderParam("Client-ID") UUID clientId);
 
    /**
@@ -69,11 +131,14 @@
     *                 message-related operations require the use of Client-ID in the headers to ensure that messages
     *                 are not echoed back to the client that posted them, unless the client explicitly requests this.
     * @param name     Name of the queue.
+    * @deprecated Please use {@link #getMessageApi(String, UUID, String)} as this method will be removed
+    *             in jclouds 3.0.
     */
+   @Deprecated
    @Delegate
    @Path("/queues/{name}")
    MessageApi getMessageApiForZoneAndClientAndQueue(
-         @EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone,
+         @EndpointParam(parser = RegionToEndpoint.class) @Nullable String zone,
          @HeaderParam("Client-ID") UUID clientId,
          @PathParam("name") String name);
 
@@ -87,11 +152,14 @@
     *                 message-related operations require the use of Client-ID in the headers to ensure that messages
     *                 are not echoed back to the client that posted them, unless the client explicitly requests this.
     * @param name     Name of the queue.
+    * @deprecated Please use {@link #getClaimApi(String, UUID, String)} as this method will be removed
+    *             in jclouds 3.0.
     */
+   @Deprecated
    @Delegate
    @Path("/queues/{name}")
    ClaimApi getClaimApiForZoneAndClientAndQueue(
-         @EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone,
+         @EndpointParam(parser = RegionToEndpoint.class) @Nullable String zone,
          @HeaderParam("Client-ID") UUID clientId,
          @PathParam("name") String name);
 }
diff --git a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/MarconiApiMetadata.java b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/MarconiApiMetadata.java
index 093b267..d44f926 100644
--- a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/MarconiApiMetadata.java
+++ b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/MarconiApiMetadata.java
@@ -16,24 +16,24 @@
  */
 package org.jclouds.openstack.marconi.v1;
 
-import com.google.common.collect.ImmutableSet;
-import com.google.inject.Module;
+import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
+import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
+
+import java.net.URI;
+import java.util.Properties;
 
 import org.jclouds.http.okhttp.config.OkHttpCommandExecutorServiceModule;
 import org.jclouds.openstack.keystone.v2_0.config.AuthenticationApiModule;
 import org.jclouds.openstack.keystone.v2_0.config.CredentialTypes;
 import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule;
-import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.ZoneModule;
+import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.RegionModule;
 import org.jclouds.openstack.marconi.v1.config.MarconiHttpApiModule;
 import org.jclouds.openstack.marconi.v1.config.MarconiTypeAdapters;
 import org.jclouds.openstack.v2_0.ServiceType;
 import org.jclouds.rest.internal.BaseHttpApiMetadata;
 
-import java.net.URI;
-import java.util.Properties;
-
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
+import com.google.common.collect.ImmutableSet;
+import com.google.inject.Module;
 
 /**
  * Implementation of {@link org.jclouds.apis.ApiMetadata} for Marconi 1.0 API
@@ -77,11 +77,11 @@
                                      .add(AuthenticationApiModule.class)
                                      .add(KeystoneAuthenticationModule.class)
                                      .add(OkHttpCommandExecutorServiceModule.class)
-                                     .add(ZoneModule.class)
+                                     .add(RegionModule.class)
                                      .add(MarconiTypeAdapters.class)
                                      .add(MarconiHttpApiModule.class).build());
       }
-      
+
       @Override
       public MarconiApiMetadata build() {
          return new MarconiApiMetadata(this);
diff --git a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/ClaimApi.java b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/ClaimApi.java
index 4bc21a7..1afe47f 100644
--- a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/ClaimApi.java
+++ b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/ClaimApi.java
@@ -16,6 +16,23 @@
  */
 package org.jclouds.openstack.marconi.v1.features;
 
+import java.util.List;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptyListOnNotFoundOr404;
+import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
 import org.jclouds.openstack.marconi.v1.domain.Claim;
 import org.jclouds.openstack.marconi.v1.domain.Message;
@@ -29,27 +46,13 @@
 import org.jclouds.rest.annotations.ResponseParser;
 import org.jclouds.rest.annotations.SkipEncoding;
 
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-import java.util.List;
-
-import static org.jclouds.Fallbacks.EmptyListOnNotFoundOr404;
-import static org.jclouds.Fallbacks.FalseOnNotFoundOr404;
-import static org.jclouds.Fallbacks.NullOnNotFoundOr404;
-
 /**
  * Provides access to Messages via their REST API.
  */
 @SkipEncoding({'/', '='})
 @RequestFilters(AuthenticateRequest.class)
+@Consumes(MediaType.APPLICATION_JSON)
+@Path("/claims")
 public interface ClaimApi {
    /**
     * This operation claims a set of messages (up to the value of the limit parameter) from oldest to newest and skips
@@ -85,13 +88,10 @@
     */
    @Named("claim:claim")
    @POST
-   @Path("/claims")
+   @Payload("%7B\"ttl\":{ttl},\"grace\":{grace}%7D")
    @ResponseParser(ParseMessagesToList.class)
    @Fallback(EmptyListOnNotFoundOr404.class)
-   @Payload("%7B\"ttl\":{ttl},\"grace\":{grace}%7D")
-   List<Message> claim(@PayloadParam("ttl") int ttl,
-                       @PayloadParam("grace") int grace,
-                       @QueryParam("limit") int limit);
+   List<Message> claim(@PayloadParam("ttl") int ttl, @PayloadParam("grace") int grace, @QueryParam("limit") int limit);
 
    /**
     * Gets a specific claim and the associated messages.
@@ -100,10 +100,10 @@
     */
    @Named("claim:get")
    @GET
+   @Path("/{claim_id}")
    @ResponseParser(ParseClaim.class)
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Path("/claims/{claim_id}")
    @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
    Claim get(@PathParam("claim_id") String claimId);
 
    /**
@@ -118,12 +118,11 @@
     */
    @Named("claim:update")
    @PATCH
-   @Path("/claims/{claim_id}")
-   @Fallback(FalseOnNotFoundOr404.class)
-   @Payload("%7B\"ttl\":{ttl}%7D")
+   @Path("/{claim_id}")
    @Produces(MediaType.APPLICATION_JSON)
-   boolean update(@PathParam("claim_id") String claimId,
-                  @PayloadParam("ttl") int ttl);
+   @Payload("%7B\"ttl\":{ttl}%7D")
+   @Fallback(FalseOnNotFoundOr404.class)
+   boolean update(@PathParam("claim_id") String claimId, @PayloadParam("ttl") int ttl);
 
    /**
     * This operation immediately releases a claim, making any remaining, undeleted messages that are associated with
@@ -135,7 +134,7 @@
     */
    @Named("claim:delete")
    @DELETE
-   @Path("/claims/{claim_id}")
+   @Path("/{claim_id}")
    @Fallback(FalseOnNotFoundOr404.class)
    boolean release(@PathParam("claim_id") String claimId);
 }
diff --git a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/MessageApi.java b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/MessageApi.java
index 51c717e..1e648a7 100644
--- a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/MessageApi.java
+++ b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/MessageApi.java
@@ -16,6 +16,23 @@
  */
 package org.jclouds.openstack.marconi.v1.features;
 
+import java.util.List;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptyListOnNotFoundOr404;
+import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.openstack.keystone.v2_0.KeystoneFallbacks.EmptyPaginatedCollectionOnNotFoundOr404;
 import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
 import org.jclouds.openstack.marconi.v1.binders.BindIdsToQueryParam;
 import org.jclouds.openstack.marconi.v1.domain.CreateMessage;
@@ -34,27 +51,13 @@
 import org.jclouds.rest.annotations.SkipEncoding;
 import org.jclouds.rest.binders.BindToJsonPayload;
 
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-import java.util.List;
-
-import static org.jclouds.Fallbacks.EmptyListOnNotFoundOr404;
-import static org.jclouds.Fallbacks.FalseOnNotFoundOr404;
-import static org.jclouds.Fallbacks.NullOnNotFoundOr404;
-import static org.jclouds.openstack.keystone.v2_0.KeystoneFallbacks.EmptyPaginatedCollectionOnNotFoundOr404;
-
 /**
  * Provides access to Messages via their REST API.
  */
 @SkipEncoding({'/', '='})
 @RequestFilters(AuthenticateRequest.class)
+@Consumes(MediaType.APPLICATION_JSON)
+@Path("/messages")
 public interface MessageApi {
    /**
     * Create message(s) on a queue.
@@ -64,9 +67,9 @@
     */
    @Named("message:create")
    @POST
-   @Path("/messages")
    @ResponseParser(ParseMessagesCreated.class)
    @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
    MessagesCreated create(@BinderParam(BindToJsonPayload.class) List<CreateMessage> messages);
 
    /**
@@ -78,9 +81,7 @@
    @Named("message:stream")
    @GET
    @ResponseParser(ParseMessagesToStream.class)
-   @Consumes(MediaType.APPLICATION_JSON)
    @Fallback(EmptyPaginatedCollectionOnNotFoundOr404.class)
-   @Path("/messages")
    MessageStream stream(StreamMessagesOptions... options);
 
    /**
@@ -91,8 +92,6 @@
    @Named("message:list")
    @GET
    @ResponseParser(ParseMessagesToList.class)
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Path("/messages")
    @Fallback(EmptyListOnNotFoundOr404.class)
    List<Message> list(@BinderParam(BindIdsToQueryParam.class) Iterable<String> ids);
 
@@ -103,10 +102,10 @@
     */
    @Named("message:get")
    @GET
+   @Path("/{message_id}")
    @ResponseParser(ParseMessage.class)
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Path("/messages/{message_id}")
    @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
    Message get(@PathParam("message_id") String id);
 
    /**
@@ -117,8 +116,6 @@
     */
    @Named("message:delete")
    @DELETE
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Path("/messages")
    @Fallback(FalseOnNotFoundOr404.class)
    boolean delete(@BinderParam(BindIdsToQueryParam.class) Iterable<String> ids);
 
@@ -133,8 +130,7 @@
     */
    @Named("message:delete")
    @DELETE
-   @Consumes(MediaType.APPLICATION_JSON)
-   @Path("/messages/{message_id}")
+   @Path("/{message_id}")
    @Fallback(FalseOnNotFoundOr404.class)
    boolean deleteByClaim(@PathParam("message_id") String id,
                          @QueryParam("claim_id") String claimId);
diff --git a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/QueueApi.java b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/QueueApi.java
index 8953683..ec59bbe 100644
--- a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/QueueApi.java
+++ b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/features/QueueApi.java
@@ -16,6 +16,21 @@
  */
 package org.jclouds.openstack.marconi.v1.features;
 
+import java.util.Map;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
+import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
 import org.jclouds.collect.PagedIterable;
 import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
 import org.jclouds.openstack.marconi.v1.domain.Queue;
@@ -34,26 +49,13 @@
 import org.jclouds.rest.annotations.Transform;
 import org.jclouds.rest.binders.BindToJsonPayload;
 
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-import java.util.Map;
-
-import static org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
-import static org.jclouds.Fallbacks.FalseOnNotFoundOr404;
-
 /**
  * Provides access to Queues via their REST API.
  */
 @SkipEncoding({'/', '='})
 @RequestFilters(AuthenticateRequest.class)
+@Consumes(MediaType.APPLICATION_JSON)
+@Path("/queues")
 public interface QueueApi {
    /**
     * Create a queue.
@@ -63,7 +65,7 @@
     */
    @Named("queue:create")
    @PUT
-   @Path("queues/{name}")
+   @Path("/{name}")
    @Fallback(FalseOnNotFoundOr404.class)
    boolean create(@PathParam("name") String name);
 
@@ -75,7 +77,7 @@
     */
    @Named("queue:delete")
    @DELETE
-   @Path("queues/{name}")
+   @Path("/{name}")
    @Fallback(FalseOnNotFoundOr404.class)
    boolean delete(@PathParam("name") String name);
 
@@ -87,7 +89,7 @@
     */
    @Named("queue:get")
    @GET
-   @Path("queues/{name}")
+   @Path("/{name}")
    @Fallback(FalseOnNotFoundOr404.class)
    boolean exists(@PathParam("name") String name);
 
@@ -98,10 +100,8 @@
     */
    @Named("queue:list")
    @GET
-   @Consumes(MediaType.APPLICATION_JSON)
    @ResponseParser(ParseQueues.class)
    @Transform(QueuesToPagedIterable.class)
-   @Path("queues")
    @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
    PagedIterable<Queue> list(@QueryParam("detailed") boolean detailed);
 
@@ -111,9 +111,7 @@
    @Named("queue:list")
    @GET
    @ResponseParser(ParseQueues.class)
-   @Consumes(MediaType.APPLICATION_JSON)
    @Fallback(EmptyQueuesFallback.class)
-   @Path("queues")
    Queues list(ListQueuesOptions options);
 
    /**
@@ -130,7 +128,7 @@
     */
    @Named("queue:setMetadata")
    @PUT
-   @Path("queues/{name}/metadata")
+   @Path("/{name}/metadata")
    @Produces(MediaType.APPLICATION_JSON)
    @Fallback(FalseOnNotFoundOr404.class)
    boolean setMetadata(@PathParam("name") String name,
@@ -144,8 +142,7 @@
     */
    @Named("queue:getMetadata")
    @GET
-   @Path("queues/{name}/metadata")
-   @Consumes(MediaType.APPLICATION_JSON)
+   @Path("/{name}/metadata")
    @Fallback(FalseOnNotFoundOr404.class)
    Map<String, String> getMetadata(@PathParam("name") String name);
 
@@ -158,8 +155,7 @@
     */
    @Named("queue:getStats")
    @GET
-   @Path("queues/{name}/stats")
-   @Consumes(MediaType.APPLICATION_JSON)
+   @Path("/{name}/stats")
    @ResponseParser(ParseQueueStats.class)
    @Fallback(FalseOnNotFoundOr404.class)
    QueueStats getStats(@PathParam("name") String name);
diff --git a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/functions/QueuesToPagedIterable.java b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/functions/QueuesToPagedIterable.java
index 53f5dfd..bde8f5f 100644
--- a/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/functions/QueuesToPagedIterable.java
+++ b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/functions/QueuesToPagedIterable.java
@@ -46,10 +46,10 @@
 
    @Override
    protected Function<Object, IterableWithMarker<Queue>> markerToNextForArgs(List<Object> args) {
-      String zone = String.class.cast(args.get(0));
+      String region = String.class.cast(args.get(0));
       UUID clientId = UUID.class.cast(args.get(1));
 
-      return new ListQueuesAtMarker(api.getQueueApiForZoneAndClient(zone, clientId));
+      return new ListQueuesAtMarker(api.getQueueApi(region, clientId));
    }
 
    private static class ListQueuesAtMarker implements Function<Object, IterableWithMarker<Queue>> {
diff --git a/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/ClaimApiLiveTest.java b/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/ClaimApiLiveTest.java
index c562421..a7fd8e9 100644
--- a/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/ClaimApiLiveTest.java
+++ b/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/ClaimApiLiveTest.java
@@ -41,8 +41,8 @@
    private final Map<String, List<String>> claimIds = Maps.newHashMap();
 
    public void createQueues() throws Exception {
-      for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZoneAndClient(zoneId, CLIENT_ID);
+      for (String regionId : regions) {
+         QueueApi queueApi = api.getQueueApi(regionId, CLIENT_ID);
          boolean success = queueApi.create("jclouds-test");
 
          assertTrue(success);
@@ -51,8 +51,8 @@
 
    @Test(dependsOnMethods = { "createQueues" })
    public void createMessages() throws Exception {
-      for (String zoneId : zones) {
-         MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue(zoneId, CLIENT_ID, "jclouds-test");
+      for (String regionId : regions) {
+         MessageApi messageApi = api.getMessageApi(regionId, CLIENT_ID, "jclouds-test");
 
          String json1 = "{\"event\":{\"name\":\"Austin Java User Group\",\"attendees\":[\"bob\",\"jim\",\"sally\"]}}";
          CreateMessage message1 = CreateMessage.builder().ttl(86400).body(json1).build();
@@ -71,16 +71,16 @@
 
    @Test(dependsOnMethods = { "createMessages" })
    public void claimMessages() throws Exception {
-      for (String zoneId : zones) {
-         ClaimApi claimApi = api.getClaimApiForZoneAndClientAndQueue(zoneId, CLIENT_ID, "jclouds-test");
+      for (String regionId : regions) {
+         ClaimApi claimApi = api.getClaimApi(regionId, CLIENT_ID, "jclouds-test");
 
          List<Message> messages = claimApi.claim(300, 200, 2);
          assertEquals(messages.size(), 2);
 
-         claimIds.put(zoneId, new ArrayList<String>());
+         claimIds.put(regionId, new ArrayList<String>());
 
          for (Message message : messages) {
-            claimIds.get(zoneId).add(message.getClaimId().get());
+            claimIds.get(regionId).add(message.getClaimId().get());
 
             assertNotNull(message.getId());
             assertTrue(message.getClaimId().isPresent());
@@ -91,10 +91,10 @@
 
    @Test(dependsOnMethods = { "claimMessages" })
    public void getClaim() throws Exception {
-      for (String zoneId : zones) {
-         ClaimApi claimApi = api.getClaimApiForZoneAndClientAndQueue(zoneId, CLIENT_ID, "jclouds-test");
+      for (String regionId : regions) {
+         ClaimApi claimApi = api.getClaimApi(regionId, CLIENT_ID, "jclouds-test");
 
-         Claim claim = claimApi.get(claimIds.get(zoneId).get(0));
+         Claim claim = claimApi.get(claimIds.get(regionId).get(0));
 
          assertNotNull(claim.getId());
          assertEquals(claim.getMessages().size(), 2);
@@ -110,10 +110,10 @@
 
    @Test(dependsOnMethods = { "getClaim" })
    public void updateClaim() throws Exception {
-      for (String zoneId : zones) {
-         ClaimApi claimApi = api.getClaimApiForZoneAndClientAndQueue(zoneId, CLIENT_ID, "jclouds-test");
+      for (String regionId : regions) {
+         ClaimApi claimApi = api.getClaimApi(regionId, CLIENT_ID, "jclouds-test");
 
-         boolean success = claimApi.update(claimIds.get(zoneId).get(0), 400);
+         boolean success = claimApi.update(claimIds.get(regionId).get(0), 400);
 
          assertTrue(success);
       }
@@ -121,10 +121,10 @@
 
    @Test(dependsOnMethods = { "updateClaim" })
    public void releaseClaim() throws Exception {
-      for (String zoneId : zones) {
-         ClaimApi claimApi = api.getClaimApiForZoneAndClientAndQueue(zoneId, CLIENT_ID, "jclouds-test");
+      for (String regionId : regions) {
+         ClaimApi claimApi = api.getClaimApi(regionId, CLIENT_ID, "jclouds-test");
 
-         boolean success = claimApi.release(claimIds.get(zoneId).get(0));
+         boolean success = claimApi.release(claimIds.get(regionId).get(0));
 
          assertTrue(success);
       }
@@ -132,8 +132,8 @@
 
    @Test(dependsOnMethods = { "releaseClaim" })
    public void delete() throws Exception {
-      for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZoneAndClient(zoneId, CLIENT_ID);
+      for (String regionId : regions) {
+         QueueApi queueApi = api.getQueueApi(regionId, CLIENT_ID);
          boolean success = queueApi.delete("jclouds-test");
 
          assertTrue(success);
diff --git a/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/ClaimApiMockTest.java b/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/ClaimApiMockTest.java
index 5d5083f..b4f6200 100644
--- a/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/ClaimApiMockTest.java
+++ b/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/ClaimApiMockTest.java
@@ -41,7 +41,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         ClaimApi claimApi = api.getClaimApiForZoneAndClientAndQueue("DFW", CLIENT_ID, "jclouds-test");
+         ClaimApi claimApi = api.getClaimApi("DFW", CLIENT_ID, "jclouds-test");
 
          List<Message> messages = claimApi.claim(300, 200, 2);
 
@@ -69,7 +69,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         ClaimApi claimApi = api.getClaimApiForZoneAndClientAndQueue("DFW", CLIENT_ID, "jclouds-test");
+         ClaimApi claimApi = api.getClaimApi("DFW", CLIENT_ID, "jclouds-test");
 
          Claim claim = claimApi.get("52a8d23eb04a584f1bbd4f47");
 
@@ -110,7 +110,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         ClaimApi claimApi = api.getClaimApiForZoneAndClientAndQueue("DFW", CLIENT_ID, "jclouds-test");
+         ClaimApi claimApi = api.getClaimApi("DFW", CLIENT_ID, "jclouds-test");
 
          boolean success = claimApi.update("52a8d23eb04a584f1bbd4f47", 400);
 
@@ -132,7 +132,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         ClaimApi claimApi = api.getClaimApiForZoneAndClientAndQueue("DFW", CLIENT_ID, "jclouds-test");
+         ClaimApi claimApi = api.getClaimApi("DFW", CLIENT_ID, "jclouds-test");
 
          boolean success = claimApi.release("52a8d23eb04a584f1bbd4f47");
 
diff --git a/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/MessageApiLiveTest.java b/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/MessageApiLiveTest.java
index f394f6a..d0f64a2 100644
--- a/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/MessageApiLiveTest.java
+++ b/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/MessageApiLiveTest.java
@@ -46,8 +46,8 @@
    private final Map<String, List<String>> messageIds = Maps.newHashMap();
 
    public void createQueues() throws Exception {
-      for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZoneAndClient(zoneId, CLIENT_ID);
+      for (String regionId : regions) {
+         QueueApi queueApi = api.getQueueApi(regionId, CLIENT_ID);
          boolean success = queueApi.create("jclouds-test");
 
          assertTrue(success);
@@ -56,8 +56,8 @@
 
    @Test(dependsOnMethods = { "createQueues" })
    public void streamZeroPagesOfMessages() throws Exception {
-      for (String zoneId : zones) {
-         MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue(zoneId, CLIENT_ID, "jclouds-test");
+      for (String regionId : regions) {
+         MessageApi messageApi = api.getMessageApi(regionId, CLIENT_ID, "jclouds-test");
 
          MessageStream messageStream = messageApi.stream(echo(true));
 
@@ -68,8 +68,8 @@
 
    @Test(dependsOnMethods = { "streamZeroPagesOfMessages" })
    public void createMessage() throws Exception {
-      for (String zoneId : zones) {
-         MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue(zoneId, CLIENT_ID, "jclouds-test");
+      for (String regionId : regions) {
+         MessageApi messageApi = api.getMessageApi(regionId, CLIENT_ID, "jclouds-test");
 
          String json1 = "{\"event\":{\"name\":\"Edmonton Java User Group\",\"attendees\":[\"bob\",\"jim\",\"sally\"]}}";
          CreateMessage message1 = CreateMessage.builder().ttl(120).body(json1).build();
@@ -84,8 +84,8 @@
 
    @Test(dependsOnMethods = { "createMessage" })
    public void streamOnePageOfMessages() throws Exception {
-      for (String zoneId : zones) {
-         MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue(zoneId, CLIENT_ID, "jclouds-test");
+      for (String regionId : regions) {
+         MessageApi messageApi = api.getMessageApi(regionId, CLIENT_ID, "jclouds-test");
 
          MessageStream messageStream = messageApi.stream(echo(true));
 
@@ -101,8 +101,8 @@
 
    @Test(dependsOnMethods = { "streamOnePageOfMessages" })
    public void createMessages() throws Exception {
-      for (String zoneId : zones) {
-         MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue(zoneId, CLIENT_ID, "jclouds-test");
+      for (String regionId : regions) {
+         MessageApi messageApi = api.getMessageApi(regionId, CLIENT_ID, "jclouds-test");
 
          String json1 = "{\"event\":{\"name\":\"Austin Java User Group\",\"attendees\":[\"bob\",\"jim\",\"sally\"]}}";
          CreateMessage message1 = CreateMessage.builder().ttl(120).body(json1).build();
@@ -121,9 +121,9 @@
 
    @Test(dependsOnMethods = { "createMessages" })
    public void streamManyPagesOfMessages() throws Exception {
-      for (String zoneId : zones) {
-         MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue(zoneId, CLIENT_ID, "jclouds-test");
-         messageIds.put(zoneId, new ArrayList<String>());
+      for (String regionId : regions) {
+         MessageApi messageApi = api.getMessageApi(regionId, CLIENT_ID, "jclouds-test");
+         messageIds.put(regionId, new ArrayList<String>());
 
          MessageStream messageStream = messageApi.stream(echo(true).limit(2));
 
@@ -131,7 +131,7 @@
             assertEquals(Iterables.size(messageStream), 2);
 
             for (Message message : messageStream) {
-               messageIds.get(zoneId).add(message.getId());
+               messageIds.get(regionId).add(message.getId());
             }
 
             messageStream = messageApi.stream(messageStream.nextStreamOptions());
@@ -143,10 +143,10 @@
 
    @Test(dependsOnMethods = { "streamManyPagesOfMessages" })
    public void listMessagesByIds() throws Exception {
-      for (String zoneId : zones) {
-         MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue(zoneId, CLIENT_ID, "jclouds-test");
+      for (String regionId : regions) {
+         MessageApi messageApi = api.getMessageApi(regionId, CLIENT_ID, "jclouds-test");
 
-         List<Message> messages = messageApi.list(messageIds.get(zoneId));
+         List<Message> messages = messageApi.list(messageIds.get(regionId));
 
          assertEquals(messages.size(), 4);
 
@@ -159,10 +159,10 @@
 
    @Test(dependsOnMethods = { "listMessagesByIds" })
    public void getMessage() throws Exception {
-      for (String zoneId : zones) {
-         MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue(zoneId, CLIENT_ID, "jclouds-test");
+      for (String regionId : regions) {
+         MessageApi messageApi = api.getMessageApi(regionId, CLIENT_ID, "jclouds-test");
 
-         Message message = messageApi.get(getLast(messageIds.get(zoneId)));
+         Message message = messageApi.get(getLast(messageIds.get(regionId)));
 
          assertNotNull(message.getId());
          assertNotNull(message.getBody());
@@ -171,10 +171,10 @@
 
    @Test(dependsOnMethods = { "getMessage" })
    public void deleteMessagesByClaimId() throws Exception {
-      for (String zoneId : zones) {
+      for (String regionId : regions) {
          UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
-         MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue(zoneId, CLIENT_ID, "jclouds-test");
-         ClaimApi claimApi = api.getClaimApiForZoneAndClientAndQueue(zoneId, clientId, "jclouds-test");
+         MessageApi messageApi = api.getMessageApi(regionId, CLIENT_ID, "jclouds-test");
+         ClaimApi claimApi = api.getClaimApi(regionId, clientId, "jclouds-test");
          Message message = getOnlyElement(claimApi.claim(300, 100, 1));
 
          boolean success = messageApi.deleteByClaim(message.getId(), message.getClaimId().get());
@@ -185,10 +185,10 @@
 
    @Test(dependsOnMethods = { "deleteMessagesByClaimId" })
    public void deleteMessages() throws Exception {
-      for (String zoneId : zones) {
-         MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue(zoneId, CLIENT_ID, "jclouds-test");
+      for (String regionId : regions) {
+         MessageApi messageApi = api.getMessageApi(regionId, CLIENT_ID, "jclouds-test");
 
-         boolean success = messageApi.delete(messageIds.get(zoneId));
+         boolean success = messageApi.delete(messageIds.get(regionId));
 
          assertTrue(success);
       }
@@ -196,8 +196,8 @@
 
    @Test(dependsOnMethods = { "deleteMessages" })
    public void delete() throws Exception {
-      for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZoneAndClient(zoneId, CLIENT_ID);
+      for (String regionId : regions) {
+         QueueApi queueApi = api.getQueueApi(regionId, CLIENT_ID);
          boolean success = queueApi.delete("jclouds-test");
 
          assertTrue(success);
diff --git a/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/MessageApiMockTest.java b/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/MessageApiMockTest.java
index fefa889..5173eb4 100644
--- a/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/MessageApiMockTest.java
+++ b/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/MessageApiMockTest.java
@@ -48,7 +48,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue("DFW", CLIENT_ID, "jclouds-test");
+         MessageApi messageApi = api.getMessageApi("DFW", CLIENT_ID, "jclouds-test");
 
          String json1 = "{\"event\":{\"name\":\"Edmonton Java User Group\",\"attendees\":[\"bob\",\"jim\",\"sally\"]}}";
          CreateMessage createMessage1 = CreateMessage.builder().ttl(120).body(json1).build();
@@ -76,7 +76,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue("DFW", CLIENT_ID, "jclouds-test");
+         MessageApi messageApi = api.getMessageApi("DFW", CLIENT_ID, "jclouds-test");
 
          String json1 = "{\"event\":{\"name\":\"Austin Java User Group\",\"attendees\":[\"bob\",\"jim\",\"sally\"]}}";
          CreateMessage createMessage1 = CreateMessage.builder().ttl(120).body(json1).build();
@@ -110,7 +110,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue("DFW", CLIENT_ID, "jclouds-test");
+         MessageApi messageApi = api.getMessageApi("DFW", CLIENT_ID, "jclouds-test");
 
          MessageStream messageStream = messageApi.stream();
 
@@ -134,7 +134,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue("DFW", CLIENT_ID, "jclouds-test");
+         MessageApi messageApi = api.getMessageApi("DFW", CLIENT_ID, "jclouds-test");
 
          MessageStream messageStream = messageApi.stream();
 
@@ -166,7 +166,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue("DFW", CLIENT_ID, "jclouds-test");
+         MessageApi messageApi = api.getMessageApi("DFW", CLIENT_ID, "jclouds-test");
 
          MessageStream messageStream = messageApi.stream(limit(2));
 
@@ -197,7 +197,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue("DFW", CLIENT_ID, "jclouds-test");
+         MessageApi messageApi = api.getMessageApi("DFW", CLIENT_ID, "jclouds-test");
          List<String> ids = ImmutableList.of("52928896b04a584f24883227", "52928896b04a584f24883228", "52928896b04a584f24883229");
 
          List<Message> messages = messageApi.list(ids);
@@ -227,7 +227,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue("DFW", CLIENT_ID, "jclouds-test");
+         MessageApi messageApi = api.getMessageApi("DFW", CLIENT_ID, "jclouds-test");
 
          Message message = messageApi.get("5292b30cef913e6d026f4dec");
 
@@ -252,7 +252,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue("DFW", CLIENT_ID, "jclouds-test");
+         MessageApi messageApi = api.getMessageApi("DFW", CLIENT_ID, "jclouds-test");
          List<String> ids = ImmutableList.of("52936b8a3ac24e6ef4c067dd", "5292b30cef913e6d026f4dec");
 
          boolean success = messageApi.delete(ids);
@@ -275,7 +275,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue("DFW", CLIENT_ID, "jclouds-test");
+         MessageApi messageApi = api.getMessageApi("DFW", CLIENT_ID, "jclouds-test");
 
          boolean success = messageApi.deleteByClaim("52936b8a3ac24e6ef4c067dd", "5292b30cef913e6d026f4dec");
 
diff --git a/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/QueueApiLiveTest.java b/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/QueueApiLiveTest.java
index f10310b..36a1d40 100644
--- a/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/QueueApiLiveTest.java
+++ b/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/QueueApiLiveTest.java
@@ -40,8 +40,8 @@
    private static final UUID CLIENT_ID = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
 
    public void listZeroPagesOfQueues() throws Exception {
-      for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZoneAndClient(zoneId, CLIENT_ID);
+      for (String regionId : regions) {
+         QueueApi queueApi = api.getQueueApi(regionId, CLIENT_ID);
          List<Queue> queues = queueApi.list(false).concat().toList();
 
          assertTrue(queues.isEmpty());
@@ -50,8 +50,8 @@
 
    @Test(dependsOnMethods = { "listZeroPagesOfQueues" })
    public void create() throws Exception {
-      for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZoneAndClient(zoneId, CLIENT_ID);
+      for (String regionId : regions) {
+         QueueApi queueApi = api.getQueueApi(regionId, CLIENT_ID);
 
          for (int i = 0; i < 6; i++) {
             boolean success = queueApi.create("jclouds-test-" + i);
@@ -63,8 +63,8 @@
 
    @Test(dependsOnMethods = { "create" })
    public void listOnePageOfQueues() throws Exception {
-      for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZoneAndClient(zoneId, CLIENT_ID);
+      for (String regionId : regions) {
+         QueueApi queueApi = api.getQueueApi(regionId, CLIENT_ID);
          List<Queue> queues = queueApi.list(false).concat().toList();
 
          assertEquals(queues.size(), 6);
@@ -78,8 +78,8 @@
 
    @Test(dependsOnMethods = { "listOnePageOfQueues" })
    public void createMore() throws Exception {
-      for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZoneAndClient(zoneId, CLIENT_ID);
+      for (String regionId : regions) {
+         QueueApi queueApi = api.getQueueApi(regionId, CLIENT_ID);
 
          for (int i = 6; i < 12; i++) {
             boolean success = queueApi.create("jclouds-test-" + i);
@@ -91,8 +91,8 @@
 
    @Test(dependsOnMethods = { "createMore" })
    public void listManyPagesOfQueues() throws Exception {
-      for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZoneAndClient(zoneId, CLIENT_ID);
+      for (String regionId : regions) {
+         QueueApi queueApi = api.getQueueApi(regionId, CLIENT_ID);
          List<Queue> queues = queueApi.list(false).concat().toList();
 
          assertEquals(queues.size(), 12);
@@ -106,8 +106,8 @@
 
    @Test(dependsOnMethods = { "listManyPagesOfQueues" })
    public void listManyPagesOfQueuesManually() throws Exception {
-      for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZoneAndClient(zoneId, CLIENT_ID);
+      for (String regionId : regions) {
+         QueueApi queueApi = api.getQueueApi(regionId, CLIENT_ID);
 
          Queues queues = queueApi.list(limit(6));
 
@@ -126,8 +126,8 @@
 
    @Test(dependsOnMethods = { "listManyPagesOfQueuesManually" })
    public void exists() throws Exception {
-      for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZoneAndClient(zoneId, CLIENT_ID);
+      for (String regionId : regions) {
+         QueueApi queueApi = api.getQueueApi(regionId, CLIENT_ID);
          boolean success = queueApi.exists("jclouds-test-1");
 
          assertTrue(success);
@@ -136,8 +136,8 @@
 
    @Test(dependsOnMethods = { "exists" })
    public void setMetadata() throws Exception {
-      for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZoneAndClient(zoneId, CLIENT_ID);
+      for (String regionId : regions) {
+         QueueApi queueApi = api.getQueueApi(regionId, CLIENT_ID);
          Map<String, String> metadata = ImmutableMap.of("key1", "value1");
          boolean success = queueApi.setMetadata("jclouds-test-1", metadata);
 
@@ -147,8 +147,8 @@
 
    @Test(dependsOnMethods = { "setMetadata" })
    public void listManyPagesOfQueuesWithDetails() throws Exception {
-      for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZoneAndClient(zoneId, CLIENT_ID);
+      for (String regionId : regions) {
+         QueueApi queueApi = api.getQueueApi(regionId, CLIENT_ID);
          List<Queue> queues = queueApi.list(true).concat().toList();
 
          assertEquals(queues.size(), 12);
@@ -169,8 +169,8 @@
 
    @Test(dependsOnMethods = { "listManyPagesOfQueuesWithDetails" })
    public void getMetadata() throws Exception {
-      for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZoneAndClient(zoneId, CLIENT_ID);
+      for (String regionId : regions) {
+         QueueApi queueApi = api.getQueueApi(regionId, CLIENT_ID);
          Map<String, String> metadata = queueApi.getMetadata("jclouds-test-1");
 
          assertEquals(metadata.get("key1"), "value1");
@@ -179,8 +179,8 @@
 
    @Test(dependsOnMethods = { "getMetadata" })
    public void getStatsWithoutTotal() throws Exception {
-      for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZoneAndClient(zoneId, CLIENT_ID);
+      for (String regionId : regions) {
+         QueueApi queueApi = api.getQueueApi(regionId, CLIENT_ID);
          QueueStats stats = queueApi.getStats("jclouds-test-1");
 
          assertEquals(stats.getMessagesStats().getClaimed(), 0);
@@ -193,8 +193,8 @@
 
    @Test(dependsOnMethods = { "getStatsWithoutTotal" })
    public void getStatsWithTotal() throws Exception {
-      for (String zoneId : zones) {
-         MessageApi messageApi = api.getMessageApiForZoneAndClientAndQueue(zoneId, CLIENT_ID, "jclouds-test-1");
+      for (String regionId : regions) {
+         MessageApi messageApi = api.getMessageApi(regionId, CLIENT_ID, "jclouds-test-1");
 
          String json1 = "{\"event\":{\"type\":\"hockey\",\"players\":[\"bob\",\"jim\",\"sally\"]}}";
          CreateMessage message1 = CreateMessage.builder().ttl(120).body(json1).build();
@@ -202,7 +202,7 @@
 
          messageApi.create(message);
 
-         QueueApi queueApi = api.getQueueApiForZoneAndClient(zoneId, CLIENT_ID);
+         QueueApi queueApi = api.getQueueApi(regionId, CLIENT_ID);
          QueueStats stats = queueApi.getStats("jclouds-test-1");
 
          assertEquals(stats.getMessagesStats().getClaimed(), 0);
@@ -217,8 +217,8 @@
 
    @Test(dependsOnMethods = { "getStatsWithTotal" })
    public void delete() throws Exception {
-      for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZoneAndClient(zoneId, CLIENT_ID);
+      for (String regionId : regions) {
+         QueueApi queueApi = api.getQueueApi(regionId, CLIENT_ID);
 
          for (int i = 0; i < 12; i++) {
             boolean success = queueApi.delete("jclouds-test-" + i);
@@ -230,8 +230,8 @@
 
    @Test(dependsOnMethods = { "delete" })
    public void doesNotExist() throws Exception {
-      for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZoneAndClient(zoneId, CLIENT_ID);
+      for (String regionId : regions) {
+         QueueApi queueApi = api.getQueueApi(regionId, CLIENT_ID);
          boolean success = queueApi.exists("jclouds-test-1");
 
          assertFalse(success);
diff --git a/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/QueueApiMockTest.java b/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/QueueApiMockTest.java
index d632f2b..e84b534 100644
--- a/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/QueueApiMockTest.java
+++ b/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/features/QueueApiMockTest.java
@@ -52,7 +52,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZoneAndClient("DFW", CLIENT_ID);
+         QueueApi queueApi = api.getQueueApi("DFW", CLIENT_ID);
          boolean success = queueApi.create("jclouds-test");
 
          assertTrue(success);
@@ -73,7 +73,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZoneAndClient("DFW", CLIENT_ID);
+         QueueApi queueApi = api.getQueueApi("DFW", CLIENT_ID);
          boolean success = queueApi.delete("jclouds-test");
 
          assertTrue(success);
@@ -94,7 +94,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZoneAndClient("DFW", CLIENT_ID);
+         QueueApi queueApi = api.getQueueApi("DFW", CLIENT_ID);
          boolean success = queueApi.exists("jclouds-test");
 
          assertTrue(success);
@@ -115,7 +115,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZoneAndClient("DFW", CLIENT_ID);
+         QueueApi queueApi = api.getQueueApi("DFW", CLIENT_ID);
          boolean success = queueApi.exists("jclouds-blerg");
 
          assertFalse(success);
@@ -136,7 +136,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZoneAndClient("DFW", CLIENT_ID);
+         QueueApi queueApi = api.getQueueApi("DFW", CLIENT_ID);
 
          List<Queue> queues = queueApi.list(false).concat().toList();
 
@@ -159,7 +159,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZoneAndClient("DFW", CLIENT_ID);
+         QueueApi queueApi = api.getQueueApi("DFW", CLIENT_ID);
 
          List<Queue> queues = queueApi.list(false).concat().toList();
 
@@ -184,7 +184,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZoneAndClient("DFW", CLIENT_ID);
+         QueueApi queueApi = api.getQueueApi("DFW", CLIENT_ID);
 
          FluentIterable<Queue> queues = queueApi.list(false).concat();
 
@@ -202,7 +202,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZoneAndClient("DFW", CLIENT_ID);
+         QueueApi queueApi = api.getQueueApi("DFW", CLIENT_ID);
 
          Queues queues = queueApi.list(ListQueuesOptions.NONE);
 
@@ -222,7 +222,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZoneAndClient("DFW", CLIENT_ID);
+         QueueApi queueApi = api.getQueueApi("DFW", CLIENT_ID);
 
          List<Queue> queues = queueApi.list(false).concat().toList();
 
@@ -253,7 +253,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZoneAndClient("DFW", CLIENT_ID);
+         QueueApi queueApi = api.getQueueApi("DFW", CLIENT_ID);
 
          Queues queues = queueApi.list(limit(6));
 
@@ -286,7 +286,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZoneAndClient("DFW", CLIENT_ID);
+         QueueApi queueApi = api.getQueueApi("DFW", CLIENT_ID);
          Map<String, String> metadata = ImmutableMap.of("key1", "value1");
          boolean success = queueApi.setMetadata("jclouds-test", metadata);
 
@@ -310,7 +310,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZoneAndClient("DFW", CLIENT_ID);
+         QueueApi queueApi = api.getQueueApi("DFW", CLIENT_ID);
          Map<String, String> metadata = queueApi.getMetadata("jclouds-test");
 
          assertEquals(metadata.get("key1"), "value1");
@@ -331,7 +331,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZoneAndClient("DFW", CLIENT_ID);
+         QueueApi queueApi = api.getQueueApi("DFW", CLIENT_ID);
          QueueStats stats = queueApi.getStats("jclouds-test");
 
          assertEquals(stats.getMessagesStats().getClaimed(), 0);
@@ -356,7 +356,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZoneAndClient("DFW", CLIENT_ID);
+         QueueApi queueApi = api.getQueueApi("DFW", CLIENT_ID);
          QueueStats stats = queueApi.getStats("jclouds-test");
 
          assertEquals(stats.getMessagesStats().getClaimed(), 0);
diff --git a/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/internal/BaseMarconiApiLiveTest.java b/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/internal/BaseMarconiApiLiveTest.java
index 522229e..11b7001 100644
--- a/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/internal/BaseMarconiApiLiveTest.java
+++ b/openstack-marconi/src/test/java/org/jclouds/openstack/marconi/v1/internal/BaseMarconiApiLiveTest.java
@@ -27,21 +27,21 @@
 
 public class BaseMarconiApiLiveTest extends BaseApiLiveTest<MarconiApi> {
 
-   protected Set<String> zones = Sets.newHashSet();
+   protected Set<String> regions = Sets.newHashSet();
 
    public BaseMarconiApiLiveTest() {
       provider = "openstack-marconi";
    }
 
    @BeforeClass
-   public void setupZones() {
-      String key = "test." + provider + ".zone";
+   public void setupRegions() {
+      String key = "test." + provider + ".region";
 
       if (System.getProperties().containsKey(key)) {
-         zones.add(System.getProperty(key));
+         regions.add(System.getProperty(key));
       }
       else {
-         zones = api.getConfiguredZones();
+         regions = api.getConfiguredRegions();
       }
    }
 
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java
index b682d74..77d4d97 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/NeutronApi.java
@@ -70,7 +70,20 @@
 
    /**
     * Provides synchronous access to Router features.
+    *
+    * <h3>NOTE</h3>
+    * This API is an extension that may or may not be present in your OpenStack cloud. Use the Optional return type
+    * to determine if it is present.
     */
    @Delegate
+   Optional<? extends RouterApi> getRouterApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
+
+   /**
+    * Provides synchronous access to Router features.
+    * @deprecated Please use {@link #getRouterApi(String)} as this method will be removed in jclouds 3.0.
+    */
+   @Deprecated
+   @Delegate
    Optional<? extends RouterApi> getRouterExtensionApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
+
 }
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
index f5fb592..27b2205 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2/extensions/RouterApi.java
@@ -16,8 +16,19 @@
  */
 package org.jclouds.openstack.neutron.v2.extensions;
 
-import com.google.common.annotations.Beta;
-import org.jclouds.Fallbacks;
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
+import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
 import org.jclouds.collect.PagedIterable;
 import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
@@ -38,15 +49,7 @@
 import org.jclouds.rest.annotations.Transform;
 import org.jclouds.rest.annotations.WrapWith;
 
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.core.MediaType;
+import com.google.common.annotations.Beta;
 
 /**
  * Provides synchronous access to Router operations on the OpenStack Neutron API.
@@ -73,7 +76,7 @@
    @GET
    @Transform(RouterToPagedIterable.class)
    @ResponseParser(ParseRouters.class)
-   @Fallback(Fallbacks.EmptyPagedIterableOnNotFoundOr404.class)
+   @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
    PagedIterable<Router> list();
 
    /**
@@ -95,7 +98,7 @@
    @GET
    @Path("/{id}")
    @SelectJson("router")
-   @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+   @Fallback(NullOnNotFoundOr404.class)
    @Nullable
    Router get(@PathParam("id") String id);
 
@@ -121,7 +124,7 @@
    @PUT
    @Path("/{id}")
    @SelectJson("router")
-   @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+   @Fallback(NullOnNotFoundOr404.class)
    @Nullable
    Router update(@PathParam("id") String id, @WrapWith("router") Router.UpdateOptions router);
 
@@ -134,7 +137,7 @@
    @Named("router:delete")
    @DELETE
    @Path("/{id}")
-   @Fallback(Fallbacks.FalseOnNotFoundOr404.class)
+   @Fallback(FalseOnNotFoundOr404.class)
    boolean delete(@PathParam("id") String id);
 
    /**
@@ -148,7 +151,7 @@
    @PUT
    @Path("/{id}/add_router_interface")
    @MapBinder(EmptyOptions.class)
-   @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+   @Fallback(NullOnNotFoundOr404.class)
    @Nullable
    RouterInterface addInterfaceForSubnet(@PathParam("id") String routerId, @PayloadParam("subnet_id") String subnetId);
 
@@ -163,7 +166,7 @@
    @PUT
    @Path("/{id}/add_router_interface")
    @MapBinder(EmptyOptions.class)
-   @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+   @Fallback(NullOnNotFoundOr404.class)
    @Nullable
    RouterInterface addInterfaceForPort(@PathParam("id") String routerId, @PayloadParam("port_id") String portId);
 
@@ -177,7 +180,7 @@
    @PUT
    @Path("/{id}/remove_router_interface")
    @MapBinder(EmptyOptions.class)
-   @Fallback(Fallbacks.FalseOnNotFoundOr404.class)
+   @Fallback(FalseOnNotFoundOr404.class)
    boolean removeInterfaceForSubnet(@PathParam("id") String routerId, @PayloadParam("subnet_id") String subnetId);
 
    /**
@@ -190,6 +193,6 @@
    @PUT
    @Path("/{id}/remove_router_interface")
    @MapBinder(EmptyOptions.class)
-   @Fallback(Fallbacks.FalseOnNotFoundOr404.class)
+   @Fallback(FalseOnNotFoundOr404.class)
    boolean removeInterfaceForPort(@PathParam("id") String routerId, @PayloadParam("port_id") String portId);
 }
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApi.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApi.java
index 55515df..d2fc042 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApi.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApi.java
@@ -17,10 +17,13 @@
 
 package org.jclouds.openstack.neutron.v2_0;
 
-import com.google.common.base.Optional;
-import com.google.inject.Provides;
+import java.io.Closeable;
+import java.util.Set;
+
 import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.Region;
 import org.jclouds.location.Zone;
+import org.jclouds.location.functions.RegionToEndpoint;
 import org.jclouds.location.functions.ZoneToEndpoint;
 import org.jclouds.openstack.neutron.v2_0.extensions.RouterApi;
 import org.jclouds.openstack.neutron.v2_0.features.NetworkApi;
@@ -30,53 +33,104 @@
 import org.jclouds.rest.annotations.Delegate;
 import org.jclouds.rest.annotations.EndpointParam;
 
-import java.io.Closeable;
-import java.util.Set;
+import com.google.common.base.Optional;
+import com.google.inject.Provides;
 
 /**
  * Provides synchronous access to Neutron.
  * <p/>
  *
- * @see <a href="http://docs.openstack.org/api/openstack-network/2.0/content/">api doc</a>
- * @deprecated Use v2 instead of v2_0
+ * @deprecated Please use {@link org.jclouds.openstack.neutron.v2.NeutronApi} as this
+ *             interface will be removed in jclouds 3.0.
  */
 @Deprecated
 public interface NeutronApi extends Closeable {
+
+   /**
+    * @return the Region codes configured
+    */
+   @Provides
+   @Region
+   Set<String> getConfiguredRegions();
+
+   /**
+    * Provides synchronous access to Extension features.
+    */
+   @Delegate
+   ExtensionApi getExtensionApi(
+           @EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
+
+   /**
+    * Provides synchronous access to Network features.
+    */
+   @Delegate
+   NetworkApi getNetworkApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
+
+   /**
+    * Provides synchronous access to Subnet features
+    */
+   @Delegate
+   SubnetApi getSubnetApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
+
+   /**
+    * Provides synchronous access to Port features.
+    */
+   @Delegate
+   PortApi getPortApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
+
+   /**
+    * Provides synchronous access to Router features.
+    */
+   @Delegate
+   Optional<? extends RouterApi> getRouterApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
+
    /**
     * @return the Zone codes configured
+    * @deprecated Please use {@link #getConfiguredRegions()} as this method will be removed in jclouds 3.0.
     */
+   @Deprecated
    @Provides
    @Zone
    Set<String> getConfiguredZones();
 
    /**
     * Provides synchronous access to Extension features.
+    * @deprecated Please use {@link #getExtensionApi(String)} as this method will be removed in jclouds 3.0.
     */
+   @Deprecated
    @Delegate
    ExtensionApi getExtensionApiForZone(
            @EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone);
 
    /**
     * Provides synchronous access to Network features.
+    * @deprecated Please use {@link #getNetworkApi(String)} as this method will be removed in jclouds 3.0.
     */
+   @Deprecated
    @Delegate
    NetworkApi getNetworkApiForZone(@EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone);
 
    /**
-    * Provides synchronous access to Subnet features
+    * Provides synchronous access to Subnet features.
+    * @deprecated Please use {@link #getSubnetApi(String)} as this method will be removed in jclouds 3.0.
     */
+   @Deprecated
    @Delegate
    SubnetApi getSubnetApiForZone(@EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone);
 
    /**
     * Provides synchronous access to Port features.
+    * @deprecated Please use {@link #getPortApi(String)} as this method will be removed in jclouds 3.0.
     */
+   @Deprecated
    @Delegate
    PortApi getPortApiForZone(@EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone);
 
    /**
     * Provides synchronous access to Router features.
+    * @deprecated Please use {@link #getRouterApi(String)} as this method will be removed in jclouds 3.0.
     */
+   @Deprecated
    @Delegate
    Optional<? extends RouterApi> getRouterExtensionForZone(@EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone);
 }
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadata.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadata.java
index 1c09c11..6327f1e 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadata.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/NeutronApiMetadata.java
@@ -17,8 +17,12 @@
 
 package org.jclouds.openstack.neutron.v2_0;
 
-import com.google.common.collect.ImmutableSet;
-import com.google.inject.Module;
+import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
+import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
+
+import java.net.URI;
+import java.util.Properties;
+
 import org.jclouds.apis.ApiMetadata;
 import org.jclouds.openstack.keystone.v2_0.config.AuthenticationApiModule;
 import org.jclouds.openstack.keystone.v2_0.config.CredentialTypes;
@@ -28,11 +32,8 @@
 import org.jclouds.openstack.v2_0.ServiceType;
 import org.jclouds.rest.internal.BaseHttpApiMetadata;
 
-import java.net.URI;
-import java.util.Properties;
-
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
+import com.google.common.collect.ImmutableSet;
+import com.google.inject.Module;
 
 /**
  * Implementation of {@link org.jclouds.apis.ApiMetadata} for Neutron 2.0 API
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/config/NeutronHttpApiModule.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/config/NeutronHttpApiModule.java
index 521453a..fe3d74c 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/config/NeutronHttpApiModule.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/config/NeutronHttpApiModule.java
@@ -16,12 +16,11 @@
  */
 package org.jclouds.openstack.neutron.v2_0.config;
 
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.Multimap;
-import com.google.inject.Provides;
+import java.net.URI;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+import javax.inject.Provider;
+import javax.inject.Singleton;
 import org.jclouds.http.HttpErrorHandler;
 import org.jclouds.http.annotation.ClientError;
 import org.jclouds.http.annotation.Redirection;
@@ -35,27 +34,26 @@
 import org.jclouds.rest.ConfiguresHttpApi;
 import org.jclouds.rest.config.HttpApiModule;
 import org.jclouds.rest.functions.ImplicitOptionalConverter;
-
-import javax.inject.Provider;
-import javax.inject.Singleton;
-import java.net.URI;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.cache.CacheLoader;
+import com.google.common.cache.LoadingCache;
+import com.google.common.collect.ImmutableMultimap;
+import com.google.common.collect.Multimap;
+import com.google.inject.Provides;
 
 /**
  * Configures the Neutron connection.
  */
-@Deprecated
 @ConfiguresHttpApi
 public class NeutronHttpApiModule extends HttpApiModule<NeutronApi> {
-
+   
    @Override
    protected void configure() {
       bind(DateAdapter.class).to(Iso8601DateAdapter.class);
       bind(ImplicitOptionalConverter.class).to(PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet.class);
       super.configure();
    }
-
+   
    @Provides
    @Singleton
    public Multimap<URI, URI> aliases() {
@@ -74,7 +72,7 @@
                }
             });
    }
-
+   
    @Override
    protected void bindErrorHandlers() {
       bind(HttpErrorHandler.class).annotatedWith(Redirection.class).to(NeutronErrorHandler.class);
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApi.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApi.java
index b740271..3e8e5a2 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApi.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApi.java
@@ -17,9 +17,20 @@
 
 package org.jclouds.openstack.neutron.v2_0.extensions;
 
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.MediaType;
+
 import org.jclouds.Fallbacks;
 import org.jclouds.collect.PagedIterable;
 import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.openstack.keystone.v2_0.KeystoneFallbacks.EmptyPaginatedCollectionOnNotFoundOr404;
 import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
 import org.jclouds.openstack.neutron.v2_0.domain.ReferenceWithName;
 import org.jclouds.openstack.neutron.v2_0.domain.Router;
@@ -39,27 +50,14 @@
 import org.jclouds.rest.annotations.SelectJson;
 import org.jclouds.rest.annotations.Transform;
 
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.core.MediaType;
-
-import static org.jclouds.openstack.keystone.v2_0.KeystoneFallbacks.EmptyPaginatedCollectionOnNotFoundOr404;
-
 /**
  * Provides synchronous access to Router operations on the OpenStack Neutron API.
  * <p/>
  * A logical entity for forwarding packets across internal subnets and NATting them on external
  * networks through an appropriate external gateway.
  *
- * @see <a href=
- *      "http://docs.openstack.org/api/openstack-network/2.0/content/router_ext.html">api doc</a>
- * @deprecated Use v2 instead of v2_0
+ * @deprecated Please use {@link org.jclouds.openstack.neutron.v2.extensions.RouterApi} as this
+ *             interface will be removed in jclouds 3.0.
  */
 @Deprecated
 @Path("/v2.0/routers")
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworkDetails.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworkDetails.java
index d0a43d4..ffc3df2 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworkDetails.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworkDetails.java
@@ -38,6 +38,9 @@
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
+/**
+ * @author Nick Livens
+ */
 @Beta
 @Singleton
 public class ParseNetworkDetails extends ParseJson<Networks> {
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworks.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworks.java
index 9a22848..35d0f1c 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworks.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseNetworks.java
@@ -38,6 +38,9 @@
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
+/**
+ * @author Nick Livens
+ */
 @Beta
 @Singleton
 public class ParseNetworks extends ParseJson<Networks> {
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePortDetails.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePortDetails.java
index 3a0359b..e0c53ed 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePortDetails.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePortDetails.java
@@ -39,6 +39,9 @@
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
+/**
+ * @author Nick Livens
+ */
 @Beta
 @Singleton
 public class ParsePortDetails extends ParseJson<Ports> {
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePorts.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePorts.java
index 73ae114..9295df9 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePorts.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParsePorts.java
@@ -38,6 +38,9 @@
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
+/**
+ * @author Nick Livens
+ */
 @Beta
 @Singleton
 public class ParsePorts extends ParseJson<Ports> {
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseRouterDetails.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseRouterDetails.java
index 88fbf2e..be8e227 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseRouterDetails.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseRouterDetails.java
@@ -39,6 +39,9 @@
 import static com.google.common.base.Preconditions.checkNotNull;
 import static org.jclouds.openstack.v2_0.options.PaginationOptions.Builder.marker;
 
+/**
+ * @author Nick Livens
+ */
 @Beta
 @Singleton
 public class ParseRouterDetails extends ParseJson<Routers> {
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseRouters.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseRouters.java
index a9842ab..f1e70b1 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseRouters.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseRouters.java
@@ -39,6 +39,9 @@
 import static com.google.common.base.Preconditions.checkNotNull;
 import static org.jclouds.openstack.v2_0.options.PaginationOptions.Builder.marker;
 
+/**
+ * @author Nick Livens
+ */
 @Beta
 @Singleton
 public class ParseRouters extends ParseJson<Routers> {
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnetDetails.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnetDetails.java
index 0f63aec..4ef5928 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnetDetails.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnetDetails.java
@@ -38,6 +38,9 @@
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
+/**
+ * @author Nick Livens
+ */
 @Beta
 @Singleton
 public class ParseSubnetDetails extends ParseJson<Subnets> {
diff --git a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnets.java b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnets.java
index 4191d8b..ba7b731 100644
--- a/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnets.java
+++ b/openstack-neutron/src/main/java/org/jclouds/openstack/neutron/v2_0/functions/ParseSubnets.java
@@ -38,6 +38,9 @@
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
+/**
+ * @author Nick Livens
+ */
 @Beta
 @Singleton
 public class ParseSubnets extends ParseJson<Subnets> {
diff --git a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApiExpectTest.java b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApiExpectTest.java
index 222ca1a..8583428 100644
--- a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApiExpectTest.java
+++ b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApiExpectTest.java
@@ -42,6 +42,8 @@
 
 /**
  * Tests parsing and Guice wiring of RouterApi
+ *
+ * @author Nick Livens
  */
 @Test(groups = "unit", testName = "RouterApiExpectTest")
 public class RouterApiExpectTest extends BaseNeutronApiExpectTest {
diff --git a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApiLiveTest.java b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApiLiveTest.java
index d38b805..bc4f69a 100644
--- a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApiLiveTest.java
+++ b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/extensions/RouterApiLiveTest.java
@@ -42,6 +42,8 @@
 
 /**
  * Tests parsing and Guice wiring of RouterApi
+ *
+ * @author Nick Livens
  */
 @Test(groups = "live", testName = "RouterApiLiveTest")
 public class RouterApiLiveTest extends BaseNeutronApiLiveTest {
diff --git a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiExpectTest.java b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiExpectTest.java
index 40d676d..3e16b52 100644
--- a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiExpectTest.java
+++ b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiExpectTest.java
@@ -42,6 +42,8 @@
 
 /**
  * Tests parsing and Guice wiring of NetworkApi
+ *
+ * @author Nick Livens
  */
 @Test(groups = "unit", testName = "NetworkApiExpectTest")
 public class NetworkApiExpectTest extends BaseNeutronApiExpectTest {
diff --git a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiLiveTest.java b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiLiveTest.java
index e123c2e..6950a89 100644
--- a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiLiveTest.java
+++ b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/NetworkApiLiveTest.java
@@ -38,6 +38,8 @@
 
 /**
  * Tests parsing and Guice wiring of NetworkApi
+ *
+ * @author Nick Livens
  */
 @Test(groups = "live", testName = "NetworkApiLiveTest")
 public class NetworkApiLiveTest extends BaseNeutronApiLiveTest {
diff --git a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiExpectTest.java b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiExpectTest.java
index 2231e81..47a7af3 100644
--- a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiExpectTest.java
+++ b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiExpectTest.java
@@ -41,6 +41,8 @@
 
 /**
  * Tests parsing and Guice wiring of PortApi
+ *
+ * @author Nick Livens
  */
 @Test(groups = "unit", testName = "PortApiExpectTest")
 public class PortApiExpectTest extends BaseNeutronApiExpectTest {
diff --git a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiLiveTest.java b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiLiveTest.java
index 6a5d4a6..1a368b3 100644
--- a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiLiveTest.java
+++ b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/PortApiLiveTest.java
@@ -43,6 +43,8 @@
 
 /**
  * Tests PortApi in combination with the Network & SubnetApi
+ *
+ * @author Nick Livens
  */
 @Test(groups = "live", testName = "PortApiLiveTest")
 public class PortApiLiveTest extends BaseNeutronApiLiveTest {
diff --git a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiExpectTest.java b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiExpectTest.java
index 0cab1dd..581e6a1 100644
--- a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiExpectTest.java
+++ b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiExpectTest.java
@@ -40,6 +40,8 @@
 
 /**
  * Tests parsing and Guice wiring of SubnetApi
+ *
+ * @author Nick Livens
  */
 @Test(groups = "unit", testName = "SubnetApiExpectTest")
 public class SubnetApiExpectTest extends BaseNeutronApiExpectTest {
diff --git a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiLiveTest.java b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiLiveTest.java
index 3bde9a1..bd3574f 100644
--- a/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiLiveTest.java
+++ b/openstack-neutron/src/test/java/org/jclouds/openstack/neutron/v2_0/features/SubnetApiLiveTest.java
@@ -43,6 +43,8 @@
 
 /**
  * Tests subnet api in combination with the network api
+ *
+ * @author Nick Livens
  */
 @Test(groups = "live", testName = "SubnetApiLiveTest")
 public class SubnetApiLiveTest extends BaseNeutronApiLiveTest {
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/SwiftApi.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/SwiftApi.java
index 6d8b2a7..2b2cb6b 100644
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/SwiftApi.java
+++ b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/SwiftApi.java
@@ -41,10 +41,7 @@
  * <p/>
  * OpenStack Object Storage is an object-based storage system that stores content and metadata
  * as objects. You create, modify, and get objects and metadata using this API.
- * <p/>
- * This API is new to jclouds and hence is in Beta. That means we need people to use it and give us feedback. Based
- * on that feedback, minor changes to the interfaces may happen. This code will replace
- * {@code org.jclouds.openstack.swift.SwiftClient} in jclouds 2.0 and it is recommended you adopt it sooner than later.
+ * <p/>8
  */
 @Beta
 public interface SwiftApi extends Closeable {
@@ -54,73 +51,57 @@
    Set<String> getConfiguredRegions();
 
    @Delegate
+   AccountApi getAccountApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
+
+   @Delegate
+   BulkApi getBulkApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
+
+   @Delegate
+   ContainerApi getContainerApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
+
+   @Delegate
+   @Path("/{containerName}")
+   ObjectApi getObjectApiForContainer(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region,
+         @PathParam("containerName") String containerName);
+
+   @Delegate
+   @Path("/{containerName}")
+   StaticLargeObjectApi getStaticLargeObjectApiForContainer(
+         @EndpointParam(parser = RegionToEndpoint.class) @Nullable String region,
+         @PathParam("containerName") String containerName);
+
+   /**
+    * @deprecated Please use {@link #getAccountApi(String)} as this method will be removed in jclouds 2.0.
+    */
+   @Delegate
    AccountApi getAccountApiForRegion(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
 
+   /**
+    * @deprecated Please use {@link #getBulkApi(String)} as this method will be removed in jclouds 2.0.
+    */
    @Delegate
    BulkApi getBulkApiForRegion(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
 
+   /**
+    * @deprecated Please use {@link #getContainerApi(String)} as this method will be removed in jclouds 2.0.
+    */
    @Delegate
    ContainerApi getContainerApiForRegion(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
 
+   /**
+    * @deprecated Please use {@link #getObjectApiForContainer(String)} as this method will be removed in jclouds 2.0.
+    */
    @Delegate
    @Path("/{containerName}")
    ObjectApi getObjectApiForRegionAndContainer(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region,
          @PathParam("containerName") String containerName);
 
+   /**
+    * @deprecated Please use {@link #getStaticLargeObjectApiForContainer(String)} as this method will be removed in jclouds 2.0.
+    */
    @Delegate
    @Path("/{containerName}")
    StaticLargeObjectApi getStaticLargeObjectApiForRegionAndContainer(
          @EndpointParam(parser = RegionToEndpoint.class) @Nullable String region,
          @PathParam("containerName") String containerName);
-
-   /**
-    * @deprecated Please use {@link #getConfiguredRegions()} as this method will be removed in jclouds 1.8.
-    */
-   @Deprecated
-   @Provides
-   @Region
-   Set<String> configuredRegions();
-
-   /**
-    * @deprecated Please use {@link #getAccountApiForRegion(String)} as this method will be removed in jclouds 1.8.
-    */
-   @Deprecated
-   @Delegate
-   AccountApi accountApiInRegion(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
-
-   /**
-    * @deprecated Please use {@link #getBulkApiForRegion(String)} as this method will be removed in jclouds 1.8.
-    */
-   @Deprecated
-   @Delegate
-   BulkApi bulkApiInRegion(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
-
-   /**
-    * @deprecated Please use {@link #getContainerApiForRegion(String)} as this method will be removed in
-    *             jclouds 1.8.
-    */
-   @Deprecated
-   @Delegate
-   ContainerApi containerApiInRegion(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
-
-   /**
-    * @deprecated Please use {@link #getObjectApiForRegionAndContainer(String, String)} as this method will be
-    *             removed in jclouds 1.8.
-    */
-   @Deprecated
-   @Delegate
-   @Path("/{containerName}")
-   ObjectApi objectApiInRegionForContainer(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region,
-         @PathParam("containerName") String containerName);
-
-   /**
-    * @deprecated Please use {@link #getStaticLargeObjectApiForRegionAndContainer(String, String)} as this method
-    *             will be removed in jclouds 1.8.
-    */
-   @Deprecated
-   @Delegate
-   @Path("/{containerName}")
-   StaticLargeObjectApi staticLargeObjectApiInRegionForContainer(
-         @EndpointParam(parser = RegionToEndpoint.class) @Nullable String region,
-         @PathParam("containerName") String containerName);
 }
diff --git a/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/TemporaryUrlSignerMockTest.java b/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/TemporaryUrlSignerMockTest.java
index 903d5ec..f5de499 100644
--- a/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/TemporaryUrlSignerMockTest.java
+++ b/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/TemporaryUrlSignerMockTest.java
@@ -41,7 +41,7 @@
 
       try {
          SwiftApi api = api(server.getUrl("/").toString(), "openstack-swift");
-         String signature = TemporaryUrlSigner.checkApiEvery(api.getAccountApiForRegion("DFW"), 10000)
+         String signature = TemporaryUrlSigner.checkApiEvery(api.getAccountApi("DFW"), 10000)
                .sign("GET", "/v1/AUTH_account/container/object", 1323479485l);
 
          assertEquals(signature, "d9fc2067e52b06598421664cf6610bfc8fc431f6");
@@ -63,7 +63,7 @@
 
       try {
          SwiftApi api = api(server.getUrl("/").toString(), "openstack-swift");
-         TemporaryUrlSigner.checkApiEvery(api.accountApiInRegion("DFW"), 10000)
+         TemporaryUrlSigner.checkApiEvery(api.getAccountApi("DFW"), 10000)
             .sign("GET", "/v1/AUTH_account/container/object", 1323479485l);
       } finally {
          assertEquals(server.getRequestCount(), 2);
diff --git a/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/AccountApiLiveTest.java b/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/AccountApiLiveTest.java
index c62d238..7e54f4c 100644
--- a/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/AccountApiLiveTest.java
+++ b/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/AccountApiLiveTest.java
@@ -35,8 +35,8 @@
 public class AccountApiLiveTest extends BaseSwiftApiLiveTest<SwiftApi> {
 
    public void testGet() throws Exception {
-      for (String regionId : regions) {
-         AccountApi accountApi = api.getAccountApiForRegion(regionId);
+      for (String region : regions) {
+         AccountApi accountApi = api.getAccountApi(region);
          Account account = accountApi.get();
 
          assertNotNull(account);
@@ -47,8 +47,8 @@
    }
 
    public void testUpdateMetadata() throws Exception {
-      for (String regionId : regions) {
-         AccountApi accountApi = api.getAccountApiForRegion(regionId);
+      for (String region : regions) {
+         AccountApi accountApi = api.getAccountApi(region);
 
          Map<String, String> meta = ImmutableMap.of("MyAdd1", "foo", "MyAdd2", "bar");
 
@@ -59,8 +59,8 @@
    }
 
    public void testDeleteMetadata() throws Exception {
-      for (String regionId : regions) {
-         AccountApi accountApi = api.getAccountApiForRegion(regionId);
+      for (String region : regions) {
+         AccountApi accountApi = api.getAccountApi(region);
 
          Map<String, String> meta = ImmutableMap.of("MyDelete1", "foo", "MyDelete2", "bar");
 
diff --git a/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/internal/BaseSwiftApiLiveTest.java b/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/internal/BaseSwiftApiLiveTest.java
index 24c0fcd..d65638c 100644
--- a/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/internal/BaseSwiftApiLiveTest.java
+++ b/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/internal/BaseSwiftApiLiveTest.java
@@ -43,7 +43,7 @@
 public abstract class BaseSwiftApiLiveTest<A extends SwiftApi> extends BaseApiLiveTest<A> {
 
    protected Set<String> regions;
-   
+
    protected BaseSwiftApiLiveTest() {
       provider = "openstack-swift";
    }
@@ -70,8 +70,8 @@
 
    protected void deleteAllObjectsInContainer(String regionId, final String containerName) {
       Uninterruptibles.sleepUninterruptibly(10, TimeUnit.SECONDS);
-      
-      ObjectList objects = api.getObjectApiForRegionAndContainer(regionId, containerName).list(new ListContainerOptions());
+
+      ObjectList objects = api.getObjectApiForContainer(regionId, containerName).list(new ListContainerOptions());
       if (objects == null) {
          return;
       }
@@ -81,7 +81,7 @@
          }
       });
       if (!pathsToDelete.isEmpty()) {
-         BulkDeleteResponse response = api.getBulkApiForRegion(regionId).bulkDelete(pathsToDelete);
+         BulkDeleteResponse response = api.getBulkApi(regionId).bulkDelete(pathsToDelete);
          checkState(response.getErrors().isEmpty(), "Errors deleting paths %s: %s", pathsToDelete, response);
       }
    }
diff --git a/rackspace-autoscale-uk/src/main/java/org/jclouds/rackspace/autoscale/uk/AutoscaleUKProviderMetadata.java b/rackspace-autoscale-uk/src/main/java/org/jclouds/rackspace/autoscale/uk/AutoscaleUKProviderMetadata.java
index 710edfe..7f72b5c 100644
--- a/rackspace-autoscale-uk/src/main/java/org/jclouds/rackspace/autoscale/uk/AutoscaleUKProviderMetadata.java
+++ b/rackspace-autoscale-uk/src/main/java/org/jclouds/rackspace/autoscale/uk/AutoscaleUKProviderMetadata.java
@@ -17,15 +17,15 @@
 package org.jclouds.rackspace.autoscale.uk;
 
 import static org.jclouds.location.reference.LocationConstants.ISO3166_CODES;
-import static org.jclouds.location.reference.LocationConstants.PROPERTY_ZONE;
-import static org.jclouds.location.reference.LocationConstants.PROPERTY_ZONES;
+import static org.jclouds.location.reference.LocationConstants.PROPERTY_REGION;
+import static org.jclouds.location.reference.LocationConstants.PROPERTY_REGIONS;
 import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
 import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
 
 import java.net.URI;
 import java.util.Properties;
 
-import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.ZoneModule;
+import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.RegionModule;
 import org.jclouds.providers.ProviderMetadata;
 import org.jclouds.providers.internal.BaseProviderMetadata;
 import org.jclouds.rackspace.autoscale.v1.AutoscaleApiMetadata;
@@ -64,10 +64,10 @@
    public static Properties defaultProperties() {
       Properties properties = new Properties();
       properties.setProperty(CREDENTIAL_TYPE, CloudIdentityCredentialTypes.API_KEY_CREDENTIALS);
-      properties.setProperty(SERVICE_TYPE, ServiceType.AUTO_SCALE); 
+      properties.setProperty(SERVICE_TYPE, ServiceType.AUTO_SCALE);
 
-      properties.setProperty(PROPERTY_ZONES, "LON");
-      properties.setProperty(PROPERTY_ZONE + ".LON." + ISO3166_CODES, "GB-SLG");
+      properties.setProperty(PROPERTY_REGIONS, "LON");
+      properties.setProperty(PROPERTY_REGION + ".LON." + ISO3166_CODES, "GB-SLG");
       return properties;
    }
 
@@ -86,7 +86,7 @@
                .defaultModules(ImmutableSet.<Class<? extends Module>>builder()
                      .add(CloudIdentityAuthenticationApiModule.class)
                      .add(CloudIdentityAuthenticationModule.class)
-                     .add(ZoneModule.class)
+                     .add(RegionModule.class)
                      .add(AutoscaleParserModule.class)
                      .add(AutoscaleHttpApiModule.class)
                      .build())
diff --git a/rackspace-autoscale-uk/src/test/java/org/jclouds/rackspace/autoscale/uk/AutoscaleUKProviderMetadataExpectTest.java b/rackspace-autoscale-uk/src/test/java/org/jclouds/rackspace/autoscale/uk/AutoscaleUKProviderMetadataExpectTest.java
index 6bbeba2..64420de 100644
--- a/rackspace-autoscale-uk/src/test/java/org/jclouds/rackspace/autoscale/uk/AutoscaleUKProviderMetadataExpectTest.java
+++ b/rackspace-autoscale-uk/src/test/java/org/jclouds/rackspace/autoscale/uk/AutoscaleUKProviderMetadataExpectTest.java
@@ -28,7 +28,7 @@
 
 /**
  * This test ensures that the wiring in {@link AutoscaleUKProviderMetadata} is correct.
- * 
+ *
  */
 @Test(groups = "unit", testName = "AutoscaleUKProviderMetadataExpectTest")
 public class AutoscaleUKProviderMetadataExpectTest extends BaseAutoscaleApiExpectTest {
@@ -39,7 +39,7 @@
       this.credential = "myApiKey";
    }
 
-   public void testCanGetConfiguredZones() {
+   public void testCanGetConfiguredRegions() {
 
       HttpRequest authenticate = HttpRequest.builder().method("POST")
             .endpoint("https://lon.identity.api.rackspacecloud.com/v2.0/tokens")
@@ -55,7 +55,7 @@
 
       AutoscaleApi whenNovaRegionExists = requestSendsResponse(authenticate, authenticationResponse);
 
-      assertEquals(whenNovaRegionExists.getConfiguredZones(), ImmutableSet.of("LON"));
+      assertEquals(whenNovaRegionExists.getConfiguredRegions(), ImmutableSet.of("LON"));
 
    }
 
diff --git a/rackspace-autoscale-us/src/main/java/org/jclouds/rackspace/autoscale/us/AutoscaleUSProviderMetadata.java b/rackspace-autoscale-us/src/main/java/org/jclouds/rackspace/autoscale/us/AutoscaleUSProviderMetadata.java
index 5d5b1d5..ce1fde1 100644
--- a/rackspace-autoscale-us/src/main/java/org/jclouds/rackspace/autoscale/us/AutoscaleUSProviderMetadata.java
+++ b/rackspace-autoscale-us/src/main/java/org/jclouds/rackspace/autoscale/us/AutoscaleUSProviderMetadata.java
@@ -17,15 +17,15 @@
 package org.jclouds.rackspace.autoscale.us;
 
 import static org.jclouds.location.reference.LocationConstants.ISO3166_CODES;
-import static org.jclouds.location.reference.LocationConstants.PROPERTY_ZONE;
-import static org.jclouds.location.reference.LocationConstants.PROPERTY_ZONES;
+import static org.jclouds.location.reference.LocationConstants.PROPERTY_REGION;
+import static org.jclouds.location.reference.LocationConstants.PROPERTY_REGIONS;
 import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
 import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
 
 import java.net.URI;
 import java.util.Properties;
 
-import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.ZoneModule;
+import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.RegionModule;
 import org.jclouds.providers.ProviderMetadata;
 import org.jclouds.providers.internal.BaseProviderMetadata;
 import org.jclouds.rackspace.autoscale.v1.AutoscaleApiMetadata;
@@ -64,14 +64,14 @@
    public static Properties defaultProperties() {
       Properties properties = new Properties();
       properties.setProperty(CREDENTIAL_TYPE, CloudIdentityCredentialTypes.API_KEY_CREDENTIALS);
-      properties.setProperty(SERVICE_TYPE, ServiceType.AUTO_SCALE); 
+      properties.setProperty(SERVICE_TYPE, ServiceType.AUTO_SCALE);
 
-      properties.setProperty(PROPERTY_ZONES, "ORD,DFW,IAD,SYD,HKG");
-      properties.setProperty(PROPERTY_ZONE + ".ORD." + ISO3166_CODES, "US-IL");
-      properties.setProperty(PROPERTY_ZONE + ".DFW." + ISO3166_CODES, "US-TX");
-      properties.setProperty(PROPERTY_ZONE + ".IAD." + ISO3166_CODES, "US-VA");
-      properties.setProperty(PROPERTY_ZONE + ".SYD." + ISO3166_CODES, "AU-NSW");
-      properties.setProperty(PROPERTY_ZONE + ".HKG." + ISO3166_CODES, "HK");
+      properties.setProperty(PROPERTY_REGIONS, "ORD,DFW,IAD,SYD,HKG");
+      properties.setProperty(PROPERTY_REGION + ".ORD." + ISO3166_CODES, "US-IL");
+      properties.setProperty(PROPERTY_REGION + ".DFW." + ISO3166_CODES, "US-TX");
+      properties.setProperty(PROPERTY_REGION + ".IAD." + ISO3166_CODES, "US-VA");
+      properties.setProperty(PROPERTY_REGION + ".SYD." + ISO3166_CODES, "AU-NSW");
+      properties.setProperty(PROPERTY_REGION + ".HKG." + ISO3166_CODES, "HK");
 
       return properties;
    }
@@ -91,7 +91,7 @@
                .defaultModules(ImmutableSet.<Class<? extends Module>>builder()
                      .add(CloudIdentityAuthenticationApiModule.class)
                      .add(CloudIdentityAuthenticationModule.class)
-                     .add(ZoneModule.class)
+                     .add(RegionModule.class)
                      .add(AutoscaleParserModule.class)
                      .add(AutoscaleHttpApiModule.class)
                      .build())
diff --git a/rackspace-autoscale-us/src/main/java/org/jclouds/rackspace/autoscale/us/v1/AutoscaleUSProviderMetadata.java b/rackspace-autoscale-us/src/main/java/org/jclouds/rackspace/autoscale/us/v1/AutoscaleUSProviderMetadata.java
index 6d2b0d5..adc4ee8 100644
--- a/rackspace-autoscale-us/src/main/java/org/jclouds/rackspace/autoscale/us/v1/AutoscaleUSProviderMetadata.java
+++ b/rackspace-autoscale-us/src/main/java/org/jclouds/rackspace/autoscale/us/v1/AutoscaleUSProviderMetadata.java
@@ -17,15 +17,15 @@
 package org.jclouds.rackspace.autoscale.us.v1;
 
 import static org.jclouds.location.reference.LocationConstants.ISO3166_CODES;
-import static org.jclouds.location.reference.LocationConstants.PROPERTY_ZONE;
-import static org.jclouds.location.reference.LocationConstants.PROPERTY_ZONES;
+import static org.jclouds.location.reference.LocationConstants.PROPERTY_REGION;
+import static org.jclouds.location.reference.LocationConstants.PROPERTY_REGIONS;
 import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
 import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
 
 import java.net.URI;
 import java.util.Properties;
 
-import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.ZoneModule;
+import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.RegionModule;
 import org.jclouds.providers.ProviderMetadata;
 import org.jclouds.providers.internal.BaseProviderMetadata;
 import org.jclouds.rackspace.autoscale.v1.AutoscaleApiMetadata;
@@ -70,12 +70,12 @@
       properties.setProperty(CREDENTIAL_TYPE, CloudIdentityCredentialTypes.API_KEY_CREDENTIALS);
       properties.setProperty(SERVICE_TYPE, ServiceType.AUTO_SCALE);
 
-      properties.setProperty(PROPERTY_ZONES, "ORD,DFW,IAD,SYD,HKG");
-      properties.setProperty(PROPERTY_ZONE + ".ORD." + ISO3166_CODES, "US-IL");
-      properties.setProperty(PROPERTY_ZONE + ".DFW." + ISO3166_CODES, "US-TX");
-      properties.setProperty(PROPERTY_ZONE + ".IAD." + ISO3166_CODES, "US-VA");
-      properties.setProperty(PROPERTY_ZONE + ".SYD." + ISO3166_CODES, "AU-NSW");
-      properties.setProperty(PROPERTY_ZONE + ".HKG." + ISO3166_CODES, "HK");
+      properties.setProperty(PROPERTY_REGIONS, "ORD,DFW,IAD,SYD,HKG");
+      properties.setProperty(PROPERTY_REGION + ".ORD." + ISO3166_CODES, "US-IL");
+      properties.setProperty(PROPERTY_REGION + ".DFW." + ISO3166_CODES, "US-TX");
+      properties.setProperty(PROPERTY_REGION + ".IAD." + ISO3166_CODES, "US-VA");
+      properties.setProperty(PROPERTY_REGION + ".SYD." + ISO3166_CODES, "AU-NSW");
+      properties.setProperty(PROPERTY_REGION + ".HKG." + ISO3166_CODES, "HK");
 
       return properties;
    }
@@ -95,7 +95,7 @@
                .defaultModules(ImmutableSet.<Class<? extends Module>>builder()
                      .add(CloudIdentityAuthenticationApiModule.class)
                      .add(CloudIdentityAuthenticationModule.class)
-                     .add(ZoneModule.class)
+                     .add(RegionModule.class)
                      .add(AutoscaleParserModule.class)
                      .add(AutoscaleHttpApiModule.class)
                      .build())
diff --git a/rackspace-autoscale-us/src/test/java/org/jclouds/rackspace/autoscale/us/v1/AutoscaleUSProviderMetadataExpectTest.java b/rackspace-autoscale-us/src/test/java/org/jclouds/rackspace/autoscale/us/v1/AutoscaleUSProviderMetadataExpectTest.java
index 8dab4c2..41feb1d 100644
--- a/rackspace-autoscale-us/src/test/java/org/jclouds/rackspace/autoscale/us/v1/AutoscaleUSProviderMetadataExpectTest.java
+++ b/rackspace-autoscale-us/src/test/java/org/jclouds/rackspace/autoscale/us/v1/AutoscaleUSProviderMetadataExpectTest.java
@@ -53,10 +53,9 @@
             .payload(payloadFromResourceWithContentType("/access_rax_us.json", "application/json"))
             .build();
 
-      AutoscaleApi whenNovaRegionExists = requestSendsResponse(authenticate, authenticationResponse);
+      AutoscaleApi whenAutoscaleRegionExists = requestSendsResponse(authenticate, authenticationResponse);
 
-      assertEquals(whenNovaRegionExists.getConfiguredZones(), ImmutableSet.of("DFW", "ORD", "IAD"));
-
+      assertEquals(whenAutoscaleRegionExists.getConfiguredRegions(), ImmutableSet.of("DFW", "ORD", "IAD"));
    }
 
 }
diff --git a/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/AutoscaleApi.java b/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/AutoscaleApi.java
index 7fd8fd6..6d17492 100644
--- a/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/AutoscaleApi.java
+++ b/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/AutoscaleApi.java
@@ -23,8 +23,8 @@
 import javax.ws.rs.PathParam;
 
 import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.location.Zone;
-import org.jclouds.location.functions.ZoneToEndpoint;
+import org.jclouds.location.Region;
+import org.jclouds.location.functions.RegionToEndpoint;
 import org.jclouds.openstack.keystone.v2_0.domain.Tenant;
 import org.jclouds.rackspace.autoscale.v1.features.GroupApi;
 import org.jclouds.rackspace.autoscale.v1.features.PolicyApi;
@@ -36,33 +36,32 @@
 import com.google.inject.Provides;
 
 /**
- * Provides access to Rackspace Autoscale.
- *  
- * @see <a href="https://rackspace-autoscale.readthedocs.org">API Doc</a>
- * @see <a href="http://docs.autoscale.apiary.io/">Apiary API Doc</a>
+ * Provides access to Rackspace Auto Scale v1 API.
+ *
  */
-public interface AutoscaleApi extends Closeable{
+public interface AutoscaleApi extends Closeable {
    /**
-    * Provides a set of all zones available.
-    * 
-    * @return the Zone codes configured
+    * Provides a set of all regions available.
+    *
+    * @return the Region codes configured
     */
    @Provides
-   @Zone
-   Set<String> getConfiguredZones();
+   @Region
+   Set<String> getConfiguredRegions();
 
    /**
     * Provides access to all scaling Group features.
     */
    @Delegate
-   GroupApi getGroupApiForZone(@EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone);
+   GroupApi getGroupApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
+
 
    /**
     * Provides access to all policy features for scaling Groups.
     */
    @Delegate
    @Path("/groups/{groupId}")
-   PolicyApi getPolicyApiForZoneAndGroup(@EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone,
+   PolicyApi getPolicyApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region,
          @PathParam("groupId") String groupId);
 
    /**
@@ -70,13 +69,46 @@
     */
    @Delegate
    @Path("/groups/{groupId}/policies/{policyId}")
-   WebhookApi getWebhookApiForZoneAndGroupAndPolicy(@EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone,
+   WebhookApi getWebhookApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region,
          @PathParam("groupId") String groupId,
          @PathParam("policyId") String policyId);
 
    /**
     * Provides the Tenant.
     */
-   @Provides 
+   @Provides
    Optional<Tenant> getCurrentTenantId();
+
+   /**
+    * @return the configured zone codes
+    * @deprecated Please use {@link #getConfiguredRegions()} as this method will be removed in jclouds 3.0.
+    */
+   @Deprecated
+   @Provides
+   @Region
+   Set<String> getConfiguredZones();
+
+   /**
+    * Provides access to all policy features for scaling Groups.
+    * @deprecated Please use {@link #getPolicyApi(String, String)} as this method will be removed
+    *             in jclouds 3.0.
+    */
+   @Deprecated
+   @Delegate
+   @Path("/groups/{groupId}")
+   PolicyApi getPolicyApiForGroup(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region,
+         @PathParam("groupId") String groupId);
+
+   /**
+    * Provides access to webhook management features.
+    * @deprecated Please use {@link #getWebhookApi(String, String, String)} as this method will be removed
+    *             in jclouds 3.0.
+    */
+   @Deprecated
+   @Delegate
+   @Path("/groups/{groupId}/policies/{policyId}")
+   WebhookApi getWebhookApiForGroupAndPolicy(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region,
+         @PathParam("groupId") String groupId,
+         @PathParam("policyId") String policyId);
+
 }
diff --git a/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/AutoscaleApiMetadata.java b/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/AutoscaleApiMetadata.java
index 6ae4388..6ae367b 100644
--- a/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/AutoscaleApiMetadata.java
+++ b/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/AutoscaleApiMetadata.java
@@ -23,7 +23,7 @@
 import java.util.Properties;
 
 import org.jclouds.openstack.keystone.v2_0.config.CredentialTypes;
-import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.ZoneModule;
+import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.RegionModule;
 import org.jclouds.rackspace.autoscale.v1.config.AutoscaleHttpApiModule;
 import org.jclouds.rackspace.autoscale.v1.config.AutoscaleParserModule;
 import org.jclouds.rackspace.cloudidentity.v2_0.ServiceType;
@@ -35,8 +35,8 @@
 import com.google.inject.Module;
 
 /**
- * Implementation of {@link ApiMetadata} for the Rackspace Autoscale API
- * 
+ * Implementation of {@link org.jclouds.apis.ApiMetadata} for the Rackspace Auto Scale API.
+ *
  * @see AutoscaleApi
  */
 public class AutoscaleApiMetadata extends BaseHttpApiMetadata<AutoscaleApi> {
@@ -63,7 +63,7 @@
 
    public static class Builder extends BaseHttpApiMetadata.Builder<AutoscaleApi, Builder> {
 
-      protected Builder() {   
+      protected Builder() {
          id("rackspace-autoscale")
          .name("Rackspace Autoscale API")
          .identityName("${tenantName}:${userName} or ${userName}, if your keystone supports a default tenant")
@@ -76,7 +76,7 @@
          .defaultModules(ImmutableSet.<Class<? extends Module>>builder()
                .add(CloudIdentityAuthenticationApiModule.class)
                .add(CloudIdentityAuthenticationModule.class)
-               .add(ZoneModule.class)
+               .add(RegionModule.class)
                .add(AutoscaleParserModule.class)
                .add(AutoscaleHttpApiModule.class)
                .build());
diff --git a/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/domain/CreateScalingPolicy.java b/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/domain/CreateScalingPolicy.java
index 8ed7e1d..0ba3a82 100644
--- a/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/domain/CreateScalingPolicy.java
+++ b/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/domain/CreateScalingPolicy.java
@@ -23,15 +23,19 @@
 import java.util.EnumSet;
 import java.util.Map;
 
+
 import com.google.common.base.MoreObjects;
 import com.google.common.base.MoreObjects.ToStringHelper;
+
+import org.jclouds.rackspace.autoscale.v1.features.GroupApi;
+
 import com.google.common.base.Objects;
 import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableMap;
 
 /**
  * Auto Scale ScalingPolicy. This class is used for requests.
- * 
+ *
  * @see GroupApi#create(GroupConfiguration, LaunchConfiguration, java.util.List)
  * @see Group#getScalingPolicies()
  * @see ScalingPolicy
@@ -63,7 +67,7 @@
     */
    public String getName() {
       return this.name;
-   }   
+   }
 
    /**
     * @return the type for this ScalingPolicy.
@@ -84,7 +88,7 @@
 
    /**
     * @return the target for this ScalingPolicy. This is a numeric value, but could represent a 0-100% for some target types. Scale-down policies might have negative values.
-    * 
+    *
     * @see CreateScalingPolicy.Builder#target(int)
     */
    public String getTarget() {
@@ -147,7 +151,7 @@
       if (this == obj) return true;
       if (obj == null || getClass() != obj.getClass()) return false;
       CreateScalingPolicy that = CreateScalingPolicy.class.cast(obj);
-      return Objects.equal(this.name, that.name) && 
+      return Objects.equal(this.name, that.name) &&
             Objects.equal(this.type, that.type) &&
             Objects.equal(this.cooldown, that.cooldown) &&
             Objects.equal(this.target, that.target) &&
@@ -170,11 +174,11 @@
       return string().toString();
    }
 
-   public static Builder builder() { 
+   public static Builder builder() {
       return new Builder();
    }
 
-   public Builder toBuilder() { 
+   public Builder toBuilder() {
       return new Builder().fromScalingPolicy(this);
    }
 
@@ -186,7 +190,7 @@
       protected ScalingPolicyTargetType targetType;
       protected Map<String, String> args;
 
-      /** 
+      /**
        * @param name The name of this ScalingPolicy.
        * @return The builder object.
        * @see CreateScalingPolicy#getName()
@@ -196,7 +200,7 @@
          return this;
       }
 
-      /** 
+      /**
        * @param type The type for this ScalingPolicy.
        * @return The builder object.
        * @see ScalingPolicyType
@@ -207,7 +211,7 @@
          return this;
       }
 
-      /** 
+      /**
        * @param cooldown The cooldown of this ScalingPolicy.
        * @return The builder object.
        * @see CreateScalingPolicy#getCooldown()
@@ -217,7 +221,7 @@
          return this;
       }
 
-      /** 
+      /**
        * @param target The target of this ScalingPolicy.
        * @return The builder object.
        * @see CreateScalingPolicy#getTarget()
@@ -227,7 +231,7 @@
          return this;
       }
 
-      /** 
+      /**
        * @param targetType The target type of this ScalingPolicy.
        * @return The builder object.
        * @see ScalingPolicyTargetType
@@ -238,8 +242,8 @@
          return this;
       }
 
-      /** 
-       * @param cron This parameter specifies the recurring time when the policy will be executed as a cron entry. 
+      /**
+       * @param cron This parameter specifies the recurring time when the policy will be executed as a cron entry.
        * For example, if this is parameter is set to "1 0 * * *",
        * the policy will be executed at one minute past midnight (00:01)
        * every day of the month, and every day of the week.
@@ -255,7 +259,7 @@
          return this;
       }
 
-      /** 
+      /**
        * @param at This parameter specifies the time at which this policy will be executed.
        * This property is mutually exclusive with the "cron" parameter.
        * You can either provide "cron" or "at" for a given policy, but not both.
@@ -294,7 +298,7 @@
                .target(in.getTarget())
                .targetType(in.getTargetType())
                .scheduleArgs(in.getSchedulingArgs());
-      }        
+      }
    }
 
    @Override
diff --git a/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/domain/GroupConfiguration.java b/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/domain/GroupConfiguration.java
index 478e172..3b82707 100644
--- a/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/domain/GroupConfiguration.java
+++ b/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/domain/GroupConfiguration.java
@@ -22,6 +22,7 @@
 import java.beans.ConstructorProperties;
 import java.util.Map;
 
+import org.jclouds.rackspace.autoscale.v1.features.GroupApi;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.MoreObjects.ToStringHelper;
diff --git a/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/domain/GroupState.java b/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/domain/GroupState.java
index 346b9f0..3725acc 100644
--- a/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/domain/GroupState.java
+++ b/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/domain/GroupState.java
@@ -20,6 +20,7 @@
 import java.util.List;
 
 import org.jclouds.openstack.v2_0.domain.Link;
+import org.jclouds.rackspace.autoscale.v1.features.GroupApi;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.MoreObjects.ToStringHelper;
diff --git a/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/domain/LaunchConfiguration.java b/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/domain/LaunchConfiguration.java
index 0ba1c11..e22ec82 100644
--- a/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/domain/LaunchConfiguration.java
+++ b/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/domain/LaunchConfiguration.java
@@ -21,6 +21,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.jclouds.rackspace.autoscale.v1.features.GroupApi;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.MoreObjects.ToStringHelper;
diff --git a/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/features/GroupApi.java b/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/features/GroupApi.java
index d265b42..eb5d3eb 100644
--- a/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/features/GroupApi.java
+++ b/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/features/GroupApi.java
@@ -31,15 +31,16 @@
 
 import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
 import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
 import org.jclouds.rackspace.autoscale.v1.binders.BindCreateGroupToJson;
 import org.jclouds.rackspace.autoscale.v1.binders.BindLaunchConfigurationToJson;
 import org.jclouds.rackspace.autoscale.v1.binders.BindToGroupConfigurationRequestPayload;
+import org.jclouds.rackspace.autoscale.v1.domain.CreateScalingPolicy;
 import org.jclouds.rackspace.autoscale.v1.domain.Group;
 import org.jclouds.rackspace.autoscale.v1.domain.GroupConfiguration;
 import org.jclouds.rackspace.autoscale.v1.domain.GroupState;
 import org.jclouds.rackspace.autoscale.v1.domain.LaunchConfiguration;
-import org.jclouds.rackspace.autoscale.v1.domain.CreateScalingPolicy;
 import org.jclouds.rackspace.autoscale.v1.functions.ParseGroupLaunchConfigurationResponse;
 import org.jclouds.rackspace.autoscale.v1.functions.ParseGroupResponse;
 import org.jclouds.rest.annotations.Fallback;
@@ -57,6 +58,7 @@
  */
 @RequestFilters(AuthenticateRequest.class)
 @Consumes(MediaType.APPLICATION_JSON)
+@Path("/groups")
 public interface GroupApi extends Closeable {
 
    /**
@@ -70,13 +72,13 @@
     * @see CreateScalingPolicy
     * @see Group
     */
-   @Named("Group:create")
+   @Named("group:create")
    @POST
-   @Path("/groups")
-   @Fallback(NullOnNotFoundOr404.class)
    @MapBinder(BindCreateGroupToJson.class)
    @ResponseParser(ParseGroupResponse.class)
-   Group create(@PayloadParam("groupConfiguration") GroupConfiguration groupConfiguration, 
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
+   Group create(@PayloadParam("groupConfiguration") GroupConfiguration groupConfiguration,
          @PayloadParam("launchConfiguration") LaunchConfiguration launchConfiguration,
          @PayloadParam("scalingPolicies") List<CreateScalingPolicy> scalingPolicies);
 
@@ -87,9 +89,9 @@
     * @return true if successful.
     * @see GroupApi#resume(String)
     */
-   @Named("Groups:pause/{groupId}")
+   @Named("group:pause")
    @POST
-   @Path("/groups/{groupId}/pause")
+   @Path("/{groupId}/pause")
    @Fallback(FalseOnNotFoundOr404.class)
    boolean pause(@PathParam("groupId") String groupId);
 
@@ -100,9 +102,9 @@
     * @return true if successful.
     * @see GroupApi#pause(String)
     */
-   @Named("Groups:resume/{groupId}")
+   @Named("group:resume")
    @POST
-   @Path("/groups/{groupId}/resume")
+   @Path("/{groupId}/resume")
    @Fallback(FalseOnNotFoundOr404.class)
    boolean resume(@PathParam("groupId") String groupId);
 
@@ -112,9 +114,9 @@
     * @param groupId The id for the specified Group.
     * @return true if successful.
     */
-   @Named("Groups:delete/{id}")
+   @Named("group:delete")
    @DELETE
-   @Path("/groups/{id}")
+   @Path("/{id}")
    @Fallback(FalseOnNotFoundOr404.class)
    boolean delete(@PathParam("id") String groupId);
 
@@ -123,11 +125,12 @@
     * @param id The unique identifier of the scaling group.
     * @return Group Full details for the scaling group.
     */
-   @Named("Group:get/{id}")
+   @Named("group:get")
    @GET
-   @Path("/groups/{id}")
+   @Path("/{id}")
    @ResponseParser(ParseGroupResponse.class)
    @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
    Group get(@PathParam("id") String id);
 
    /**
@@ -136,11 +139,12 @@
     * @return The state of the Group.
     * @see GroupState
     */
-   @Named("Group:state")
+   @Named("group:getState")
    @GET
-   @Path("/groups/{id}/state")
+   @Path("/{id}/state")
    @SelectJson("group")
    @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
    GroupState getState(@PathParam("id") String id);
 
    /**
@@ -148,59 +152,60 @@
     * @return A list of group states for all scaling groups.
     * @see GroupState
     */
-   @Named("Group:states")
+   @Named("group:listGroupStates")
    @GET
-   @Path("/groups")
    @SelectJson("groups")
    FluentIterable<GroupState> listGroupStates();
-   
+
    /**
     * This operation gets the configuration for the scaling group.
     * @return The group configuration for the scaling group.
     * @see GroupConfiguration
     */
-   @Named("Group:configuration")
+   @Named("group:getGroupConfiguration")
    @GET
-   @Path("/groups/{groupId}/config")
+   @Path("/{groupId}/config")
    @SelectJson("groupConfiguration")
    @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
    GroupConfiguration getGroupConfiguration(@PathParam("groupId") String id);
-   
+
    /**
     * This operation updates the configuration for the scaling group.
     * @return true if successful.
     * @see GroupConfiguration
     */
-   @Named("Group:updateConfiguration")
+   @Named("group:updateGroupConfiguration")
    @PUT
-   @Path("/groups/{groupId}/config")
+   @Path("/{groupId}/config")
    @Fallback(FalseOnNotFoundOr404.class)
    @MapBinder(BindToGroupConfigurationRequestPayload.class)
    boolean updateGroupConfiguration(@PathParam("groupId") String id,
          @PayloadParam("groupConfiguration") GroupConfiguration groupConfiguration);
-   
+
    /**
     * This operation gets the launch configuration for the scaling group.
     * @return The launch configuration for the scaling group.
     * @see LaunchConfiguration
     */
-   @Named("Group:launchConfiguration")
+   @Named("group:getLaunchConfiguration")
    @GET
-   @Path("/groups/{groupId}/launch")
-   @Fallback(NullOnNotFoundOr404.class)
+   @Path("/{groupId}/launch")
    @ResponseParser(ParseGroupLaunchConfigurationResponse.class)
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
    LaunchConfiguration getLaunchConfiguration(@PathParam("groupId") String id);
-   
+
    /**
     * This operation updates the launch configuration for the scaling group.
     * @return true if successful.
     * @see LaunchConfiguration
     */
-   @Named("Group:updateLaunchConfiguration")
+   @Named("group:updateLaunchConfiguration")
    @PUT
-   @Path("/groups/{groupId}/launch")
+   @Path("/{groupId}/launch")
    @Fallback(FalseOnNotFoundOr404.class)
    @MapBinder(BindLaunchConfigurationToJson.class)
-   boolean updateLaunchConfiguration(@PathParam("groupId") String id, 
+   boolean updateLaunchConfiguration(@PathParam("groupId") String id,
          @PayloadParam("launchConfiguration") LaunchConfiguration launchConfiguration);
 }
diff --git a/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/features/PolicyApi.java b/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/features/PolicyApi.java
index 305ac0d..92e428c 100644
--- a/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/features/PolicyApi.java
+++ b/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/features/PolicyApi.java
@@ -33,6 +33,7 @@
 import org.jclouds.Fallbacks.EmptyFluentIterableOnNotFoundOr404;
 import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
 import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
 import org.jclouds.rackspace.autoscale.v1.binders.BindScalingPoliciesToJson;
 import org.jclouds.rackspace.autoscale.v1.binders.BindScalingPolicyToJson;
@@ -54,6 +55,7 @@
  */
 @RequestFilters(AuthenticateRequest.class)
 @Consumes(MediaType.APPLICATION_JSON)
+@Path("/policies")
 public interface PolicyApi extends Closeable {
    /**
     * Create a scaling policy.
@@ -62,9 +64,9 @@
     * @see CreateScalingPolicy
     * @see ScalingPolicy
     */
-   @Named("Policy:create")
+   @Named("policy:create")
    @POST
-   @Path("/policies")
+   //@Path("/policies")
    @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
    @MapBinder(BindScalingPoliciesToJson.class)
    @ResponseParser(ParseScalingPoliciesResponse.class)
@@ -75,9 +77,9 @@
     * @return A list of scaling policy responses.
     * @see ScalingPolicy
     */
-   @Named("Policy:list")
+   @Named("policy:list")
    @GET
-   @Path("/policies")
+   //@Path("/policies")
    @ResponseParser(ParseScalingPoliciesResponse.class)
    @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
    FluentIterable<ScalingPolicy> list();
@@ -87,11 +89,12 @@
     * @return Existing scaling policy details
     * @see ScalingPolicy
     */
-   @Named("Policy:get")
+   @Named("policy:get")
    @GET
-   @Path("/policies/{scalingPolicyId}")
+   @Path("/{scalingPolicyId}")
    @ResponseParser(ParseScalingPolicyResponse.class)
    @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
    ScalingPolicy get(@PathParam("scalingPolicyId") String scalingPolicyId);
 
    /**
@@ -99,21 +102,22 @@
     * @return true if successful.
     * @see CreateScalingPolicy
     */
-   @Named("Policy:update")
+   @Named("policy:update")
    @PUT
-   @Path("/policies/{scalingPolicyId}")
+   @Path("/{scalingPolicyId}")
    @MapBinder(BindScalingPolicyToJson.class)
    @Fallback(FalseOnNotFoundOr404.class)
-   boolean update(@PathParam("scalingPolicyId") String scalingPolicyId, @PayloadParam("scalingPolicy") CreateScalingPolicy scalingPolicy);
+   boolean update(@PathParam("scalingPolicyId") String scalingPolicyId,
+         @PayloadParam("scalingPolicy") CreateScalingPolicy scalingPolicy);
 
    /**
     * This operation deletes a specific scaling policy.
     * @return true if successful.
     * @see CreateScalingPolicy
     */
-   @Named("Policy:delete")
+   @Named("policy:delete")
    @DELETE
-   @Path("/policies/{scalingPolicyId}")
+   @Path("/{scalingPolicyId}")
    @Fallback(FalseOnNotFoundOr404.class)
    boolean delete(@PathParam("scalingPolicyId") String scalingPolicyId);
 
@@ -122,9 +126,9 @@
     * @return true if successful.
     * @see CreateScalingPolicy
     */
-   @Named("Policy:execute")
+   @Named("policy:execute")
    @POST
-   @Path("/policies/{scalingPolicyId}/execute")
+   @Path("/{scalingPolicyId}/execute")
    @Fallback(FalseOnNotFoundOr404.class)
    boolean execute(@PathParam("scalingPolicyId") String scalingPolicyId);
 }
diff --git a/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/features/WebhookApi.java b/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/features/WebhookApi.java
index 6eb8ef1..f37cec9 100644
--- a/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/features/WebhookApi.java
+++ b/rackspace-autoscale/src/main/java/org/jclouds/rackspace/autoscale/v1/features/WebhookApi.java
@@ -33,11 +33,14 @@
 import org.jclouds.Fallbacks.EmptyFluentIterableOnNotFoundOr404;
 import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
 import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
 import org.jclouds.rackspace.autoscale.v1.binders.BindWebhookToJson;
 import org.jclouds.rackspace.autoscale.v1.binders.BindWebhookUpdateToJson;
 import org.jclouds.rackspace.autoscale.v1.binders.BindWebhooksToJson;
+import org.jclouds.rackspace.autoscale.v1.domain.CreateScalingPolicy;
 import org.jclouds.rackspace.autoscale.v1.domain.CreateWebhook;
+import org.jclouds.rackspace.autoscale.v1.domain.Group;
 import org.jclouds.rackspace.autoscale.v1.domain.Webhook;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.MapBinder;
@@ -48,15 +51,16 @@
 import com.google.common.collect.FluentIterable;
 
 /**
- * The API for controlling autoscale webhooks.
+ * The API for controlling Auto Scale Webhooks.
  */
 @RequestFilters(AuthenticateRequest.class)
 @Consumes(MediaType.APPLICATION_JSON)
+@Path("/webhooks")
 public interface WebhookApi extends Closeable {
    /**
     * Create a webhook.
     * @param name The webhook name. Required.
-    * @param metadata A map of associated metadata. Use String keys. Required. 
+    * @param metadata A map of associated metadata. Use String keys. Required.
     * @return WebhookResponse The webhook created by this call.
     * @see CreateWebhook
     * @see Webhook
@@ -65,11 +69,11 @@
     */
    @Named("Webhook:create")
    @POST
-   @Path("/webhooks")
-   @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
-   @MapBinder(BindWebhookToJson.class)
    @SelectJson("webhooks")
-   FluentIterable<Webhook> create(@PayloadParam("name") String name, @PayloadParam("metadata") Map<String, Object> metadata);
+   @MapBinder(BindWebhookToJson.class)
+   @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
+   FluentIterable<Webhook> create(@PayloadParam("name") String name,
+         @PayloadParam("metadata") Map<String, Object> metadata);
 
    /**
     * Create webhooks.
@@ -80,14 +84,13 @@
     * @see Group
     * @see CreateScalingPolicy
     */
-   @Named("Webhook:create")
+   @Named("webhook:create")
    @POST
-   @Path("/webhooks")
-   @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
-   @MapBinder(BindWebhooksToJson.class)
    @SelectJson("webhooks")
+   @MapBinder(BindWebhooksToJson.class)
+   @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
    FluentIterable<Webhook> create(@PayloadParam("webhooks") List<CreateWebhook> webhooks);
-   
+
    /**
     * List webhooks.
     * @return A list of webhooks
@@ -98,9 +101,8 @@
     */
    @Named("Webhook:list")
    @GET
-   @Path("/webhooks")
-   @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
    @SelectJson("webhooks")
+   @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
    FluentIterable<Webhook> list();
 
    /**
@@ -112,11 +114,12 @@
     * @see Group
     * @see CreateScalingPolicy
     */
-   @Named("Webhook:get")
+   @Named("webhook:get")
    @GET
-   @Path("/webhooks/{webhookId}")   
-   @Fallback(NullOnNotFoundOr404.class)
+   @Path("/{webhookId}")
    @SelectJson("webhook")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
    Webhook get(@PathParam("webhookId") String id);
 
    /**
@@ -130,12 +133,13 @@
     * @see Group
     * @see CreateScalingPolicy
     */
-   @Named("Webhook:update")
+   @Named("webhook:update")
    @PUT
-   @Path("/webhooks/{webhookId}")   
-   @Fallback(FalseOnNotFoundOr404.class)
+   @Path("/{webhookId}")
    @MapBinder(BindWebhookUpdateToJson.class)
-   boolean update(@PathParam("webhookId") String id, @PayloadParam("name") String name, @PayloadParam("metadata") Map<String, Object> metadata);
+   @Fallback(FalseOnNotFoundOr404.class)
+   boolean update(@PathParam("webhookId") String id, @PayloadParam("name") String name,
+         @PayloadParam("metadata") Map<String, Object> metadata);
 
    /**
     * Delete a webhook.
@@ -146,9 +150,9 @@
     * @see Group
     * @see CreateScalingPolicy
     */
-   @Named("Webhook:delete")
+   @Named("webhook:delete")
    @DELETE
-   @Path("/webhooks/{webhookId}")   
+   @Path("/{webhookId}")
    @Fallback(FalseOnNotFoundOr404.class)
    boolean delete(@PathParam("webhookId") String id);
 }
diff --git a/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/GroupApiLiveTest.java b/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/GroupApiLiveTest.java
index 0d2e07c..edb5d53 100644
--- a/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/GroupApiLiveTest.java
+++ b/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/GroupApiLiveTest.java
@@ -59,10 +59,10 @@
    @BeforeClass(groups = { "integration", "live" })
    public void setup() {
       super.setup();
-      for (String zone : api.getConfiguredZones()) {
+      for (String region : api.getConfiguredRegions()) {
          List<Group> createdGroupList = Lists.newArrayList();
-         created.put(zone, createdGroupList);
-         GroupApi groupApi = api.getGroupApiForZone(zone);
+         created.put(region, createdGroupList);
+         GroupApi groupApi = api.getGroupApi(region);
 
          GroupConfiguration groupConfiguration = GroupConfiguration.builder().maxEntities(10).cooldown(360)
                .name("testscalinggroup198547").minEntities(0)
@@ -99,14 +99,14 @@
          assertNotNull(g.getId());
          assertEquals(g.getLinks().size(), 1);
          assertEquals(g.getLinks().get(0).getHref().toString(),
-               "https://" + zone.toLowerCase() + ".autoscale.api.rackspacecloud.com/v1.0/" + api.getCurrentTenantId().get().getId() + "/groups/" + g.getId() + "/");
+               "https://" + region.toLowerCase() + ".autoscale.api.rackspacecloud.com/v1.0/" + api.getCurrentTenantId().get().getId() + "/groups/" + g.getId() + "/");
          assertEquals(g.getLinks().get(0).getRelation(), Link.Relation.SELF);
 
          assertNotNull(g.getScalingPolicies().get(0).getId());
          assertEquals(g.getScalingPolicies().get(0).getLinks().size(), 1);
          assertEquals(
                g.getScalingPolicies().get(0).getLinks().get(0).getHref().toString(),
-               "https://" + zone.toLowerCase() + ".autoscale.api.rackspacecloud.com/v1.0/" + api.getCurrentTenantId().get().getId() + "/groups/" + g.getId() + "/policies/" + g.getScalingPolicies().get(0).getId() + "/");
+               "https://" + region.toLowerCase() + ".autoscale.api.rackspacecloud.com/v1.0/" + api.getCurrentTenantId().get().getId() + "/groups/" + g.getId() + "/policies/" + g.getScalingPolicies().get(0).getId() + "/");
          assertEquals(g.getScalingPolicies().get(0).getLinks().get(0).getRelation(), Link.Relation.SELF);
          assertEquals(g.getScalingPolicies().get(0).getCooldown(), 1);
          assertEquals(g.getScalingPolicies().get(0).getTarget(), "1");
@@ -145,9 +145,9 @@
 
    @Test
    public void testGetGroup() {
-      for (String zone : api.getConfiguredZones()) {
-         GroupApi groupApi = api.getGroupApiForZone(zone);
-         String groupId = created.get(zone).get(0).getId();
+      for (String region : api.getConfiguredRegions()) {
+         GroupApi groupApi = api.getGroupApi(region);
+         String groupId = created.get(region).get(0).getId();
          Group testGroup = groupApi.get(groupId);
          assertEquals(testGroup.getId(), groupId);
          assertEquals(testGroup.getGroupConfiguration().getCooldown(), 360);
@@ -158,9 +158,9 @@
 
    @Test
    public void testGetState() {
-      for (String zone : api.getConfiguredZones()) {
-         GroupApi groupApi = api.getGroupApiForZone(zone);
-         String groupId = created.get(zone).get(0).getId();
+      for (String region : api.getConfiguredRegions()) {
+         GroupApi groupApi = api.getGroupApi(region);
+         String groupId = created.get(region).get(0).getId();
          GroupState testGroup = groupApi.getState(groupId);
          assertNull(testGroup.getId()); // The id recently changed to not be included when getting state.
       }
@@ -168,10 +168,10 @@
 
    @Test
    public void testListGroups() {
-      for (String zone : api.getConfiguredZones()) {
-         GroupApi groupApi = api.getGroupApiForZone(zone);
+      for (String region : api.getConfiguredRegions()) {
+         GroupApi groupApi = api.getGroupApi(region);
          FluentIterable<GroupState> groupsList = groupApi.listGroupStates();
-         String groupId = created.get(zone).get(0).getId();
+         String groupId = created.get(region).get(0).getId();
          for (GroupState groupState : groupsList) {
             if (groupId.equals(groupState.getId())) {
                return;
@@ -184,18 +184,18 @@
    /* TODO: uncomment when implemented
    @Test
    public void testPause() {
-      for (String zone : api.getConfiguredZones()) {
-         GroupApi groupApi = api.getGroupApiForZone(zone);
-         String groupId = created.get(zone).get(0).getId();
+      for (String region : api.getConfiguredRegions()) {
+         GroupApi groupApi = api.getGroupApiForRegions(region);
+         String groupId = created.get(region).get(0).getId();
          assertTrue(groupApi.pause(groupId));
       }
    }
 
    @Test
    public void testResume() {
-      for (String zone : api.getConfiguredZones()) {
-         GroupApi groupApi = api.getGroupApiForZone(zone);
-         String groupId = created.get(zone).get(0).getId();
+      for (String region : api.getConfiguredRegions()) {
+         GroupApi groupApi = api.getGroupApiForRegions(region);
+         String groupId = created.get(region).get(0).getId();
          assertTrue(groupApi.resume(groupId));
       }
    }
@@ -203,9 +203,9 @@
 
    @Test
    public void testGetGroupConfiguration() {
-      for (String zone : api.getConfiguredZones()) {
-         GroupApi groupApi = api.getGroupApiForZone(zone);
-         String groupId = created.get(zone).get(0).getId();
+      for (String region : api.getConfiguredRegions()) {
+         GroupApi groupApi = api.getGroupApi(region);
+         String groupId = created.get(region).get(0).getId();
          GroupConfiguration testGroupConfiguration = groupApi.getGroupConfiguration(groupId);
          assertEquals(testGroupConfiguration.getCooldown(), 360);
          assertEquals(testGroupConfiguration.getMaxEntities(), 10);
@@ -215,9 +215,9 @@
 
    @Test
    public void testGetGroupLaunchConfiguration() {
-      for (String zone : api.getConfiguredZones()) {
-         GroupApi groupApi = api.getGroupApiForZone(zone);
-         String groupId = created.get(zone).get(0).getId();
+      for (String region : api.getConfiguredRegions()) {
+         GroupApi groupApi = api.getGroupApi(region);
+         String groupId = created.get(region).get(0).getId();
          LaunchConfiguration testLaunchConfiguration = groupApi.getLaunchConfiguration(groupId);
          assertEquals(testLaunchConfiguration.getLoadBalancers().get(0).getPort(), 8080);
          assertEquals(testLaunchConfiguration.getType(), LaunchConfigurationType.LAUNCH_SERVER);
@@ -227,9 +227,9 @@
 
    @Test
    public void testUpdateLaunchConfiguration() {
-      for (String zone : api.getConfiguredZones()) {
-         GroupApi groupApi = api.getGroupApiForZone(zone);
-         String groupId = created.get(zone).get(0).getId();
+      for (String region : api.getConfiguredRegions()) {
+         GroupApi groupApi = api.getGroupApi(region);
+         String groupId = created.get(region).get(0).getId();
 
          LaunchConfiguration launchConfiguration = LaunchConfiguration
                .builder()
@@ -255,9 +255,9 @@
 
    @Test
    public void testUpdateGroupConfiguration() {
-      for (String zone : api.getConfiguredZones()) {
-         GroupApi groupApi = api.getGroupApiForZone(zone);
-         String groupId = created.get(zone).get(0).getId();
+      for (String region : api.getConfiguredRegions()) {
+         GroupApi groupApi = api.getGroupApi(region);
+         String groupId = created.get(region).get(0).getId();
 
          GroupConfiguration groupConfiguration = GroupConfiguration.builder().maxEntities(10).cooldown(360)
                .name("testscalinggroup198547").minEntities(0)
@@ -272,9 +272,9 @@
    @Override
    @AfterClass(groups = { "integration", "live" })
    public void tearDown() {
-      for (String zone : api.getConfiguredZones()) {
-         GroupApi groupApi = api.getGroupApiForZone(zone);
-         for (Group group : created.get(zone)) {
+      for (String region : api.getConfiguredRegions()) {
+         GroupApi groupApi = api.getGroupApi(region);
+         for (Group group : created.get(region)) {
             if (!groupApi.delete(group.getId()))
                throw new RuntimeException("Could not delete an autoscale group after tests!");
          }
diff --git a/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/GroupApiMockTest.java b/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/GroupApiMockTest.java
index 0ef954e..2a3742c 100644
--- a/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/GroupApiMockTest.java
+++ b/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/GroupApiMockTest.java
@@ -60,7 +60,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          GroupConfiguration groupConfiguration = GroupConfiguration.builder()
                .maxEntities(10)
@@ -157,7 +157,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          GroupConfiguration groupConfiguration = GroupConfiguration.builder()
                .maxEntities(10)
@@ -211,7 +211,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          FluentIterable<GroupState> groupStates = api.listGroupStates();
 
@@ -248,7 +248,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          FluentIterable<GroupState> groupStates = api.listGroupStates();
 
@@ -274,7 +274,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          Group g = api.get("1234567890");
 
@@ -301,7 +301,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          Group g = api.get("1234567890");
 
@@ -327,7 +327,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          boolean success = api.delete("1234567890");
 
@@ -353,7 +353,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          boolean success = api.delete("1234567890");
 
@@ -379,7 +379,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          GroupState gs = api.getState("1234567890");
 
@@ -407,7 +407,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          GroupState gs = api.getState("1234567890");
 
@@ -433,7 +433,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          boolean success = api.pause("1234567890");
 
@@ -459,7 +459,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          boolean success = api.pause("1234567890");
 
@@ -485,7 +485,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          boolean success = api.resume("1234567890");
 
@@ -511,7 +511,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          boolean success = api.resume("1234567890");
 
@@ -537,7 +537,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          GroupConfiguration gc = api.getGroupConfiguration("1234567890");
 
@@ -564,7 +564,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          GroupConfiguration gc = api.getGroupConfiguration("1234567890");
 
@@ -590,7 +590,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          LaunchConfiguration lc = api.getLaunchConfiguration("1234567890");
 
@@ -617,7 +617,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          LaunchConfiguration lc = api.getLaunchConfiguration("1234567890");
 
@@ -643,7 +643,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          GroupConfiguration gc = GroupConfiguration.builder()
                .name("workers")
@@ -677,7 +677,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          GroupConfiguration gc = GroupConfiguration.builder()
                .name("workers")
@@ -711,7 +711,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          LaunchConfiguration lc = LaunchConfiguration.builder()
                .loadBalancers(ImmutableList.of(LoadBalancer.builder().port(8080).id(9099).build()))
@@ -749,7 +749,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         GroupApi api = autoscaleApi.getGroupApiForZone("DFW");
+         GroupApi api = autoscaleApi.getGroupApi("DFW");
 
          LaunchConfiguration lc = LaunchConfiguration.builder()
                .loadBalancers(ImmutableList.of(LoadBalancer.builder().port(8080).id(9099).build()))
diff --git a/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/ScalingPolicyApiLiveTest.java b/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/ScalingPolicyApiLiveTest.java
index a1c440c..65dcd2c 100644
--- a/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/ScalingPolicyApiLiveTest.java
+++ b/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/ScalingPolicyApiLiveTest.java
@@ -60,10 +60,10 @@
    @BeforeClass(groups = { "integration", "live" })
    public void setup() {
       super.setup();
-      for (String zone : api.getConfiguredZones()) {
+      for (String region : api.getConfiguredRegions()) {
          List<Group> createdGroupList = Lists.newArrayList();
-         created.put(zone, createdGroupList);
-         GroupApi groupApi = api.getGroupApiForZone(zone);
+         created.put(region, createdGroupList);
+         GroupApi groupApi = api.getGroupApi(region);
 
          GroupConfiguration groupConfiguration = GroupConfiguration.builder().maxEntities(10).cooldown(3)
                .name("testscalinggroup198547").minEntities(0)
@@ -100,14 +100,14 @@
          assertNotNull(g.getId());
          assertEquals(g.getLinks().size(), 1);
          assertEquals(g.getLinks().get(0).getHref().toString(),
-               "https://" + zone.toLowerCase() + ".autoscale.api.rackspacecloud.com/v1.0/" + api.getCurrentTenantId().get().getId() + "/groups/" + g.getId() + "/");
+               "https://" + region.toLowerCase() + ".autoscale.api.rackspacecloud.com/v1.0/" + api.getCurrentTenantId().get().getId() + "/groups/" + g.getId() + "/");
          assertEquals(g.getLinks().get(0).getRelation(), Link.Relation.SELF);
 
          assertNotNull(g.getScalingPolicies().get(0).getId());
          assertEquals(g.getScalingPolicies().get(0).getLinks().size(), 1);
          assertEquals(
                g.getScalingPolicies().get(0).getLinks().get(0).getHref().toString(),
-               "https://" + zone.toLowerCase() + ".autoscale.api.rackspacecloud.com/v1.0/" + api.getCurrentTenantId().get().getId() + "/groups/" + g.getId() + "/policies/" + g.getScalingPolicies().get(0).getId() + "/");
+               "https://" + region.toLowerCase() + ".autoscale.api.rackspacecloud.com/v1.0/" + api.getCurrentTenantId().get().getId() + "/groups/" + g.getId() + "/policies/" + g.getScalingPolicies().get(0).getId() + "/");
          assertEquals(g.getScalingPolicies().get(0).getLinks().get(0).getRelation(), Link.Relation.SELF);
          assertEquals(g.getScalingPolicies().get(0).getCooldown(), 3);
          assertEquals(g.getScalingPolicies().get(0).getTarget(), "1");
@@ -146,9 +146,9 @@
 
    @Test
    public void testCreatePolicy() {
-      for (String zone : api.getConfiguredZones()) {
+      for (String region : api.getConfiguredRegions()) {
 
-         PolicyApi policyApi = api.getPolicyApiForZoneAndGroup(zone, created.get(zone).get(0).getId());
+         PolicyApi policyApi = api.getPolicyApi(region, created.get(region).get(0).getId());
 
          List<CreateScalingPolicy> scalingPolicies = Lists.newArrayList();
 
@@ -170,9 +170,9 @@
 
    @Test
    public void testCreateScheduleCronPolicy() {
-      for (String zone : api.getConfiguredZones()) {
+      for (String region : api.getConfiguredRegions()) {
 
-         PolicyApi policyApi = api.getPolicyApiForZoneAndGroup(zone, created.get(zone).get(0).getId());
+         PolicyApi policyApi = api.getPolicyApi(region, created.get(region).get(0).getId());
 
          List<CreateScalingPolicy> scalingPolicies = Lists.newArrayList();
 
@@ -197,9 +197,9 @@
 
    @Test
    public void testCreateScheduleAtPolicy() {
-      for (String zone : api.getConfiguredZones()) {
+      for (String region : api.getConfiguredRegions()) {
 
-         PolicyApi policyApi = api.getPolicyApiForZoneAndGroup(zone, created.get(zone).get(0).getId());
+         PolicyApi policyApi = api.getPolicyApi(region, created.get(region).get(0).getId());
 
          List<CreateScalingPolicy> scalingPolicies = Lists.newArrayList();
 
@@ -224,9 +224,9 @@
 
    @Test
    public void testListPolicy() {
-      for (String zone : api.getConfiguredZones()) {
+      for (String region : api.getConfiguredRegions()) {
 
-         PolicyApi policyApi = api.getPolicyApiForZoneAndGroup(zone, created.get(zone).get(0).getId());
+         PolicyApi policyApi = api.getPolicyApi(region, created.get(region).get(0).getId());
 
          FluentIterable<ScalingPolicy> scalingPolicyResponse = policyApi.list();
          assertNotNull(scalingPolicyResponse.iterator().next().getId());
@@ -235,9 +235,9 @@
 
    @Test
    public void testGetPolicy() {
-      for (String zone : api.getConfiguredZones()) {
+      for (String region : api.getConfiguredRegions()) {
 
-         PolicyApi policyApi = api.getPolicyApiForZoneAndGroup(zone, created.get(zone).get(0).getId());
+         PolicyApi policyApi = api.getPolicyApi(region, created.get(region).get(0).getId());
 
          assertNotNull(policyApi);
          ScalingPolicy listResponse = policyApi.list().iterator().next();
@@ -254,9 +254,9 @@
 
    @Test
    public void testUpdatePolicy() {
-      for (String zone : api.getConfiguredZones()) {
+      for (String region : api.getConfiguredRegions()) {
 
-         PolicyApi policyApi = api.getPolicyApiForZoneAndGroup(zone, created.get(zone).get(0).getId());
+         PolicyApi policyApi = api.getPolicyApi(region, created.get(region).get(0).getId());
 
          List<CreateScalingPolicy> scalingPolicies = Lists.newArrayList();
 
@@ -298,9 +298,9 @@
 
    @Test
    public void testDeletePolicy() {
-      for (String zone : api.getConfiguredZones()) {
+      for (String region : api.getConfiguredRegions()) {
 
-         PolicyApi policyApi = api.getPolicyApiForZoneAndGroup(zone, created.get(zone).get(0).getId());
+         PolicyApi policyApi = api.getPolicyApi(region, created.get(region).get(0).getId());
 
          List<CreateScalingPolicy> scalingPolicies = Lists.newArrayList();
 
@@ -311,7 +311,7 @@
                .targetType(ScalingPolicyTargetType.INCREMENTAL)
                .target("1")
                .build();
-         scalingPolicies.add(scalingPolicy);         
+         scalingPolicies.add(scalingPolicy);
 
          FluentIterable<ScalingPolicy> scalingPolicyResponse = policyApi.create(scalingPolicies);
          String policyId = scalingPolicyResponse.iterator().next().getId();
@@ -324,9 +324,9 @@
 
    @Test
    public void testExecutePolicy() {
-      for (String zone : api.getConfiguredZones()) {
+      for (String region : api.getConfiguredRegions()) {
 
-         PolicyApi policyApi = api.getPolicyApiForZoneAndGroup(zone, created.get(zone).get(0).getId());
+         PolicyApi policyApi = api.getPolicyApi(region, created.get(region).get(0).getId());
 
          List<CreateScalingPolicy> scalingPolicies = Lists.newArrayList();
 
@@ -337,7 +337,7 @@
                .targetType(ScalingPolicyTargetType.INCREMENTAL)
                .target("1")
                .build();
-         scalingPolicies.add(scalingPolicy);         
+         scalingPolicies.add(scalingPolicy);
 
          FluentIterable<ScalingPolicy> scalingPolicyResponse = policyApi.create(scalingPolicies);
          String policyId = scalingPolicyResponse.iterator().next().getId();
@@ -346,15 +346,15 @@
          boolean result = policyApi.execute(policyId);
          assertTrue(result);
       }
-   }   
+   }
 
    @Override
    @AfterClass(groups = { "integration", "live" })
    public void tearDown() {
-      for (String zone : api.getConfiguredZones()) {
-         GroupApi groupApi = api.getGroupApiForZone(zone);
-         for (Group group : created.get(zone)) {
-            PolicyApi policyApi = api.getPolicyApiForZoneAndGroup(zone, group.getId());
+      for (String region : api.getConfiguredRegions()) {
+         GroupApi groupApi = api.getGroupApi(region);
+         for (Group group : created.get(region)) {
+            PolicyApi policyApi = api.getPolicyApi(region, group.getId());
             if (policyApi == null)
                 continue;
             for (ScalingPolicy sgr : policyApi.list()) {
diff --git a/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/ScalingPolicyApiMockTest.java b/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/ScalingPolicyApiMockTest.java
index a0a4c9d..63632df 100644
--- a/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/ScalingPolicyApiMockTest.java
+++ b/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/ScalingPolicyApiMockTest.java
@@ -52,7 +52,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         PolicyApi api = autoscaleApi.getPolicyApiForZoneAndGroup("DFW", "groupId1");         
+         PolicyApi api = autoscaleApi.getPolicyApi("DFW", "groupId1");
 
          List<CreateScalingPolicy> scalingPolicies = Lists.newArrayList();
 
@@ -95,7 +95,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         PolicyApi api = autoscaleApi.getPolicyApiForZoneAndGroup("DFW", "groupId1");         
+         PolicyApi api = autoscaleApi.getPolicyApi("DFW", "groupId1");
 
          List<CreateScalingPolicy> scalingPolicies = Lists.newArrayList();
 
@@ -132,7 +132,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         PolicyApi api = autoscaleApi.getPolicyApiForZoneAndGroup("DFW", "groupId1");         
+         PolicyApi api = autoscaleApi.getPolicyApi("DFW", "groupId1");
 
          List<CreateScalingPolicy> scalingPolicies = Lists.newArrayList();
 
@@ -179,7 +179,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         PolicyApi api = autoscaleApi.getPolicyApiForZoneAndGroup("DFW", "groupId1");         
+         PolicyApi api = autoscaleApi.getPolicyApi("DFW", "groupId1");
 
          List<CreateScalingPolicy> scalingPolicies = Lists.newArrayList();
 
@@ -226,7 +226,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         PolicyApi api = autoscaleApi.getPolicyApiForZoneAndGroup("DFW", "groupId1");         
+         PolicyApi api = autoscaleApi.getPolicyApi("DFW", "groupId1");
 
          FluentIterable<ScalingPolicy> scalingPolicyResponse = api.list();
 
@@ -258,7 +258,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         PolicyApi api = autoscaleApi.getPolicyApiForZoneAndGroup("DFW", "groupId1");         
+         PolicyApi api = autoscaleApi.getPolicyApi("DFW", "groupId1");
 
          FluentIterable<ScalingPolicy> scalingPolicyResponse = api.list();
 
@@ -284,7 +284,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         PolicyApi api = autoscaleApi.getPolicyApiForZoneAndGroup("DFW", "groupId1");         
+         PolicyApi api = autoscaleApi.getPolicyApi("DFW", "groupId1");
 
          ScalingPolicy scalingPolicyResponse = api.get("policyId");
 
@@ -315,7 +315,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         PolicyApi api = autoscaleApi.getPolicyApiForZoneAndGroup("DFW", "groupId1");         
+         PolicyApi api = autoscaleApi.getPolicyApi("DFW", "groupId1");
 
          ScalingPolicy scalingPolicyResponse = api.get("policyId");
 
@@ -341,7 +341,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         PolicyApi api = autoscaleApi.getPolicyApiForZoneAndGroup("DFW", "groupId1");
+         PolicyApi api = autoscaleApi.getPolicyApi("DFW", "groupId1");
 
          CreateScalingPolicy scalingPolicy = CreateScalingPolicy.builder()
                .cooldown(6)
@@ -375,7 +375,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         PolicyApi api = autoscaleApi.getPolicyApiForZoneAndGroup("DFW", "groupId1");
+         PolicyApi api = autoscaleApi.getPolicyApi("DFW", "groupId1");
 
          CreateScalingPolicy scalingPolicy = CreateScalingPolicy.builder()
                .cooldown(6)
@@ -409,7 +409,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         PolicyApi api = autoscaleApi.getPolicyApiForZoneAndGroup("DFW", "groupId1");
+         PolicyApi api = autoscaleApi.getPolicyApi("DFW", "groupId1");
 
          boolean result = api.delete("policyId");
 
@@ -435,7 +435,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         PolicyApi api = autoscaleApi.getPolicyApiForZoneAndGroup("DFW", "groupId1");
+         PolicyApi api = autoscaleApi.getPolicyApi("DFW", "groupId1");
 
          boolean result = api.delete("policyId");
 
@@ -461,7 +461,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         PolicyApi api = autoscaleApi.getPolicyApiForZoneAndGroup("DFW", "groupId1");
+         PolicyApi api = autoscaleApi.getPolicyApi("DFW", "groupId1");
 
          boolean result = api.execute("policyId");
 
@@ -487,7 +487,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         PolicyApi api = autoscaleApi.getPolicyApiForZoneAndGroup("DFW", "groupId1");
+         PolicyApi api = autoscaleApi.getPolicyApi("DFW", "groupId1");
 
          boolean result = api.execute("policyId");
 
diff --git a/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/WebhookApiLiveTest.java b/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/WebhookApiLiveTest.java
index 4393ef8..0154b7c 100644
--- a/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/WebhookApiLiveTest.java
+++ b/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/WebhookApiLiveTest.java
@@ -67,10 +67,10 @@
    @BeforeClass(groups = { "integration", "live" })
    public void setup() {
       super.setup();
-      for (String zone : api.getConfiguredZones()) {
+      for (String region : api.getConfiguredRegions()) {
          List<Group> createdGroupList = Lists.newArrayList();
-         created.put(zone, createdGroupList);
-         GroupApi groupApi = api.getGroupApiForZone(zone);
+         created.put(region, createdGroupList);
+         GroupApi groupApi = api.getGroupApi(region);
 
          GroupConfiguration groupConfiguration = GroupConfiguration.builder().maxEntities(10).cooldown(3)
                .name("testscalinggroup198547").minEntities(0)
@@ -103,21 +103,21 @@
          Group g = groupApi.create(groupConfiguration, launchConfiguration, scalingPolicies);
          createdGroupList.add(g);
 
-         WebhookApi webhookApi = api.getWebhookApiForZoneAndGroupAndPolicy(zone, g.getId(), g.getScalingPolicies().iterator().next().getId());
+         WebhookApi webhookApi = api.getWebhookApi(region, g.getId(), g.getScalingPolicies().iterator().next().getId());
          assertFalse( webhookApi.create("test_webhook", ImmutableMap.<String, Object>of()).isEmpty() );
 
          assertNotNull(g);
          assertNotNull(g.getId());
          assertEquals(g.getLinks().size(), 1);
          assertEquals(g.getLinks().get(0).getHref().toString(),
-               "https://" + zone.toLowerCase() + ".autoscale.api.rackspacecloud.com/v1.0/" + api.getCurrentTenantId().get().getId() + "/groups/" + g.getId() + "/");
+               "https://" + region.toLowerCase() + ".autoscale.api.rackspacecloud.com/v1.0/" + api.getCurrentTenantId().get().getId() + "/groups/" + g.getId() + "/");
          assertEquals(g.getLinks().get(0).getRelation(), Link.Relation.SELF);
 
          assertNotNull(g.getScalingPolicies().get(0).getId());
          assertEquals(g.getScalingPolicies().get(0).getLinks().size(), 1);
          assertEquals(
                g.getScalingPolicies().get(0).getLinks().get(0).getHref().toString(),
-               "https://" + zone.toLowerCase() + ".autoscale.api.rackspacecloud.com/v1.0/" + api.getCurrentTenantId().get().getId() + "/groups/" + g.getId() + "/policies/" + g.getScalingPolicies().get(0).getId() + "/");
+               "https://" + region.toLowerCase() + ".autoscale.api.rackspacecloud.com/v1.0/" + api.getCurrentTenantId().get().getId() + "/groups/" + g.getId() + "/policies/" + g.getScalingPolicies().get(0).getId() + "/");
          assertEquals(g.getScalingPolicies().get(0).getLinks().get(0).getRelation(), Link.Relation.SELF);
          assertEquals(g.getScalingPolicies().get(0).getCooldown(), 3);
          assertEquals(g.getScalingPolicies().get(0).getTarget(), "1");
@@ -156,9 +156,9 @@
 
    @Test
    public void testCreateWebhook() {
-      for (String zone : api.getConfiguredZones()) {
-         Group g = created.get(zone).get(0);
-         WebhookApi webhookApi = api.getWebhookApiForZoneAndGroupAndPolicy(zone, g.getId(), g.getScalingPolicies().iterator().next().getId());
+      for (String region : api.getConfiguredRegions()) {
+         Group g = created.get(region).get(0);
+         WebhookApi webhookApi = api.getWebhookApi(region, g.getId(), g.getScalingPolicies().iterator().next().getId());
          Webhook webhook = webhookApi.create("test1", ImmutableMap.<String, Object>of("notes", "test metadata")).first().get();
 
          assertEquals(webhook.getName(), "test1");
@@ -168,9 +168,9 @@
 
    @Test
    public void testCreateWebhooks() {
-      for (String zone : api.getConfiguredZones()) {
-         Group g = created.get(zone).get(0);
-         WebhookApi webhookApi = api.getWebhookApiForZoneAndGroupAndPolicy(zone, g.getId(), g.getScalingPolicies().iterator().next().getId());
+      for (String region : api.getConfiguredRegions()) {
+         Group g = created.get(region).get(0);
+         WebhookApi webhookApi = api.getWebhookApi(region, g.getId(), g.getScalingPolicies().iterator().next().getId());
          FluentIterable<Webhook> webhookResponse = webhookApi.create(
                ImmutableList.of(
                      CreateWebhook.builder().name("test5").metadata(null).build(),
@@ -186,9 +186,9 @@
 
    @Test
    public void testUpdateWebhook() {
-      for (String zone : api.getConfiguredZones()) {
-         Group g = created.get(zone).get(0);
-         WebhookApi webhookApi = api.getWebhookApiForZoneAndGroupAndPolicy(zone, g.getId(), g.getScalingPolicies().iterator().next().getId());
+      for (String region : api.getConfiguredRegions()) {
+         Group g = created.get(region).get(0);
+         WebhookApi webhookApi = api.getWebhookApi(region, g.getId(), g.getScalingPolicies().iterator().next().getId());
          String webhookId = webhookApi.list().first().get().getId();
          assertTrue( webhookApi.update(webhookId, "updated_name", ImmutableMap.<String, Object>of()) );
 
@@ -200,12 +200,12 @@
 
    @Test
    public void testGetWebhook() {
-      for (String zone : api.getConfiguredZones()) {
-         Group g = created.get(zone).get(0);
+      for (String region : api.getConfiguredRegions()) {
+         Group g = created.get(region).get(0);
          WebhookApi webhookApi;
          boolean foundWebhook = false;
          for (ScalingPolicy sp :  g.getScalingPolicies()) {
-            webhookApi = api.getWebhookApiForZoneAndGroupAndPolicy(zone, g.getId(), sp.getId());
+            webhookApi = api.getWebhookApi(region, g.getId(), sp.getId());
             Webhook webhookResponse = webhookApi.list().first().get();
             if (webhookResponse != null) {
                Webhook webhookGet = webhookApi.get(webhookResponse.getId());
@@ -219,23 +219,23 @@
 
    @Test
    public void testListWebhook() {
-      for (String zone : api.getConfiguredZones()) {
-         Group g = created.get(zone).get(0);
-         WebhookApi webhookApi = api.getWebhookApiForZoneAndGroupAndPolicy(zone, g.getId(), g.getScalingPolicies().iterator().next().getId());
+      for (String region : api.getConfiguredRegions()) {
+         Group g = created.get(region).get(0);
+         WebhookApi webhookApi = api.getWebhookApi(region, g.getId(), g.getScalingPolicies().iterator().next().getId());
          assertFalse( webhookApi.list().isEmpty() );
       }
    }
 
    @Test
    public void testDeleteWebhook() {
-      for (String zone : api.getConfiguredZones()) {
-         Group g = created.get(zone).get(0);
-         WebhookApi webhookApi = api.getWebhookApiForZoneAndGroupAndPolicy(zone, g.getId(), g.getScalingPolicies().iterator().next().getId());
+      for (String region : api.getConfiguredRegions()) {
+         Group g = created.get(region).get(0);
+         WebhookApi webhookApi = api.getWebhookApi(region, g.getId(), g.getScalingPolicies().iterator().next().getId());
          Webhook webhook = webhookApi.create("test1", ImmutableMap.<String, Object>of("notes", "test metadata")).first().get();
 
          assertEquals(webhook.getName(), "test1");
          assertEquals(webhook.getMetadata().get("notes"), "test metadata");
-         
+
          assertTrue( webhookApi.delete(webhook.getId()) );
          assertNull( webhookApi.get(webhook.getId()) );
       }
@@ -243,22 +243,22 @@
 
    @Test
    public void testExecuteWebhook() throws IOException {
-      for (String zone : api.getConfiguredZones()) {
-         Group g = created.get(zone).get(0);
-         WebhookApi webhookApi = api.getWebhookApiForZoneAndGroupAndPolicy(zone, g.getId(), g.getScalingPolicies().iterator().next().getId());
+      for (String region : api.getConfiguredRegions()) {
+         Group g = created.get(region).get(0);
+         WebhookApi webhookApi = api.getWebhookApi(region, g.getId(), g.getScalingPolicies().iterator().next().getId());
          Webhook webhook = webhookApi.create("test_execute", ImmutableMap.<String, Object>of("notes", "test metadata")).first().get();
-         
-         assertTrue( AutoscaleUtils.execute(webhook.getAnonymousExecutionURI().get()) , " for " + webhook + " in " + zone);
+
+         assertTrue( AutoscaleUtils.execute(webhook.getAnonymousExecutionURI().get()) , " for " + webhook + " in " + region);
       }
    }
 
    @Test
    public void testExecuteWebhookFail() throws IOException, URISyntaxException {
-      for (String zone : api.getConfiguredZones()) {
-         Group g = created.get(zone).get(0);
-         WebhookApi webhookApi = api.getWebhookApiForZoneAndGroupAndPolicy(zone, g.getId(), g.getScalingPolicies().iterator().next().getId());
+      for (String region : api.getConfiguredRegions()) {
+         Group g = created.get(region).get(0);
+         WebhookApi webhookApi = api.getWebhookApi(region, g.getId(), g.getScalingPolicies().iterator().next().getId());
          Webhook webhook = webhookApi.create("test_execute_fail", ImmutableMap.<String, Object>of("notes", "test metadata")).first().get();
-         
+
          URI uri = new URI(webhook.getAnonymousExecutionURI().get().toString() + "123");
          assertFalse( AutoscaleUtils.execute(uri) );
       }
@@ -267,10 +267,10 @@
    @Override
    @AfterClass(groups = { "integration", "live" })
    public void tearDown() {
-      for (String zone : api.getConfiguredZones()) {
-         GroupApi groupApi = api.getGroupApiForZone(zone);
-         for (Group group : created.get(zone)) {
-            PolicyApi policyApi = api.getPolicyApiForZoneAndGroup(zone, group.getId());
+      for (String region : api.getConfiguredRegions()) {
+         GroupApi groupApi = api.getGroupApi(region);
+         for (Group group : created.get(region)) {
+            PolicyApi policyApi = api.getPolicyApi(region, group.getId());
             if (policyApi == null)
                 continue;
             for (ScalingPolicy sgr : policyApi.list()) {
diff --git a/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/WebhookApiMockTest.java b/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/WebhookApiMockTest.java
index 4265be2..77db9a7 100644
--- a/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/WebhookApiMockTest.java
+++ b/rackspace-autoscale/src/test/java/org/jclouds/rackspace/autoscale/v1/features/WebhookApiMockTest.java
@@ -48,7 +48,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         WebhookApi api = autoscaleApi.getWebhookApiForZoneAndGroupAndPolicy("DFW", "1234567890", "321456");         
+         WebhookApi api = autoscaleApi.getWebhookApi("DFW", "1234567890", "321456");
 
          FluentIterable<Webhook> webhooks = api.create("PagerDuty", ImmutableMap.<String, Object>of("notes", "PagerDuty will fire this webhook"));
 
@@ -75,7 +75,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         WebhookApi api = autoscaleApi.getWebhookApiForZoneAndGroupAndPolicy("DFW", "1234567890", "321456");         
+         WebhookApi api = autoscaleApi.getWebhookApi("DFW", "1234567890", "321456");
 
          FluentIterable<Webhook> webhooks = api.create("PagerDuty", ImmutableMap.<String, Object>of("notes", "PagerDuty will fire this webhook"));
 
@@ -101,7 +101,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         WebhookApi api = autoscaleApi.getWebhookApiForZoneAndGroupAndPolicy("DFW", "1234567890", "321456");         
+         WebhookApi api = autoscaleApi.getWebhookApi("DFW", "1234567890", "321456");
 
          FluentIterable<Webhook> webhooks = api.create(ImmutableList.of(
                CreateWebhook.builder().name("PagerDuty").metadata(ImmutableMap.<String, Object>of("notes", "PagerDuty will fire this webhook")).build(),
@@ -132,7 +132,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         WebhookApi api = autoscaleApi.getWebhookApiForZoneAndGroupAndPolicy("DFW", "1234567890", "321456");         
+         WebhookApi api = autoscaleApi.getWebhookApi("DFW", "1234567890", "321456");
 
          FluentIterable<Webhook> webhooks = api.create(ImmutableList.of(
                CreateWebhook.builder().name("PagerDuty").metadata(ImmutableMap.<String, Object>of("notes", "PagerDuty will fire this webhook")).build(),
@@ -161,7 +161,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         WebhookApi api = autoscaleApi.getWebhookApiForZoneAndGroupAndPolicy("DFW", "1234567890", "321456");         
+         WebhookApi api = autoscaleApi.getWebhookApi("DFW", "1234567890", "321456");
 
          FluentIterable<Webhook> webhooks = api.list();
 
@@ -189,7 +189,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         WebhookApi api = autoscaleApi.getWebhookApiForZoneAndGroupAndPolicy("DFW", "1234567890", "321456");         
+         WebhookApi api = autoscaleApi.getWebhookApi("DFW", "1234567890", "321456");
 
          FluentIterable<Webhook> webhooks = api.list();
 
@@ -215,7 +215,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         WebhookApi api = autoscaleApi.getWebhookApiForZoneAndGroupAndPolicy("DFW", "1234567890", "321456");         
+         WebhookApi api = autoscaleApi.getWebhookApi("DFW", "1234567890", "321456");
 
          boolean success = api.update("5555", "alice", ImmutableMap.<String, Object>of("notes", "this is for Alice"));
 
@@ -241,7 +241,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         WebhookApi api = autoscaleApi.getWebhookApiForZoneAndGroupAndPolicy("DFW", "1234567890", "321456");         
+         WebhookApi api = autoscaleApi.getWebhookApi("DFW", "1234567890", "321456");
 
          boolean success = api.update("5555", "alice", ImmutableMap.<String, Object>of("notes", "this is for Alice"));
 
@@ -267,7 +267,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         WebhookApi api = autoscaleApi.getWebhookApiForZoneAndGroupAndPolicy("DFW", "1234567890", "321456");         
+         WebhookApi api = autoscaleApi.getWebhookApi("DFW", "1234567890", "321456");
 
          Webhook webhook = api.get("5555");
 
@@ -294,7 +294,7 @@
 
       try {
          AutoscaleApi autoscaleApi = api(server.getUrl("/").toString(), "rackspace-autoscale", overrides);
-         WebhookApi api = autoscaleApi.getWebhookApiForZoneAndGroupAndPolicy("DFW", "1234567890", "321456");         
+         WebhookApi api = autoscaleApi.getWebhookApi("DFW", "1234567890", "321456");
 
          Webhook webhook = api.get("5555");
 
diff --git a/rackspace-cloudbigdata-us/README.md b/rackspace-cloudbigdata-us/README.md
index 620fcf2..0b5fb4e 100644
--- a/rackspace-cloudbigdata-us/README.md
+++ b/rackspace-cloudbigdata-us/README.md
@@ -1,7 +1,7 @@
 Rackspace Cloud Auto Scale US
 =============================
 
-The Rackspace Cloud Big Data Provider for the US zones.
+The Rackspace Cloud Big Data Provider for the US region.
 
 Production ready?
 No
diff --git a/rackspace-cloudbigdata-us/src/main/java/org/jclouds/rackspace/cloudbigdata/us/v1/CloudBigDataUSProviderMetadata.java b/rackspace-cloudbigdata-us/src/main/java/org/jclouds/rackspace/cloudbigdata/us/v1/CloudBigDataUSProviderMetadata.java
index 1c32968..a17f3a5 100644
--- a/rackspace-cloudbigdata-us/src/main/java/org/jclouds/rackspace/cloudbigdata/us/v1/CloudBigDataUSProviderMetadata.java
+++ b/rackspace-cloudbigdata-us/src/main/java/org/jclouds/rackspace/cloudbigdata/us/v1/CloudBigDataUSProviderMetadata.java
@@ -17,15 +17,15 @@
 package org.jclouds.rackspace.cloudbigdata.us.v1;
 
 import static org.jclouds.location.reference.LocationConstants.ISO3166_CODES;
-import static org.jclouds.location.reference.LocationConstants.PROPERTY_ZONE;
-import static org.jclouds.location.reference.LocationConstants.PROPERTY_ZONES;
+import static org.jclouds.location.reference.LocationConstants.PROPERTY_REGION;
+import static org.jclouds.location.reference.LocationConstants.PROPERTY_REGIONS;
 import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
 import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
 
 import java.net.URI;
 import java.util.Properties;
 
-import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.ZoneModule;
+import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.RegionModule;
 import org.jclouds.providers.ProviderMetadata;
 import org.jclouds.providers.internal.BaseProviderMetadata;
 import org.jclouds.rackspace.cloudbigdata.v1.CloudBigDataApiMetadata;
@@ -77,12 +77,12 @@
    public static Properties defaultProperties() {
       Properties properties = new Properties();
       properties.setProperty(CREDENTIAL_TYPE, CloudIdentityCredentialTypes.API_KEY_CREDENTIALS);
-      properties.setProperty(SERVICE_TYPE, ServiceType.BIG_DATA); 
-      //properties.setProperty(PROPERTY_ZONES, "ORD,DFW,SYD");
-      properties.setProperty(PROPERTY_ZONES, "ORD");
-      properties.setProperty(PROPERTY_ZONE + ".ORD." + ISO3166_CODES, "US-IL");
-      //properties.setProperty(PROPERTY_ZONE + ".DFW." + ISO3166_CODES, "US-TX");
-      //properties.setProperty(PROPERTY_ZONE + ".SYD." + ISO3166_CODES, "AU-NSW");
+      properties.setProperty(SERVICE_TYPE, ServiceType.BIG_DATA);
+      //properties.setProperty(PROPERTY_REGIONS, "ORD,DFW,SYD");
+      properties.setProperty(PROPERTY_REGIONS, "ORD");
+      properties.setProperty(PROPERTY_REGION + ".ORD." + ISO3166_CODES, "US-IL");
+      //properties.setProperty(PROPERTY_REGION + ".DFW." + ISO3166_CODES, "US-TX");
+      //properties.setProperty(PROPERTY_REGION + ".SYD." + ISO3166_CODES, "AU-NSW");
       return properties;
    }
 
@@ -103,7 +103,7 @@
                .defaultModules(ImmutableSet.<Class<? extends Module>>builder()
                      .add(CloudIdentityAuthenticationApiModule.class)
                      .add(CloudIdentityAuthenticationModule.class)
-                     .add(ZoneModule.class)
+                     .add(RegionModule.class)
                      .add(CloudBigDataParserModule.class)
                      .add(CloudBigDataHttpApiModule.class).build())
                      .build())
diff --git a/rackspace-cloudbigdata/src/main/java/org/jclouds/rackspace/cloudbigdata/v1/CloudBigDataApi.java b/rackspace-cloudbigdata/src/main/java/org/jclouds/rackspace/cloudbigdata/v1/CloudBigDataApi.java
index 46aadda..7d52ab0 100644
--- a/rackspace-cloudbigdata/src/main/java/org/jclouds/rackspace/cloudbigdata/v1/CloudBigDataApi.java
+++ b/rackspace-cloudbigdata/src/main/java/org/jclouds/rackspace/cloudbigdata/v1/CloudBigDataApi.java
@@ -20,8 +20,8 @@
 import java.util.Set;
 
 import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.location.Zone;
-import org.jclouds.location.functions.ZoneToEndpoint;
+import org.jclouds.location.Region;
+import org.jclouds.location.functions.RegionToEndpoint;
 import org.jclouds.rackspace.cloudbigdata.v1.features.ClusterApi;
 import org.jclouds.rackspace.cloudbigdata.v1.features.ProfileApi;
 import org.jclouds.rest.annotations.Delegate;
@@ -30,33 +30,64 @@
 import com.google.inject.Provides;
 
 /**
- * Provides access to Rackspace Cloud Big Data.
- * Rackspace Cloud Big Data is an on-demand Apache Hadoop service on the Rackspace open cloud. The service supports a RESTful API and alleviates the pain associated with deploying, managing, and scaling Hadoop clusters.
- * @see <a href="http://docs.rackspace.com/cbd/api/v1.0/cbd-devguide/content/overview.html">API Doc</a>
+ * Provides access to the Rackspace Cloud Big Data v1 API.
+ *
+ * Rackspace Cloud Big Data is an on-demand Apache Hadoop service on the Rackspace open cloud. The service
+ * supports a RESTful API and alleviates the pain associated with deploying, managing, and scaling Hadoop clusters.
  */
-public interface CloudBigDataApi extends Closeable{
+public interface CloudBigDataApi extends Closeable {
    /**
-    * Provides a set of all zones available.
-    * 
-    * @return the Zone codes configured
+    * Provides a set of all regions available.
+    *
+    * @return the Region codes configured
     */
    @Provides
-   @Zone
+   @Region
+   Set<String> getConfiguredRegions();
+
+   /**
+    * Provides access to all Profile features.
+    * @param region The region for the profile API.
+    * @return A profile API context.
+    */
+   @Delegate
+   ProfileApi getProfileApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
+
+   /**
+    * Provides access to all Cluster features.
+    * @param region The region for the profile API.
+    * @return A cluster API context.
+    */
+   @Delegate
+   ClusterApi getClusterApi(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String region);
+
+   /**
+    * @return the Zone codes configured
+    * @deprecated Please use {@link #getConfiguredRegions()} as this method will be removed in jclouds 3.0.
+    */
+   @Deprecated
+   @Provides
+   @Region
    Set<String> getConfiguredZones();
 
    /**
     * Provides access to all Profile features.
     * @param zone The zone (region) for the profile API.
     * @return A profile API context.
+    * @deprecated Please use {@link #getProfileApi(String)} as this method will be removed in jclouds 3.0.
     */
+   @Deprecated
    @Delegate
-   ProfileApi getProfileApiForZone(@EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone);
+   ProfileApi getProfileApiForZone(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String zone);
 
    /**
     * Provides access to all Cluster features.
     * @param zone The zone (region) for the profile API.
     * @return A cluster API context.
+    * @deprecated Please use {@link #getClusterApi(String)} as this method will be removed in jclouds 3.0.
     */
+   @Deprecated
    @Delegate
-   ClusterApi getClusterApiForZone(@EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone);
+   ClusterApi getClusterApiForZone(@EndpointParam(parser = RegionToEndpoint.class) @Nullable String zone);
+
 }
diff --git a/rackspace-cloudbigdata/src/main/java/org/jclouds/rackspace/cloudbigdata/v1/CloudBigDataApiMetadata.java b/rackspace-cloudbigdata/src/main/java/org/jclouds/rackspace/cloudbigdata/v1/CloudBigDataApiMetadata.java
index 74be554..111455d 100644
--- a/rackspace-cloudbigdata/src/main/java/org/jclouds/rackspace/cloudbigdata/v1/CloudBigDataApiMetadata.java
+++ b/rackspace-cloudbigdata/src/main/java/org/jclouds/rackspace/cloudbigdata/v1/CloudBigDataApiMetadata.java
@@ -23,7 +23,7 @@
 import java.util.Properties;
 
 import org.jclouds.openstack.keystone.v2_0.config.CredentialTypes;
-import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.ZoneModule;
+import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.RegionModule;
 import org.jclouds.rackspace.cloudbigdata.v1.config.CloudBigDataHttpApiModule;
 import org.jclouds.rackspace.cloudbigdata.v1.config.CloudBigDataParserModule;
 import org.jclouds.rackspace.cloudidentity.v2_0.ServiceType;
@@ -35,8 +35,8 @@
 import com.google.inject.Module;
 
 /**
- * Implementation of {@link ApiMetadata} for the Rackspace Cloud Big Data API
- * 
+ * Implementation of {@link org.jclouds.apis.ApiMetadata} for the Rackspace Cloud Big Data API
+ *
  * @see CloudBigDataApi
  */
 public class CloudBigDataApiMetadata extends BaseHttpApiMetadata<CloudBigDataApi> {
@@ -47,7 +47,7 @@
    }
 
    /**
-    * 
+    *
     */
    public CloudBigDataApiMetadata() {
       this(new Builder());
@@ -69,7 +69,7 @@
     */
    public static class Builder extends BaseHttpApiMetadata.Builder<CloudBigDataApi, Builder> {
 
-      protected Builder() {   
+      protected Builder() {
          id("rackspace-cloudbigdata")
          .name("Rackspace Cloud Big Data API")
          .identityName("${tenantName}:${userName} or ${userName}, if your keystone supports a default tenant")
@@ -82,7 +82,7 @@
          .defaultModules(ImmutableSet.<Class<? extends Module>>builder()
                .add(CloudIdentityAuthenticationApiModule.class)
                .add(CloudIdentityAuthenticationModule.class)
-               .add(ZoneModule.class)
+               .add(RegionModule.class)
                .add(CloudBigDataParserModule.class)
                .add(CloudBigDataHttpApiModule.class)
                .build());
diff --git a/rackspace-cloudbigdata/src/main/java/org/jclouds/rackspace/cloudbigdata/v1/features/ClusterApi.java b/rackspace-cloudbigdata/src/main/java/org/jclouds/rackspace/cloudbigdata/v1/features/ClusterApi.java
index 2e9a061..53242b9 100644
--- a/rackspace-cloudbigdata/src/main/java/org/jclouds/rackspace/cloudbigdata/v1/features/ClusterApi.java
+++ b/rackspace-cloudbigdata/src/main/java/org/jclouds/rackspace/cloudbigdata/v1/features/ClusterApi.java
@@ -25,11 +25,11 @@
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 
 import org.jclouds.Fallbacks.EmptyFluentIterableOnNotFoundOr404;
 import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
 import org.jclouds.rackspace.cloudbigdata.v1.domain.Cluster;
 import org.jclouds.rackspace.cloudbigdata.v1.domain.CreateCluster;
@@ -47,7 +47,8 @@
  */
 @RequestFilters(AuthenticateRequest.class)
 @Consumes(MediaType.APPLICATION_JSON)
-@Produces(MediaType.APPLICATION_JSON)
+//@Produces(MediaType.APPLICATION_JSON)
+@Path("/clusters")
 public interface ClusterApi extends Closeable {
 
    /**
@@ -58,51 +59,52 @@
     * @see Cluster
     * @see CreateCluster
     */
-   @Named("Cluster:create")
+   @Named("cluster:create")
    @POST
-   @Path("/clusters")
-   @Fallback(NullOnNotFoundOr404.class)
    @SelectJson("cluster")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
    Cluster create(@WrapWith("cluster") CreateCluster cluster);
-   
+
    /**
     * List all clusters.
     * @return A list containing information about all the clusters.
     * @see Cluster
     */
-   @Named("Cluster:list")
+   @Named("cluster:list")
    @GET
-   @Path("/clusters")
-   @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
    @SelectJson("clusters")
+   @Fallback(EmptyFluentIterableOnNotFoundOr404.class)
    FluentIterable<Cluster> list();
-   
+
    /**
     * Get information about a specific cluster.
     * @param clusterId The id of the cluster queried.
     * @return Detailed information about a specific cluster.
     * @see Cluster
     */
-   @Named("Cluster:get")
+   @Named("cluster:get")
    @GET
-   @Path("/clusters/{clusterId}")
-   @Fallback(NullOnNotFoundOr404.class)
+   @Path("/{clusterId}")
    @SelectJson("cluster")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
    Cluster get(@PathParam("clusterId") String clusterId);
-   
+
    /**
     * Delete a cluster.
     * @param clusterId The id of the cluster to be deleted.
     * @return Detailed information about the cluster to be deleted.
     * @see Cluster
     */
-   @Named("Cluster:delete")
+   @Named("cluster:delete")
    @DELETE
-   @Path("/clusters/{clusterId}")
-   @Fallback(NullOnNotFoundOr404.class)
+   @Path("/{clusterId}")
    @SelectJson("cluster")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
    Cluster delete(@PathParam("clusterId") String clusterId);
-   
+
    /**
     * Resize a cluster. Changes the number of nodes for this cluster.
     * @param clusterId The id of the cluster to be deleted.
@@ -110,11 +112,12 @@
     * @return Detailed information about the cluster to be resized.
     * @see Cluster
     */
-   @Named("Cluster:resize")
+   @Named("cluster:resize")
    @POST
-   @Path("/clusters/{clusterId}/action")
+   @Path("/{clusterId}/action")
    @WrapWith("resize")
-   @Fallback(NullOnNotFoundOr404.class)
    @SelectJson("cluster")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
    Cluster resize(@PathParam("clusterId") String clusterId, @PayloadParam("nodeCount") int nodeCount);
 }
diff --git a/rackspace-cloudbigdata/src/main/java/org/jclouds/rackspace/cloudbigdata/v1/features/ProfileApi.java b/rackspace-cloudbigdata/src/main/java/org/jclouds/rackspace/cloudbigdata/v1/features/ProfileApi.java
index e0126d5..ee17930 100644
--- a/rackspace-cloudbigdata/src/main/java/org/jclouds/rackspace/cloudbigdata/v1/features/ProfileApi.java
+++ b/rackspace-cloudbigdata/src/main/java/org/jclouds/rackspace/cloudbigdata/v1/features/ProfileApi.java
@@ -23,10 +23,10 @@
 import javax.ws.rs.GET;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 
 import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.openstack.keystone.v2_0.filters.AuthenticateRequest;
 import org.jclouds.rackspace.cloudbigdata.v1.domain.CreateProfile;
 import org.jclouds.rackspace.cloudbigdata.v1.domain.Profile;
@@ -44,7 +44,8 @@
  */
 @RequestFilters(AuthenticateRequest.class)
 @Consumes(MediaType.APPLICATION_JSON)
-@Produces(MediaType.APPLICATION_JSON)
+//@Produces(MediaType.APPLICATION_JSON)
+@Path("/profile")
 public interface ProfileApi extends Closeable {
 
    /**
@@ -55,13 +56,13 @@
     * @see Profile
     * @see CreateProfile
     */
-   @Named("Profile:create")
+   @Named("profile:create")
    @POST
-   @Path("/profile")
-   @Fallback(NullOnNotFoundOr404.class)
    @SelectJson("profile")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
    Profile create(@WrapWith("profile") CreateProfile profile);
-   
+
    /**
     * This operation returns detailed profile information for the current user.
     * Before creating a cluster, a profile has to be created.
@@ -69,10 +70,10 @@
     * @see Profile
     * @see CreateProfile
     */
-   @Named("Profile:get")
+   @Named("profile:get")
    @GET
-   @Path("/profile")
-   @Fallback(NullOnNotFoundOr404.class)
    @SelectJson("profile")
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
    Profile get();
 }
diff --git a/rackspace-cloudbigdata/src/main/java/org/jclouds/rackspace/cloudbigdata/v1/predicates/ClusterPredicates.java b/rackspace-cloudbigdata/src/main/java/org/jclouds/rackspace/cloudbigdata/v1/predicates/ClusterPredicates.java
index 91073a3..a4476bc 100644
--- a/rackspace-cloudbigdata/src/main/java/org/jclouds/rackspace/cloudbigdata/v1/predicates/ClusterPredicates.java
+++ b/rackspace-cloudbigdata/src/main/java/org/jclouds/rackspace/cloudbigdata/v1/predicates/ClusterPredicates.java
@@ -35,24 +35,24 @@
  * <pre>
  * {@code
  * Cluster Cluster = ClusterApi.create(100);
- * 
+ *
  * RetryablePredicate<String> awaitAvailable = RetryablePredicate.create(
  *    ClusterPredicates.available(ClusterApi), 600, 10, 10, TimeUnit.SECONDS);
- * 
+ *
  * if (!awaitAvailable.apply(Cluster.getId())) {
- *    throw new TimeoutException("Timeout on Cluster: " + Cluster); 
- * }    
+ *    throw new TimeoutException("Timeout on Cluster: " + Cluster);
+ * }
  * }
  * </pre>
- * 
+ *
  * You can also use the static convenience methods as follows.
- * 
+ *
  * <pre>
  * {@code
  * Cluster Cluster = ClusterApi.create(100);
- * 
+ *
  * if (!ClusterPredicates.awaitAvailable(ClusterApi).apply(Cluster.getId())) {
- *    throw new TimeoutException("Timeout on Cluster: " + Cluster);     
+ *    throw new TimeoutException("Timeout on Cluster: " + Cluster);
  * }
  * }
  * </pre>
@@ -60,8 +60,8 @@
 public class ClusterPredicates {
    /**
     * Wait until an Cluster is Available.
-    * 
-    * @param clusterApi The ClusterApi in the zone where your Cluster resides.
+    *
+    * @param clusterApi The ClusterApi in the region where your Cluster resides.
     * @return RetryablePredicate That will check the status every 5 seconds for a maxiumum of 10 minutes.
     */
    public static Predicate<Cluster> awaitAvailable(ClusterApi clusterApi) {
@@ -71,8 +71,8 @@
 
    /**
     * Wait until an Cluster no longer exists.
-    * 
-    * @param clusterApi The ClusterApi in the zone where your Cluster resides.
+    *
+    * @param clusterApi The ClusterApi in the region where your Cluster resides.
     * @return RetryablePredicate That will check whether the Cluster exists.
     * every 5 seconds for a maximum of 10 minutes.
     */
@@ -80,11 +80,11 @@
       DeletedPredicate deletedPredicate = new DeletedPredicate(clusterApi);
       return retry(deletedPredicate, 600, 5, 5, SECONDS);
    }
-   
+
    /**
     * Wait until Cluster is in the status specified.
-    * 
-    * @param clusterApi The ClusterApi in the zone where your Cluster resides.
+    *
+    * @param clusterApi The ClusterApi in the region where your Cluster resides.
     * @param status Wait until Cluster in in this status.
     * @param maxWaitInSec Maximum time to wait.
     * @param periodInSec Interval between retries.
@@ -95,7 +95,7 @@
       StatusUpdatedPredicate statusPredicate = new StatusUpdatedPredicate(clusterApi, status);
       return retry(statusPredicate, maxWaitInSec, periodInSec, periodInSec, SECONDS);
    }
-   
+
    private static class StatusUpdatedPredicate implements Predicate<Cluster> {
       private ClusterApi clusterApi;
       private Status status;
@@ -111,14 +111,14 @@
       @Override
       public boolean apply(Cluster cluster) {
          checkNotNull(cluster, "Cluster must be defined");
-         
+
          if (status.equals(cluster.getStatus())) {
             return true;
          }
          else {
             Cluster ClusterUpdated = clusterApi.get(cluster.getId());
             checkNotNull(ClusterUpdated, "Cluster %s not found.", cluster.getId());
-            
+
             return status.equals(ClusterUpdated.getStatus());
          }
       }
diff --git a/rackspace-cloudbigdata/src/test/java/org/jclouds/rackspace/cloudbigdata/v1/features/ClusterApiLiveTest.java b/rackspace-cloudbigdata/src/test/java/org/jclouds/rackspace/cloudbigdata/v1/features/ClusterApiLiveTest.java
index ac35477..01878af 100644
--- a/rackspace-cloudbigdata/src/test/java/org/jclouds/rackspace/cloudbigdata/v1/features/ClusterApiLiveTest.java
+++ b/rackspace-cloudbigdata/src/test/java/org/jclouds/rackspace/cloudbigdata/v1/features/ClusterApiLiveTest.java
@@ -29,10 +29,10 @@
 import org.jclouds.rackspace.cloudbigdata.v1.domain.Cluster;
 import org.jclouds.rackspace.cloudbigdata.v1.domain.Cluster.Status;
 import org.jclouds.rackspace.cloudbigdata.v1.domain.CreateCluster;
+import org.jclouds.rackspace.cloudbigdata.v1.domain.CreateCluster.ClusterType;
 import org.jclouds.rackspace.cloudbigdata.v1.domain.CreateProfile;
 import org.jclouds.rackspace.cloudbigdata.v1.domain.Profile;
 import org.jclouds.rackspace.cloudbigdata.v1.domain.ProfileSSHKey;
-import org.jclouds.rackspace.cloudbigdata.v1.domain.CreateCluster.ClusterType;
 import org.jclouds.rackspace.cloudbigdata.v1.internal.BaseCloudBigDataApiLiveTest;
 import org.jclouds.rackspace.cloudbigdata.v1.predicates.ClusterPredicates;
 import org.jclouds.ssh.SshKeys;
@@ -46,20 +46,20 @@
  * Profile live test
  */
 @Test(groups = "live", testName = "ProfileApiLiveTest", singleThreaded = true)
-public class ClusterApiLiveTest extends BaseCloudBigDataApiLiveTest {   
+public class ClusterApiLiveTest extends BaseCloudBigDataApiLiveTest {
 
    @Override
    @BeforeClass(groups = { "integration", "live" })
    public void setup() {
       super.setup();
-      for (String zone : filterZones(api.getConfiguredZones())) {
-         ClusterApi clusterApi = api.getClusterApiForZone(zone);
+      for (String region : filterRegions(api.getConfiguredRegions())) {
+         ClusterApi clusterApi = api.getClusterApi(region);
 
          CreateCluster createCluster = null;
          try {
             // A Profile must exist before a cluster is created.
-            
-            ProfileApi profileApi = api.getProfileApiForZone(zone);
+
+            ProfileApi profileApi = api.getProfileApi(region);
 
             CreateProfile createProfile = CreateProfile.builder()
                   .username("john.doe")
@@ -78,7 +78,7 @@
             assertEquals(profile.getSSHKeys().get(0).getName(), "t@test");
             assertEquals(profile.getCredentialsUsername(), "jdoe");
             assertNull(profile.getCredentialsApiKey());
-            
+
             createCluster = CreateCluster.builder()
                   .name("slice")
                   .clusterType(ClusterType.HADOOP_HDP1_3.name())
@@ -94,7 +94,7 @@
          Cluster cluster = clusterApi.create(createCluster);
          ClusterPredicates.awaitAvailable(clusterApi).apply(cluster);
          cluster = clusterApi.get(cluster.getId()); // update cluster for status
-         
+
          assertNotNull(cluster);
          assertNotNull(cluster.getId());
          assertNotNull(cluster.getCreated());
@@ -107,12 +107,12 @@
          assertEquals(cluster.getStatus(), Status.ACTIVE);
       }
    }
-      
+
    @Test
    public void getCluster() {
-      for (String zone : filterZones(api.getConfiguredZones())) {
-         ClusterApi clusterApi = api.getClusterApiForZone(zone);
-         
+      for (String region : filterRegions(api.getConfiguredRegions())) {
+         ClusterApi clusterApi = api.getClusterApi(region);
+
          Cluster clusterFromList = clusterApi.list().get(0);
          Cluster clusterFromGet = clusterApi.get(clusterFromList.getId());
          assertNotNull(clusterFromGet.getId());
@@ -120,17 +120,17 @@
          assertEquals(clusterFromGet, clusterFromList);
       }
    }
-   
+
    @Test
    public void resizeCluster() {
-      for (String zone : filterZones(api.getConfiguredZones())) {
-         ClusterApi clusterApi = api.getClusterApiForZone(zone);
-         
+      for (String region : filterRegions(api.getConfiguredRegions())) {
+         ClusterApi clusterApi = api.getClusterApi(region);
+
          Cluster cluster = clusterApi.list().get(0);
          Cluster clusterResized = clusterApi.resize(cluster.getId(), 2);
          ClusterPredicates.awaitAvailable(clusterApi).apply(cluster);
          cluster = clusterApi.get(cluster.getId()); // update cluster for status
-         
+
          assertEquals(clusterResized.getNodeCount(), 2);
       }
    }
@@ -138,8 +138,8 @@
    @Override
    @AfterClass(groups = { "integration", "live" })
    public void tearDown() {
-      for (String zone : filterZones(api.getConfiguredZones())) {
-         ClusterApi clusterApi = api.getClusterApiForZone(zone);
+      for (String region : filterRegions(api.getConfiguredRegions())) {
+         ClusterApi clusterApi = api.getClusterApi(region);
          for (Cluster cluster : clusterApi.list()) {
             ClusterPredicates.awaitAvailable(clusterApi).apply(cluster);
             clusterApi.delete(cluster.getId());
diff --git a/rackspace-cloudbigdata/src/test/java/org/jclouds/rackspace/cloudbigdata/v1/features/ClusterApiMockTest.java b/rackspace-cloudbigdata/src/test/java/org/jclouds/rackspace/cloudbigdata/v1/features/ClusterApiMockTest.java
index 5ea5a48..e74c2b7 100644
--- a/rackspace-cloudbigdata/src/test/java/org/jclouds/rackspace/cloudbigdata/v1/features/ClusterApiMockTest.java
+++ b/rackspace-cloudbigdata/src/test/java/org/jclouds/rackspace/cloudbigdata/v1/features/ClusterApiMockTest.java
@@ -50,7 +50,7 @@
 
       try {
          CloudBigDataApi cbdApi = api(server.getUrl("/").toString(), "rackspace-cloudbigdata", overrides);
-         ClusterApi api = cbdApi.getClusterApiForZone("ORD");
+         ClusterApi api = cbdApi.getClusterApi("ORD");
 
          CreateCluster createCluster = CreateCluster.builder()
                .name("slice")
@@ -96,7 +96,7 @@
 
       try {
          CloudBigDataApi cbdApi = api(server.getUrl("/").toString(), "rackspace-cloudbigdata", overrides);
-         ClusterApi api = cbdApi.getClusterApiForZone("ORD");
+         ClusterApi api = cbdApi.getClusterApi("ORD");
 
          CreateCluster createCluster = CreateCluster.builder()
                .name("slice")
@@ -130,7 +130,7 @@
 
       try {
          CloudBigDataApi cbdApi = api(server.getUrl("/").toString(), "rackspace-cloudbigdata", overrides);
-         ClusterApi api = cbdApi.getClusterApiForZone("ORD");         
+         ClusterApi api = cbdApi.getClusterApi("ORD");
 
          Cluster cluster = api.get("5");
 
@@ -168,7 +168,7 @@
 
       try {
          CloudBigDataApi cbdApi = api(server.getUrl("/").toString(), "rackspace-cloudbigdata", overrides);
-         ClusterApi api = cbdApi.getClusterApiForZone("ORD");         
+         ClusterApi api = cbdApi.getClusterApi("ORD");
 
          Cluster cluster = api.get("5");
 
@@ -194,7 +194,7 @@
 
       try {
          CloudBigDataApi cbdApi = api(server.getUrl("/").toString(), "rackspace-cloudbigdata", overrides);
-         ClusterApi api = cbdApi.getClusterApiForZone("ORD");         
+         ClusterApi api = cbdApi.getClusterApi("ORD");
 
          FluentIterable<Cluster> clusters = api.list();
 
@@ -234,7 +234,7 @@
 
       try {
          CloudBigDataApi cbdApi = api(server.getUrl("/").toString(), "rackspace-cloudbigdata", overrides);
-         ClusterApi api = cbdApi.getClusterApiForZone("ORD");         
+         ClusterApi api = cbdApi.getClusterApi("ORD");
 
          FluentIterable<Cluster> clusters = api.list();
 
@@ -261,7 +261,7 @@
 
       try {
          CloudBigDataApi cbdApi = api(server.getUrl("/").toString(), "rackspace-cloudbigdata", overrides);
-         ClusterApi api = cbdApi.getClusterApiForZone("ORD");         
+         ClusterApi api = cbdApi.getClusterApi("ORD");
 
          Cluster cluster = api.delete("5");
 
@@ -299,7 +299,7 @@
 
       try {
          CloudBigDataApi cbdApi = api(server.getUrl("/").toString(), "rackspace-cloudbigdata", overrides);
-         ClusterApi api = cbdApi.getClusterApiForZone("ORD");         
+         ClusterApi api = cbdApi.getClusterApi("ORD");
 
          Cluster cluster = api.delete("5");
 
@@ -325,7 +325,7 @@
 
       try {
          CloudBigDataApi cbdApi = api(server.getUrl("/").toString(), "rackspace-cloudbigdata", overrides);
-         ClusterApi api = cbdApi.getClusterApiForZone("ORD");         
+         ClusterApi api = cbdApi.getClusterApi("ORD");
 
          Cluster cluster = api.resize("5", 10);
 
@@ -363,7 +363,7 @@
 
       try {
          CloudBigDataApi cbdApi = api(server.getUrl("/").toString(), "rackspace-cloudbigdata", overrides);
-         ClusterApi api = cbdApi.getClusterApiForZone("ORD");         
+         ClusterApi api = cbdApi.getClusterApi("ORD");
 
          Cluster cluster = api.resize("5", 10);
 
diff --git a/rackspace-cloudbigdata/src/test/java/org/jclouds/rackspace/cloudbigdata/v1/features/ProfileApiLiveTest.java b/rackspace-cloudbigdata/src/test/java/org/jclouds/rackspace/cloudbigdata/v1/features/ProfileApiLiveTest.java
index ae5211e..0d2f325 100644
--- a/rackspace-cloudbigdata/src/test/java/org/jclouds/rackspace/cloudbigdata/v1/features/ProfileApiLiveTest.java
+++ b/rackspace-cloudbigdata/src/test/java/org/jclouds/rackspace/cloudbigdata/v1/features/ProfileApiLiveTest.java
@@ -36,14 +36,14 @@
  * Profile live test
  */
 @Test(groups = "live", testName = "ProfileApiLiveTest", singleThreaded = true)
-public class ProfileApiLiveTest extends BaseCloudBigDataApiLiveTest {   
+public class ProfileApiLiveTest extends BaseCloudBigDataApiLiveTest {
 
    @Override
    @BeforeClass(groups = { "integration", "live" })
    public void setup() {
       super.setup();
-      for (String zone : filterZones(api.getConfiguredZones())) {
-         ProfileApi profileApi = api.getProfileApiForZone(zone);
+      for (String region : filterRegions(api.getConfiguredRegions())) {
+         ProfileApi profileApi = api.getProfileApi(region);
 
          CreateProfile createProfile = CreateProfile.builder()
                .username("john.doe")
@@ -67,8 +67,8 @@
 
    @Test
    public void updateProfile() {
-      for (String zone : filterZones(api.getConfiguredZones())) {
-         ProfileApi profileApi = api.getProfileApiForZone(zone);
+      for (String region : filterRegions(api.getConfiguredRegions())) {
+         ProfileApi profileApi = api.getProfileApi(region);
 
          CreateProfile createProfile = CreateProfile.builder()
                .username("john.doe2")
@@ -88,11 +88,11 @@
          assertEquals(profile.getCredentialsUsername(), "jdoe");
       }
    }
-      
+
       @Test
       public void getProfile() {
-         for (String zone : filterZones(api.getConfiguredZones())) {
-            ProfileApi profileApi = api.getProfileApiForZone(zone);
+         for (String region : filterRegions(api.getConfiguredRegions())) {
+            ProfileApi profileApi = api.getProfileApi(region);
 
             Profile profile = profileApi.get();
 
diff --git a/rackspace-cloudbigdata/src/test/java/org/jclouds/rackspace/cloudbigdata/v1/features/ProfileApiMockTest.java b/rackspace-cloudbigdata/src/test/java/org/jclouds/rackspace/cloudbigdata/v1/features/ProfileApiMockTest.java
index 46a7e06..bbeea82 100644
--- a/rackspace-cloudbigdata/src/test/java/org/jclouds/rackspace/cloudbigdata/v1/features/ProfileApiMockTest.java
+++ b/rackspace-cloudbigdata/src/test/java/org/jclouds/rackspace/cloudbigdata/v1/features/ProfileApiMockTest.java
@@ -48,17 +48,17 @@
 
       try {
          CloudBigDataApi cbdApi = api(server.getUrl("/").toString(), "rackspace-cloudbigdata", overrides);
-         ProfileApi api = cbdApi.getProfileApiForZone("ORD");
+         ProfileApi api = cbdApi.getProfileApi("ORD");
 
          CreateProfile createProfile = CreateProfile.builder()
                .username("john.doe")
                .password("j0Hnd03")
                .sshKeys(ImmutableList.of(ProfileSSHKey.builder().name("t@test")
-                     .publicKey("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtUFnkFrqDDCgEqW1akQkpMOX\n" + 
-                           "Owwvg73PLn5Z5QgvxjvJhRCg9ZTR/OWXpWcYqFVNagH4Zs8NOb9921TyQ+ydMnatOM\n" + 
-                           "haxMh1ZwTgaUcvndOF8fY+kcERiw1l0iT95w42F8IdUH42Z+8KihZM8gVsbMS6qYTi\n" + 
-                           "OM29WHX7y37wuJIzqf3N2TiVXrqfjwugvY/bZ+47EUn78uk6aPZYJGXdDgaFqnIXUV\n" + 
-                           "N+hRFYXgKnU0Ui0aQkuYwnAW8KmanLoNU2xodrb6/XqWnSAAmwl7aoGKFunQsT6xDW\n" + 
+                     .publicKey("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtUFnkFrqDDCgEqW1akQkpMOX\n" +
+                           "Owwvg73PLn5Z5QgvxjvJhRCg9ZTR/OWXpWcYqFVNagH4Zs8NOb9921TyQ+ydMnatOM\n" +
+                           "haxMh1ZwTgaUcvndOF8fY+kcERiw1l0iT95w42F8IdUH42Z+8KihZM8gVsbMS6qYTi\n" +
+                           "OM29WHX7y37wuJIzqf3N2TiVXrqfjwugvY/bZ+47EUn78uk6aPZYJGXdDgaFqnIXUV\n" +
+                           "N+hRFYXgKnU0Ui0aQkuYwnAW8KmanLoNU2xodrb6/XqWnSAAmwl7aoGKFunQsT6xDW\n" +
                            "yQk+ncUHUcdofDUqgd3lXmHGrTmQW97vqexDEnhsJ+AwbLGD5dukr t@test")
                            .build()))
                            .credentialsUsername("jdoe")
@@ -97,17 +97,17 @@
 
       try {
          CloudBigDataApi cbdApi = api(server.getUrl("/").toString(), "rackspace-cloudbigdata", overrides);
-         ProfileApi api = cbdApi.getProfileApiForZone("ORD");
+         ProfileApi api = cbdApi.getProfileApi("ORD");
 
          CreateProfile createProfile = CreateProfile.builder()
                .username("john.doe")
                .password("j0Hnd03")
                .sshKeys(ImmutableList.of(ProfileSSHKey.builder().name("t@test")
-                     .publicKey("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtUFnkFrqDDCgEqW1akQkpMOX\n" + 
-                           "Owwvg73PLn5Z5QgvxjvJhRCg9ZTR/OWXpWcYqFVNagH4Zs8NOb9921TyQ+ydMnatOM\n" + 
-                           "haxMh1ZwTgaUcvndOF8fY+kcERiw1l0iT95w42F8IdUH42Z+8KihZM8gVsbMS6qYTi\n" + 
-                           "OM29WHX7y37wuJIzqf3N2TiVXrqfjwugvY/bZ+47EUn78uk6aPZYJGXdDgaFqnIXUV\n" + 
-                           "N+hRFYXgKnU0Ui0aQkuYwnAW8KmanLoNU2xodrb6/XqWnSAAmwl7aoGKFunQsT6xDW\n" + 
+                     .publicKey("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtUFnkFrqDDCgEqW1akQkpMOX\n" +
+                           "Owwvg73PLn5Z5QgvxjvJhRCg9ZTR/OWXpWcYqFVNagH4Zs8NOb9921TyQ+ydMnatOM\n" +
+                           "haxMh1ZwTgaUcvndOF8fY+kcERiw1l0iT95w42F8IdUH42Z+8KihZM8gVsbMS6qYTi\n" +
+                           "OM29WHX7y37wuJIzqf3N2TiVXrqfjwugvY/bZ+47EUn78uk6aPZYJGXdDgaFqnIXUV\n" +
+                           "N+hRFYXgKnU0Ui0aQkuYwnAW8KmanLoNU2xodrb6/XqWnSAAmwl7aoGKFunQsT6xDW\n" +
                            "yQk+ncUHUcdofDUqgd3lXmHGrTmQW97vqexDEnhsJ+AwbLGD5dukr t@test")
                            .build()))
                            .credentialsUsername("jdoe")
@@ -138,7 +138,7 @@
 
       try {
          CloudBigDataApi cbdApi = api(server.getUrl("/").toString(), "rackspace-cloudbigdata", overrides);
-         ProfileApi api = cbdApi.getProfileApiForZone("ORD");
+         ProfileApi api = cbdApi.getProfileApi("ORD");
          Profile profile = api.get();
 
          /*
@@ -171,7 +171,7 @@
 
       try {
          CloudBigDataApi cbdApi = api(server.getUrl("/").toString(), "rackspace-cloudbigdata", overrides);
-         ProfileApi api = cbdApi.getProfileApiForZone("ORD");
+         ProfileApi api = cbdApi.getProfileApi("ORD");
          Profile profile = api.get();
 
          /*
diff --git a/rackspace-cloudfiles/src/main/java/org/jclouds/rackspace/cloudfiles/v1/CloudFilesApi.java b/rackspace-cloudfiles/src/main/java/org/jclouds/rackspace/cloudfiles/v1/CloudFilesApi.java
index e888725..2a0e50d 100644
--- a/rackspace-cloudfiles/src/main/java/org/jclouds/rackspace/cloudfiles/v1/CloudFilesApi.java
+++ b/rackspace-cloudfiles/src/main/java/org/jclouds/rackspace/cloudfiles/v1/CloudFilesApi.java
@@ -32,7 +32,7 @@
  * <p/>
  * Additionally, Cloud Files provides a simple yet powerful way to publish and distribute content
  * behind a Content Distribution Network.
- * 
+ *
  * @see CDNApi
  * @see SwiftApi
  */
@@ -41,21 +41,21 @@
 
    /**
     * Provides access to Cloud Files CDN features.
-    * 
+    *
     * @param region  the region to access the CDN API.
-    * 
+    *
     * @return the {@link CDNApi} for the specified region.
     */
    @Delegate
-   CDNApi getCDNApiForRegion(@EndpointParam(parser = RegionToCDNEndpoint.class) @Nullable String region);
+   CDNApi getCDNApi(@EndpointParam(parser = RegionToCDNEndpoint.class) @Nullable String region);
 
    /**
     * Provides access to Cloud Files CDN features.
-    * 
+    *
     * @param region  the region to access the CDN API.
-    * 
+    *
     * @return the {@link CDNApi} for the specified region.
-    * 
+    *
     * @deprecated Please use {@link #getCDNApiForRegion(String)}. This method will be removed in jclouds 1.8.
     */
    @Deprecated
diff --git a/rackspace-cloudfiles/src/test/java/org/jclouds/rackspace/cloudfiles/v1/features/CloudFilesAccountApiLiveTest.java b/rackspace-cloudfiles/src/test/java/org/jclouds/rackspace/cloudfiles/v1/features/CloudFilesAccountApiLiveTest.java
index 8e57cf5..f91d2ba 100644
--- a/rackspace-cloudfiles/src/test/java/org/jclouds/rackspace/cloudfiles/v1/features/CloudFilesAccountApiLiveTest.java
+++ b/rackspace-cloudfiles/src/test/java/org/jclouds/rackspace/cloudfiles/v1/features/CloudFilesAccountApiLiveTest.java
@@ -36,8 +36,8 @@
    }
 
    public void testUrlKeyExists() throws Exception {
-      for (String regionId : regions) {
-         Account account = api.getAccountApiForRegion(regionId).get();
+      for (String region : regions) {
+         Account account = api.getAccountApi(region).get();
          assertTrue(account.getTemporaryUrlKey().isPresent());
       }
    }
diff --git a/rackspace-cloudfiles/src/test/java/org/jclouds/rackspace/cloudfiles/v1/features/CloudFilesCDNApiLiveTest.java b/rackspace-cloudfiles/src/test/java/org/jclouds/rackspace/cloudfiles/v1/features/CloudFilesCDNApiLiveTest.java
index 39e95cc..887033d 100644
--- a/rackspace-cloudfiles/src/test/java/org/jclouds/rackspace/cloudfiles/v1/features/CloudFilesCDNApiLiveTest.java
+++ b/rackspace-cloudfiles/src/test/java/org/jclouds/rackspace/cloudfiles/v1/features/CloudFilesCDNApiLiveTest.java
@@ -53,20 +53,20 @@
    }
 
    public void testEnable() throws Exception {
-      for (String regionId : regions) {
-         assertNotNull(api.getCDNApiForRegion(regionId).enable(name));
-         
-         CDNContainer container = api.getCDNApiForRegion(regionId).get(name);
+      for (String region : regions) {
+         assertNotNull(api.getCDNApi(region).enable(name));
+
+         CDNContainer container = api.getCDNApi(region).get(name);
          assertCDNContainerNotNull(container);
          assertTrue(container.isEnabled());
       }
    }
 
    public void testEnableWithTTL() throws Exception {
-      for (String regionId : regions) {
-         assertNotNull(api.getCDNApiForRegion(regionId).enable(name, 777777));
+      for (String region : regions) {
+         assertNotNull(api.getCDNApi(region).enable(name, 777777));
 
-         CDNContainer container = api.getCDNApiForRegion(regionId).get(name);
+         CDNContainer container = api.getCDNApi(region).get(name);
          assertCDNContainerNotNull(container);
          assertTrue(container.isEnabled());
          assertTrue(container.getTtl() == 777777);
@@ -74,19 +74,19 @@
    }
 
    public void testDisable() throws Exception {
-      for (String regionId : regions) {
-         assertTrue(api.getCDNApiForRegion(regionId).disable(name));
+      for (String region : regions) {
+         assertTrue(api.getCDNApi(region).disable(name));
 
-         CDNContainer container = api.getCDNApiForRegion(regionId).get(name);
+         CDNContainer container = api.getCDNApi(region).get(name);
          assertFalse(container.isEnabled());
       }
    }
 
    public void testList() throws Exception {
-      for (String regionId : regions) {
-         List<CDNContainer> cdnResponse = api.getCDNApiForRegion(regionId).list().toList();
+      for (String region : regions) {
+         List<CDNContainer> cdnResponse = api.getCDNApi(region).list().toList();
          assertNotNull(cdnResponse);
-         
+
          for (CDNContainer cdnContainer : cdnResponse) {
             assertCDNContainerNotNull(cdnContainer);
             assertTrue(cdnContainer.isEnabled());
@@ -96,35 +96,35 @@
 
    public void testListWithOptions() throws Exception {
       String lexicographicallyBeforeName = name.substring(0, name.length() - 1);
-      for (String regionId : regions) {
+      for (String region : regions) {
          ListCDNContainerOptions options = new ListCDNContainerOptions().marker(lexicographicallyBeforeName);
-          
-         CDNContainer cdnContainer = api.getCDNApiForRegion(regionId).list(options).get(0);
+
+         CDNContainer cdnContainer = api.getCDNApi(region).list(options).get(0);
          assertCDNContainerNotNull(cdnContainer);
          assertTrue(cdnContainer.isEnabled());
       }
    }
 
    public void testGet() throws Exception {
-      for (String regionId : regions) {
-         CDNContainer container = api.getCDNApiForRegion(regionId).get(name);
+      for (String region : regions) {
+         CDNContainer container = api.getCDNApi(region).get(name);
          assertCDNContainerNotNull(container);
          assertTrue(container.isEnabled());
       }
    }
 
    public void testPurgeObject() throws Exception {
-      for (String regionId : regions) {
+      for (String region : regions) {
          String objectName = "testPurge";
          Payload payload = Payloads.newByteSourcePayload(ByteSource.wrap(new byte[] {1, 2, 3}));
-         ObjectApi objectApi = api.getObjectApiForRegionAndContainer(regionId, name);
-         
+         ObjectApi objectApi = api.getObjectApiForContainer(region, name);
+
          // create a new object
          objectApi.put(objectName, payload);
-         
-         CDNApi cdnApi = api.getCDNApiForRegion(regionId);
+
+         CDNApi cdnApi = api.getCDNApi(region);
          assertTrue(cdnApi.purgeObject(name, "testPurge", ImmutableList.<String>of()));
-         
+
          // delete the object
          objectApi.delete(objectName);
          assertNull(objectApi.get(objectName, GetOptions.NONE));
@@ -132,12 +132,12 @@
    }
 
    public void testUpdate() throws Exception {
-      for (String regionId : regions) {
+      for (String region : regions) {
          // enable with a ttl
-         assertNotNull(api.getCDNApiForRegion(regionId).enable(name, 777777));
-         
+         assertNotNull(api.getCDNApi(region).enable(name, 777777));
+
          // now get the container
-         CDNContainer original = api.getCDNApiForRegion(regionId).get(name);
+         CDNContainer original = api.getCDNApi(region).get(name);
          assertTrue(original.isEnabled());
          assertCDNContainerNotNull(original);
 
@@ -147,13 +147,13 @@
                                                 .logRetention(true)
                                                 .enabled(false);
          // update the container
-         assertTrue(api.getCDNApiForRegion(regionId).update(name, opts));
-         
+         assertTrue(api.getCDNApi(region).update(name, opts));
+
          // now get the updated container
-         CDNContainer updated = api.getCDNApiForRegion(regionId).get(name);
+         CDNContainer updated = api.getCDNApi(region).get(name);
          assertFalse(updated.isEnabled());
          assertCDNContainerNotNull(updated);
-         
+
          assertNotEquals(original.getTtl(), updated.getTtl());
          assertTrue(updated.isLogRetentionEnabled());
       }
@@ -173,17 +173,17 @@
    @BeforeClass(groups = "live")
    public void setup() {
       super.setup();
-      for (String regionId : regions) {
-         api.getContainerApiForRegion(regionId).create(name);
+      for (String region : regions) {
+         api.getContainerApi(region).create(name);
       }
    }
 
    @Override
    @AfterClass(groups = "live")
    public void tearDown() {
-      for (String regionId : regions) {
-         api.getCDNApiForRegion(regionId).disable(name);
-         api.getContainerApiForRegion(regionId).deleteIfEmpty(name);
+      for (String region : regions) {
+         api.getCDNApi(region).disable(name);
+         api.getContainerApi(region).deleteIfEmpty(name);
       }
       super.tearDown();
    }
diff --git a/rackspace-cloudfiles/src/test/java/org/jclouds/rackspace/cloudfiles/v1/features/CloudFilesCDNApiMockTest.java b/rackspace-cloudfiles/src/test/java/org/jclouds/rackspace/cloudfiles/v1/features/CloudFilesCDNApiMockTest.java
index de55058..a3fa13c 100644
--- a/rackspace-cloudfiles/src/test/java/org/jclouds/rackspace/cloudfiles/v1/features/CloudFilesCDNApiMockTest.java
+++ b/rackspace-cloudfiles/src/test/java/org/jclouds/rackspace/cloudfiles/v1/features/CloudFilesCDNApiMockTest.java
@@ -61,7 +61,7 @@
 
       try {
          CloudFilesApi api = api(server.getUrl("/").toString(), "rackspace-cloudfiles");
-         CDNApi cdnApi = api.getCDNApiForRegion("DFW");
+         CDNApi cdnApi = api.getCDNApi("DFW");
 
          ImmutableList<CDNContainer> cdnContainers = cdnApi.list().toList();
 
@@ -82,7 +82,7 @@
 
       try {
          CloudFilesApi api = api(server.getUrl("/").toString(), "rackspace-cloudfiles");
-         CDNApi cdnApi = api.getCDNApiForRegion("DFW");
+         CDNApi cdnApi = api.getCDNApi("DFW");
 
          List<CDNContainer> cdnContainers = cdnApi.list().toList();
 
@@ -104,7 +104,7 @@
       try {
          CloudFilesApi api = api(server.getUrl("/").toString(), "rackspace-cloudfiles");
          ListCDNContainerOptions options = new ListCDNContainerOptions().marker("cdn-container-3");
-         ImmutableList<CDNContainer> containers = api.getCDNApiForRegion("DFW").list(options).toList();
+         ImmutableList<CDNContainer> containers = api.getCDNApi("DFW").list(options).toList();
 
          for (CDNContainer container : containers) {
             assertCDNContainerNotNull(container);
@@ -128,7 +128,7 @@
       try {
          CloudFilesApi api = api(server.getUrl("/").toString(), "rackspace-cloudfiles");
          ListCDNContainerOptions options = ListCDNContainerOptions.Builder.marker("cdn-container-3");
-         FluentIterable<CDNContainer> containers = api.getCDNApiForRegion("DFW").list(options);
+         FluentIterable<CDNContainer> containers = api.getCDNApi("DFW").list(options);
 
          assertEquals(server.getRequestCount(), 2);
          assertAuthentication(server);
@@ -150,7 +150,7 @@
          CloudFilesApi api = api(server.getUrl("/").toString(), "rackspace-cloudfiles");
 
          // enable a CDN Container
-         URI enabledContainer = api.getCDNApiForRegion("DFW").enable("container-1");
+         URI enabledContainer = api.getCDNApi("DFW").enable("container-1");
          assertNotNull(enabledContainer);
 
          assertEquals(server.getRequestCount(), 2);
@@ -165,11 +165,11 @@
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
       server.enqueue(addCommonHeaders(enabledResponse().setResponseCode(404)));
- 
+
       try {
          CloudFilesApi api = api(server.getUrl("/").toString(), "rackspace-cloudfiles");
          // enable a CDN Container
-         assertNull(api.getCDNApiForRegion("DFW").enable("container-1"));
+         assertNull(api.getCDNApi("DFW").enable("container-1"));
 
          assertEquals(server.getRequestCount(), 2);
          assertAuthentication(server);
@@ -188,7 +188,7 @@
          CloudFilesApi api = api(server.getUrl("/").toString(), "rackspace-cloudfiles");
 
          // enable a CDN Container with a TTL
-         URI enabledContainer = api.getCDNApiForRegion("DFW").enable("container-1", 777777);
+         URI enabledContainer = api.getCDNApi("DFW").enable("container-1", 777777);
          assertNotNull(enabledContainer);
 
          assertEquals(server.getRequestCount(), 2);
@@ -208,7 +208,7 @@
          CloudFilesApi api = api(server.getUrl("/").toString(), "rackspace-cloudfiles");
 
          // enable a CDN Container with a TTL
-         URI enabledContainer = api.getCDNApiForRegion("DFW").enable("container-1", 777777);
+         URI enabledContainer = api.getCDNApi("DFW").enable("container-1", 777777);
          assertNull(enabledContainer);
 
          assertEquals(server.getRequestCount(), 2);
@@ -228,7 +228,7 @@
          CloudFilesApi api = api(server.getUrl("/").toString(), "rackspace-cloudfiles");
 
          // disable a CDN Container
-         assertTrue(api.getCDNApiForRegion("DFW").disable("container-1"));
+         assertTrue(api.getCDNApi("DFW").disable("container-1"));
 
          assertEquals(server.getRequestCount(), 2);
          assertAuthentication(server);
@@ -247,7 +247,7 @@
          CloudFilesApi api = api(server.getUrl("/").toString(), "rackspace-cloudfiles");
 
          // disable a CDN Container
-         boolean disbledContainer = api.getCDNApiForRegion("DFW").disable("container-1");
+         boolean disbledContainer = api.getCDNApi("DFW").disable("container-1");
          assertFalse(disbledContainer);
 
          assertEquals(server.getRequestCount(), 2);
@@ -262,11 +262,11 @@
       MockWebServer server = mockOpenStackServer();
       server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
       server.enqueue(addCommonHeaders(enabledResponse().setResponseCode(201)));
-      
+
       try {
          CloudFilesApi api = api(server.getUrl("/").toString(), "rackspace-cloudfiles");
 
-         CDNContainer cdnContainer = api.getCDNApiForRegion("DFW").get("container-1");
+         CDNContainer cdnContainer = api.getCDNApi("DFW").get("container-1");
          assertCDNContainerNotNull(cdnContainer);
          assertEquals(mockCDNContainer, cdnContainer);
 
@@ -286,7 +286,7 @@
       try {
          CloudFilesApi api = api(server.getUrl("/").toString(), "rackspace-cloudfiles");
 
-         CDNContainer cdnContainer = api.getCDNApiForRegion("DFW").get("cdn-container with spaces");
+         CDNContainer cdnContainer = api.getCDNApi("DFW").get("cdn-container with spaces");
          assertCDNContainerNotNull(cdnContainer);
          assertEquals(mockCDNContainerWithSpaces, cdnContainer);
 
@@ -306,7 +306,7 @@
       try {
          CloudFilesApi api = api(server.getUrl("/").toString(), "rackspace-cloudfiles");
 
-         CDNContainer cdnContainer = api.getCDNApiForRegion("DFW").get("container-1");
+         CDNContainer cdnContainer = api.getCDNApi("DFW").get("container-1");
 
          assertAuthentication(server);
          assertRequest(server.takeRequest(), "HEAD", "/v1/MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9/container-1");
@@ -325,7 +325,7 @@
          CloudFilesApi api = api(server.getUrl("/").toString(), "rackspace-cloudfiles");
 
          // purge the object
-         assertTrue(api.getCDNApiForRegion("DFW").purgeObject("myContainer", "myObject", emails));
+         assertTrue(api.getCDNApi("DFW").purgeObject("myContainer", "myObject", emails));
 
          assertEquals(server.getRequestCount(), 2);
          assertAuthentication(server);
@@ -344,7 +344,7 @@
          CloudFilesApi api = api(server.getUrl("/").toString(), "rackspace-cloudfiles");
 
          // purge the object
-         assertFalse(api.getCDNApiForRegion("DFW").purgeObject("myContainer", "myObject", emails));
+         assertFalse(api.getCDNApi("DFW").purgeObject("myContainer", "myObject", emails));
 
          assertEquals(server.getRequestCount(), 2);
          assertAuthentication(server);
@@ -364,13 +364,13 @@
       try {
          CloudFilesApi api = api(server.getUrl("/").toString(), "rackspace-cloudfiles");
 
-         CDNContainer cdnContainer = api.getCDNApiForRegion("DFW").get("container-1");
+         CDNContainer cdnContainer = api.getCDNApi("DFW").get("container-1");
          assertCDNContainerNotNull(cdnContainer);
 
          // update the CDN Container
-         assertTrue(api.getCDNApiForRegion("DFW").update("container-1", enabled(false).logRetention(true).ttl(7654321)));
+         assertTrue(api.getCDNApi("DFW").update("container-1", enabled(false).logRetention(true).ttl(7654321)));
 
-         cdnContainer = api.getCDNApiForRegion("DFW").get("container-1");
+         cdnContainer = api.getCDNApi("DFW").get("container-1");
          assertCDNContainerNotNull(cdnContainer);
 
          CDNContainer updatedContainer = CDNContainer.builder()
@@ -405,11 +405,11 @@
       try {
          CloudFilesApi api = api(server.getUrl("/").toString(), "rackspace-cloudfiles");
 
-         CDNContainer cdnContainer = api.getCDNApiForRegion("DFW").get("container-1");
+         CDNContainer cdnContainer = api.getCDNApi("DFW").get("container-1");
          assertCDNContainerNotNull(cdnContainer);
 
          // update the CDN Container
-         assertFalse(api.getCDNApiForRegion("DFW").update("container-1", enabled(false).logRetention(true).ttl(7654321)));
+         assertFalse(api.getCDNApi("DFW").update("container-1", enabled(false).logRetention(true).ttl(7654321)));
 
          assertEquals(server.getRequestCount(), 3);
          assertAuthentication(server);
diff --git a/rackspace-cloudqueues-uk/src/main/java/org/jclouds/rackspace/cloudqueues/uk/CloudQueuesUKProviderMetadata.java b/rackspace-cloudqueues-uk/src/main/java/org/jclouds/rackspace/cloudqueues/uk/CloudQueuesUKProviderMetadata.java
index cd4f446..35fad47 100644
--- a/rackspace-cloudqueues-uk/src/main/java/org/jclouds/rackspace/cloudqueues/uk/CloudQueuesUKProviderMetadata.java
+++ b/rackspace-cloudqueues-uk/src/main/java/org/jclouds/rackspace/cloudqueues/uk/CloudQueuesUKProviderMetadata.java
@@ -16,9 +16,16 @@
  */
 package org.jclouds.rackspace.cloudqueues.uk;
 
-import com.google.common.collect.ImmutableSet;
-import com.google.inject.Module;
-import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.ZoneModule;
+import static org.jclouds.location.reference.LocationConstants.ISO3166_CODES;
+import static org.jclouds.location.reference.LocationConstants.PROPERTY_REGION;
+import static org.jclouds.location.reference.LocationConstants.PROPERTY_REGIONS;
+import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
+import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
+
+import java.net.URI;
+import java.util.Properties;
+
+import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.RegionModule;
 import org.jclouds.openstack.marconi.v1.MarconiApiMetadata;
 import org.jclouds.openstack.marconi.v1.config.MarconiHttpApiModule;
 import org.jclouds.openstack.marconi.v1.config.MarconiTypeAdapters;
@@ -29,14 +36,8 @@
 import org.jclouds.rackspace.cloudidentity.v2_0.config.CloudIdentityAuthenticationModule;
 import org.jclouds.rackspace.cloudidentity.v2_0.config.CloudIdentityCredentialTypes;
 
-import java.net.URI;
-import java.util.Properties;
-
-import static org.jclouds.location.reference.LocationConstants.ISO3166_CODES;
-import static org.jclouds.location.reference.LocationConstants.PROPERTY_ZONE;
-import static org.jclouds.location.reference.LocationConstants.PROPERTY_ZONES;
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
+import com.google.common.collect.ImmutableSet;
+import com.google.inject.Module;
 
 /**
  * Implementation of Rackspace Cloud Queues.
@@ -64,12 +65,12 @@
       Properties properties = new Properties();
       properties.setProperty(CREDENTIAL_TYPE, CloudIdentityCredentialTypes.API_KEY_CREDENTIALS);
       properties.setProperty(SERVICE_TYPE, ServiceType.QUEUES);
-      properties.setProperty(PROPERTY_ZONES, "LON");
-      properties.setProperty(PROPERTY_ZONE + ".LON." + ISO3166_CODES, "GB-SLG");
+      properties.setProperty(PROPERTY_REGIONS, "LON");
+      properties.setProperty(PROPERTY_REGION + ".LON." + ISO3166_CODES, "GB-SLG");
 
       return properties;
    }
-   
+
    public static class Builder extends BaseProviderMetadata.Builder {
 
       protected Builder(){
@@ -84,7 +85,7 @@
                .defaultModules(ImmutableSet.<Class<? extends Module>>builder()
                      .add(CloudIdentityAuthenticationApiModule.class)
                      .add(CloudIdentityAuthenticationModule.class)
-                     .add(ZoneModule.class)
+                     .add(RegionModule.class)
                      .add(MarconiTypeAdapters.class)
                      .add(MarconiHttpApiModule.class).build())
                .build())
diff --git a/rackspace-cloudqueues-us/src/main/java/org/jclouds/rackspace/cloudqueues/us/CloudQueuesUSProviderMetadata.java b/rackspace-cloudqueues-us/src/main/java/org/jclouds/rackspace/cloudqueues/us/CloudQueuesUSProviderMetadata.java
index 00aa0aa..f50fbd5 100644
--- a/rackspace-cloudqueues-us/src/main/java/org/jclouds/rackspace/cloudqueues/us/CloudQueuesUSProviderMetadata.java
+++ b/rackspace-cloudqueues-us/src/main/java/org/jclouds/rackspace/cloudqueues/us/CloudQueuesUSProviderMetadata.java
@@ -16,9 +16,16 @@
  */
 package org.jclouds.rackspace.cloudqueues.us;
 
-import com.google.common.collect.ImmutableSet;
-import com.google.inject.Module;
-import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.ZoneModule;
+import static org.jclouds.location.reference.LocationConstants.ISO3166_CODES;
+import static org.jclouds.location.reference.LocationConstants.PROPERTY_REGION;
+import static org.jclouds.location.reference.LocationConstants.PROPERTY_REGIONS;
+import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
+import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
+
+import java.net.URI;
+import java.util.Properties;
+
+import org.jclouds.openstack.keystone.v2_0.config.KeystoneAuthenticationModule.RegionModule;
 import org.jclouds.openstack.marconi.v1.MarconiApiMetadata;
 import org.jclouds.openstack.marconi.v1.config.MarconiHttpApiModule;
 import org.jclouds.openstack.marconi.v1.config.MarconiTypeAdapters;
@@ -29,14 +36,8 @@
 import org.jclouds.rackspace.cloudidentity.v2_0.config.CloudIdentityAuthenticationModule;
 import org.jclouds.rackspace.cloudidentity.v2_0.config.CloudIdentityCredentialTypes;
 
-import java.net.URI;
-import java.util.Properties;
-
-import static org.jclouds.location.reference.LocationConstants.ISO3166_CODES;
-import static org.jclouds.location.reference.LocationConstants.PROPERTY_ZONE;
-import static org.jclouds.location.reference.LocationConstants.PROPERTY_ZONES;
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.CREDENTIAL_TYPE;
-import static org.jclouds.openstack.keystone.v2_0.config.KeystoneProperties.SERVICE_TYPE;
+import com.google.common.collect.ImmutableSet;
+import com.google.inject.Module;
 
 /**
  * Implementation of Rackspace Cloud Queues.
@@ -65,16 +66,16 @@
       properties.setProperty(CREDENTIAL_TYPE, CloudIdentityCredentialTypes.API_KEY_CREDENTIALS);
       properties.setProperty(SERVICE_TYPE, ServiceType.QUEUES);
 
-      properties.setProperty(PROPERTY_ZONES, "ORD,DFW,IAD,SYD,HKG");
-      properties.setProperty(PROPERTY_ZONE + ".ORD." + ISO3166_CODES, "US-IL");
-      properties.setProperty(PROPERTY_ZONE + ".DFW." + ISO3166_CODES, "US-TX");
-      properties.setProperty(PROPERTY_ZONE + ".IAD." + ISO3166_CODES, "US-VA");
-      properties.setProperty(PROPERTY_ZONE + ".SYD." + ISO3166_CODES, "AU-NSW");
-      properties.setProperty(PROPERTY_ZONE + ".HKG." + ISO3166_CODES, "HK");
+      properties.setProperty(PROPERTY_REGIONS, "ORD,DFW,IAD,SYD,HKG");
+      properties.setProperty(PROPERTY_REGION + ".ORD." + ISO3166_CODES, "US-IL");
+      properties.setProperty(PROPERTY_REGION + ".DFW." + ISO3166_CODES, "US-TX");
+      properties.setProperty(PROPERTY_REGION + ".IAD." + ISO3166_CODES, "US-VA");
+      properties.setProperty(PROPERTY_REGION + ".SYD." + ISO3166_CODES, "AU-NSW");
+      properties.setProperty(PROPERTY_REGION + ".HKG." + ISO3166_CODES, "HK");
 
       return properties;
    }
-   
+
    public static class Builder extends BaseProviderMetadata.Builder {
 
       protected Builder(){
@@ -89,7 +90,7 @@
                   .defaultModules(ImmutableSet.<Class<? extends Module>>builder()
                                               .add(CloudIdentityAuthenticationApiModule.class)
                                               .add(CloudIdentityAuthenticationModule.class)
-                                              .add(ZoneModule.class)
+                                              .add(RegionModule.class)
                                               .add(MarconiTypeAdapters.class)
                                               .add(MarconiHttpApiModule.class).build())
                   .build())