Factored out Client ID into MarconiApi.
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 3583bbe..e482211 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
@@ -49,27 +49,22 @@
    /**
     * Provides access to Queue features.
     *
-    * @param zone The zone where this queue will live.
+    * @param zone     The zone 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 getQueueApiForZone(
-         @EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone);
+         @EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone,
+         @HeaderParam("Client-ID") UUID clientId);
 
    /**
     * Provides access to Message features.
     *
     * @param zone The zone where this queue lives.
-    * @param name Name of the queue.
-    */
-   @Delegate
-   @Path("/queues/{name}")
-   MessageApi getMessageApiForZoneAndQueue(
-         @EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone, @PathParam("name") String name);
-
-   /**
-    * Provides access to Claim features.
-    *
-    * @param zone The zone 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
@@ -79,6 +74,24 @@
     */
    @Delegate
    @Path("/queues/{name}")
+   MessageApi getMessageApiForZoneAndQueue(
+         @EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone,
+         @HeaderParam("Client-ID") UUID clientId,
+         @PathParam("name") String name);
+
+   /**
+    * Provides access to Claim features.
+    *
+    * @param zone     The zone 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 getClaimApiForZoneAndClientAndQueue(
          @EndpointParam(parser = ZoneToEndpoint.class) @Nullable String zone,
          @HeaderParam("Client-ID") UUID clientId,
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 645602c..70694dd 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
@@ -38,14 +38,12 @@
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
 import javax.ws.rs.GET;
-import javax.ws.rs.HeaderParam;
 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 java.util.UUID;
 
 import static org.jclouds.Fallbacks.EmptyListOnNotFoundOr404;
 import static org.jclouds.Fallbacks.FalseOnNotFoundOr404;
@@ -63,11 +61,6 @@
    /**
     * Create message(s) on a queue.
     *
-    * @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 messages The messages created on the queue. The number of messages allowed in one request are configurable
     *                 by your cloud provider. Consult your cloud provider documentation to learn the maximum.
     */
@@ -76,14 +69,12 @@
    @Path("/messages")
    @ResponseParser(ParseMessagesCreated.class)
    @Fallback(NullOnNotFoundOr404.class)
-   MessagesCreated create(@HeaderParam("Client-ID") UUID clientId,
-                          @BinderParam(BindToJsonPayload.class) List<CreateMessage> messages);
+   MessagesCreated create(@BinderParam(BindToJsonPayload.class) List<CreateMessage> messages);
 
    /**
     * Streams the messages off of a queue. In a very active queue it's possible that you could continuously stream
     * messages indefinitely.
     *
-    * @param clientId A UUID for each client instance.
     * @param options  Options for streaming messages to your client.
     */
    @Named("message:stream")
@@ -92,13 +83,11 @@
    @Consumes(MediaType.APPLICATION_JSON)
    @Fallback(EmptyPaginatedCollectionOnNotFoundOr404.class)
    @Path("/messages")
-   MessageStream stream(@HeaderParam("Client-ID") UUID clientId,
-                        StreamMessagesOptions... options);
+   MessageStream stream(StreamMessagesOptions... options);
 
    /**
     * Lists specific messages. Unlike the stream method, a client's own messages are always returned in this operation.
     *
-    * @param clientId A UUID for each client instance.
     * @param ids      Specifies the IDs of the messages to list.
     */
    @Named("message:list")
@@ -107,13 +96,11 @@
    @Consumes(MediaType.APPLICATION_JSON)
    @Path("/messages")
    @Fallback(EmptyListOnNotFoundOr404.class)
-   List<Message> list(@HeaderParam("Client-ID") UUID clientId,
-                      @BinderParam(BindIdsToQueryParam.class) Iterable<String> ids);
+   List<Message> list(@BinderParam(BindIdsToQueryParam.class) Iterable<String> ids);
 
    /**
     * Gets a specific message. Unlike the stream method, a client's own messages are always returned in this operation.
     *
-    * @param clientId A UUID for each client instance.
     * @param id       Specific ID of the message to get.
     */
    @Named("message:get")
@@ -122,14 +109,12 @@
    @Consumes(MediaType.APPLICATION_JSON)
    @Path("/messages/{message_id}")
    @Fallback(NullOnNotFoundOr404.class)
-   Message get(@HeaderParam("Client-ID") UUID clientId,
-               @PathParam("message_id") String id);
+   Message get(@PathParam("message_id") String id);
 
    /**
     * Deletes specific messages. If any of the message IDs are malformed or non-existent, they are ignored. The
     * remaining valid messages IDs are deleted.
     *
-    * @param clientId A UUID for each client instance.
     * @param ids      Specifies the IDs of the messages to delete.
     */
    @Named("message:delete")
@@ -137,8 +122,7 @@
    @Consumes(MediaType.APPLICATION_JSON)
    @Path("/messages")
    @Fallback(FalseOnNotFoundOr404.class)
-   boolean delete(@HeaderParam("Client-ID") UUID clientId,
-                  @BinderParam(BindIdsToQueryParam.class) Iterable<String> ids);
+   boolean delete(@BinderParam(BindIdsToQueryParam.class) Iterable<String> ids);
 
    /**
     * The claimId parameter specifies that the message is deleted only if it has the specified claim ID and that claim
@@ -146,7 +130,6 @@
     * worker's claim expires before it can delete a message that it has processed, the worker must roll back any
     * actions it took based on that message because another worker can now claim and process the same message.
     *
-    * @param clientId A UUID for each client instance.
     * @param id       Specific ID of the message to delete.
     * @param claimId  Specific claim ID of the message to delete.
     */
@@ -155,7 +138,6 @@
    @Consumes(MediaType.APPLICATION_JSON)
    @Path("/messages/{message_id}")
    @Fallback(FalseOnNotFoundOr404.class)
-   boolean deleteByClaim(@HeaderParam("Client-ID") UUID clientId,
-                         @PathParam("message_id") String id,
+   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/functions/QueuesToPagedIterable.java b/openstack-marconi/src/main/java/org/jclouds/openstack/marconi/v1/functions/QueuesToPagedIterable.java
index 93d553a..290cd41 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
@@ -18,9 +18,8 @@
 
 import com.google.common.annotations.Beta;
 import com.google.common.base.Function;
-import com.google.common.base.Optional;
 import org.jclouds.collect.IterableWithMarker;
-import org.jclouds.collect.internal.Arg0ToPagedIterable;
+import org.jclouds.collect.internal.ArgsToPagedIterable;
 import org.jclouds.openstack.marconi.v1.MarconiApi;
 import org.jclouds.openstack.marconi.v1.domain.Queue;
 import org.jclouds.openstack.marconi.v1.features.QueueApi;
@@ -29,6 +28,8 @@
 import org.jclouds.openstack.v2_0.options.PaginationOptions;
 
 import javax.inject.Inject;
+import java.util.List;
+import java.util.UUID;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static org.jclouds.openstack.marconi.v1.options.ListQueuesOptions.Builder.queryParameters;
@@ -37,7 +38,7 @@
  * @author Everett Toews
  */
 @Beta
-public class QueuesToPagedIterable extends Arg0ToPagedIterable.FromCaller<Queue, QueuesToPagedIterable> {
+public class QueuesToPagedIterable extends ArgsToPagedIterable.FromCaller<Queue, QueuesToPagedIterable> {
 
    private final MarconiApi api;
 
@@ -47,10 +48,11 @@
    }
 
    @Override
-   protected Function<Object, IterableWithMarker<Queue>> markerToNextForArg0(Optional<Object> arg0) {
-      String zone = String.class.cast(arg0.get());
+   protected Function<Object, IterableWithMarker<Queue>> markerToNextForArgs(List<Object> args) {
+      String zone = String.class.cast(args.get(0));
+      UUID clientId = UUID.class.cast(args.get(1));
 
-      return new ListQueuesAtMarker(api.getQueueApiForZone(zone));
+      return new ListQueuesAtMarker(api.getQueueApiForZone(zone, 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 8b8aeab..eed993f 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
@@ -42,7 +42,7 @@
 
    public void createQueues() throws Exception {
       for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZone(zoneId);
+         QueueApi queueApi = api.getQueueApiForZone(zoneId, CLIENT_ID);
          boolean success = queueApi.create("jclouds-test");
 
          assertTrue(success);
@@ -52,9 +52,8 @@
    @Test(dependsOnMethods = { "createQueues" })
    public void createMessages() throws Exception {
       for (String zoneId : zones) {
-         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, "jclouds-test");
+         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, CLIENT_ID, "jclouds-test");
 
-         UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
          String json1 = "{\"event\":{\"name\":\"Austin Java User Group\",\"attendees\":[\"bob\",\"jim\",\"sally\"]}}";
          CreateMessage message1 = CreateMessage.builder().ttl(86400).body(json1).build();
          String json2 = "{\"event\":{\"name\":\"SF Java User Group\",\"attendees\":[\"bob\",\"jim\",\"sally\"]}}";
@@ -63,7 +62,7 @@
          CreateMessage message3 = CreateMessage.builder().ttl(86400).body(json3).build();
          List<CreateMessage> messages = ImmutableList.of(message1, message2, message3);
 
-         MessagesCreated messagesCreated = messageApi.create(clientId, messages);
+         MessagesCreated messagesCreated = messageApi.create(messages);
 
          assertNotNull(messagesCreated);
          assertEquals(messagesCreated.getMessageIds().size(), 3);
@@ -123,7 +122,7 @@
    @Test(dependsOnMethods = { "getClaim" })
    public void delete() throws Exception {
       for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZone(zoneId);
+         QueueApi queueApi = api.getQueueApiForZone(zoneId, CLIENT_ID);
          boolean success = queueApi.delete("jclouds-test");
 
          assertTrue(success);
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 3d7d745..3b0b08b 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
@@ -41,12 +41,13 @@
 
 @Test(groups = "live", testName = "MessageApiLiveTest", singleThreaded = true)
 public class MessageApiLiveTest extends BaseMarconiApiLiveTest {
+   private static final UUID CLIENT_ID = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
 
    private final Map<String, List<String>> messageIds = Maps.newHashMap();
 
    public void createQueues() throws Exception {
       for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZone(zoneId);
+         QueueApi queueApi = api.getQueueApiForZone(zoneId, CLIENT_ID);
          boolean success = queueApi.create("jclouds-test");
 
          assertTrue(success);
@@ -56,10 +57,9 @@
    @Test(dependsOnMethods = { "createQueues" })
    public void streamZeroPagesOfMessages() throws Exception {
       for (String zoneId : zones) {
-         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, "jclouds-test");
-         UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
+         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, CLIENT_ID, "jclouds-test");
 
-         MessageStream messageStream = messageApi.stream(clientId, echo(true));
+         MessageStream messageStream = messageApi.stream(echo(true));
 
          assertTrue(Iterables.isEmpty(messageStream));
          assertFalse(messageStream.nextMarker().isPresent());
@@ -69,14 +69,13 @@
    @Test(dependsOnMethods = { "streamZeroPagesOfMessages" })
    public void createMessage() throws Exception {
       for (String zoneId : zones) {
-         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, "jclouds-test");
+         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, CLIENT_ID, "jclouds-test");
 
-         UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
          String json1 = "{\"event\":{\"name\":\"Edmonton Java User Group\",\"attendees\":[\"bob\",\"jim\",\"sally\"]}}";
          CreateMessage message1 = CreateMessage.builder().ttl(120).body(json1).build();
          List<CreateMessage> message = ImmutableList.of(message1);
 
-         MessagesCreated messagesCreated = messageApi.create(clientId, message);
+         MessagesCreated messagesCreated = messageApi.create(message);
 
          assertNotNull(messagesCreated);
          assertEquals(messagesCreated.getMessageIds().size(), 1);
@@ -86,15 +85,14 @@
    @Test(dependsOnMethods = { "createMessage" })
    public void streamOnePageOfMessages() throws Exception {
       for (String zoneId : zones) {
-         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, "jclouds-test");
-         UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
+         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, CLIENT_ID, "jclouds-test");
 
-         MessageStream messageStream = messageApi.stream(clientId, echo(true));
+         MessageStream messageStream = messageApi.stream(echo(true));
 
          while(messageStream.nextMarker().isPresent()) {
             assertEquals(Iterables.size(messageStream), 1);
 
-            messageStream = messageApi.stream(clientId, messageStream.nextStreamOptions());
+            messageStream = messageApi.stream(messageStream.nextStreamOptions());
          }
 
          assertFalse(messageStream.nextMarker().isPresent());
@@ -104,9 +102,8 @@
    @Test(dependsOnMethods = { "streamOnePageOfMessages" })
    public void createMessages() throws Exception {
       for (String zoneId : zones) {
-         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, "jclouds-test");
+         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, CLIENT_ID, "jclouds-test");
 
-         UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
          String json1 = "{\"event\":{\"name\":\"Austin Java User Group\",\"attendees\":[\"bob\",\"jim\",\"sally\"]}}";
          CreateMessage message1 = CreateMessage.builder().ttl(120).body(json1).build();
          String json2 = "{\"event\":{\"name\":\"SF Java User Group\",\"attendees\":[\"bob\",\"jim\",\"sally\"]}}";
@@ -115,7 +112,7 @@
          CreateMessage message3 = CreateMessage.builder().ttl(120).body(json3).build();
          List<CreateMessage> messages = ImmutableList.of(message1, message2, message3);
 
-         MessagesCreated messagesCreated = messageApi.create(clientId, messages);
+         MessagesCreated messagesCreated = messageApi.create(messages);
 
          assertNotNull(messagesCreated);
          assertEquals(messagesCreated.getMessageIds().size(), 3);
@@ -125,11 +122,10 @@
    @Test(dependsOnMethods = { "createMessages" })
    public void streamManyPagesOfMessages() throws Exception {
       for (String zoneId : zones) {
-         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, "jclouds-test");
-         UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
+         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, CLIENT_ID, "jclouds-test");
          messageIds.put(zoneId, new ArrayList<String>());
 
-         MessageStream messageStream = messageApi.stream(clientId, echo(true).limit(2));
+         MessageStream messageStream = messageApi.stream(echo(true).limit(2));
 
          while(messageStream.nextMarker().isPresent()) {
             assertEquals(Iterables.size(messageStream), 2);
@@ -138,7 +134,7 @@
                messageIds.get(zoneId).add(message.getId());
             }
 
-            messageStream = messageApi.stream(clientId, messageStream.nextStreamOptions());
+            messageStream = messageApi.stream(messageStream.nextStreamOptions());
          }
 
          assertFalse(messageStream.nextMarker().isPresent());
@@ -148,10 +144,9 @@
    @Test(dependsOnMethods = { "streamManyPagesOfMessages" })
    public void listMessagesByIds() throws Exception {
       for (String zoneId : zones) {
-         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, "jclouds-test");
-         UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
+         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, CLIENT_ID, "jclouds-test");
 
-         List<Message> messages = messageApi.list(clientId, messageIds.get(zoneId));
+         List<Message> messages = messageApi.list(messageIds.get(zoneId));
 
          assertEquals(messages.size(), 4);
 
@@ -165,10 +160,9 @@
    @Test(dependsOnMethods = { "listMessagesByIds" })
    public void getMessage() throws Exception {
       for (String zoneId : zones) {
-         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, "jclouds-test");
-         UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
+         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, CLIENT_ID, "jclouds-test");
 
-         Message message = messageApi.get(clientId, getLast(messageIds.get(zoneId)));
+         Message message = messageApi.get(getLast(messageIds.get(zoneId)));
 
          assertNotNull(message.getId());
          assertNotNull(message.getBody());
@@ -179,11 +173,11 @@
    public void deleteMessagesByClaimId() throws Exception {
       for (String zoneId : zones) {
          UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
-         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, "jclouds-test");
+         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, CLIENT_ID, "jclouds-test");
          ClaimApi claimApi = api.getClaimApiForZoneAndClientAndQueue(zoneId, clientId, "jclouds-test");
          Message message = getOnlyElement(claimApi.claim(300, 100, 1));
 
-         boolean success = messageApi.deleteByClaim(clientId, message.getId(), message.getClaimId().get());
+         boolean success = messageApi.deleteByClaim(message.getId(), message.getClaimId().get());
 
          assertTrue(success);
       }
@@ -192,10 +186,9 @@
    @Test(dependsOnMethods = { "deleteMessagesByClaimId" })
    public void deleteMessages() throws Exception {
       for (String zoneId : zones) {
-         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, "jclouds-test");
-         UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
+         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, CLIENT_ID, "jclouds-test");
 
-         boolean success = messageApi.delete(clientId, messageIds.get(zoneId));
+         boolean success = messageApi.delete(messageIds.get(zoneId));
 
          assertTrue(success);
       }
@@ -204,7 +197,7 @@
    @Test(dependsOnMethods = { "deleteMessages" })
    public void delete() throws Exception {
       for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZone(zoneId);
+         QueueApi queueApi = api.getQueueApiForZone(zoneId, 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 8e5a5f4..c540e67 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
@@ -42,6 +42,7 @@
  */
 @Test
 public class MessageApiMockTest extends BaseOpenStackMockTest<MarconiApi> {
+   private static final UUID CLIENT_ID = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
 
    public void createMessage() throws Exception {
       MockWebServer server = mockOpenStackServer();
@@ -50,14 +51,13 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         MessageApi messageApi = api.getMessageApiForZoneAndQueue("DFW", "jclouds-test");
+         MessageApi messageApi = api.getMessageApiForZoneAndQueue("DFW", CLIENT_ID, "jclouds-test");
 
-         UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
          String json1 = "{\"event\":{\"name\":\"Edmonton Java User Group\",\"attendees\":[\"bob\",\"jim\",\"sally\"]}}";
          CreateMessage createMessage1 = CreateMessage.builder().ttl(120).body(json1).build();
          List<CreateMessage> createMessages = ImmutableList.of(createMessage1);
 
-         MessagesCreated messagesCreated = messageApi.create(clientId, createMessages);
+         MessagesCreated messagesCreated = messageApi.create(createMessages);
 
          assertNotNull(messagesCreated);
          assertEquals(messagesCreated.getMessageIds().size(), 1);
@@ -79,9 +79,8 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         MessageApi messageApi = api.getMessageApiForZoneAndQueue("DFW", "jclouds-test");
+         MessageApi messageApi = api.getMessageApiForZoneAndQueue("DFW", CLIENT_ID, "jclouds-test");
 
-         UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
          String json1 = "{\"event\":{\"name\":\"Austin Java User Group\",\"attendees\":[\"bob\",\"jim\",\"sally\"]}}";
          CreateMessage createMessage1 = CreateMessage.builder().ttl(120).body(json1).build();
          String json2 = "{\"event\":{\"name\":\"SF Java User Group\",\"attendees\":[\"bob\",\"jim\",\"sally\"]}}";
@@ -90,7 +89,7 @@
          CreateMessage createMessage3 = CreateMessage.builder().ttl(120).body(json3).build();
          List<CreateMessage> createMessages = ImmutableList.of(createMessage1, createMessage2, createMessage3);
 
-         MessagesCreated messagesCreated = messageApi.create(clientId, createMessages);
+         MessagesCreated messagesCreated = messageApi.create(createMessages);
 
          assertNotNull(messagesCreated);
          assertEquals(messagesCreated.getMessageIds().size(), 3);
@@ -114,10 +113,9 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         MessageApi messageApi = api.getMessageApiForZoneAndQueue("DFW", "jclouds-test");
-         UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
+         MessageApi messageApi = api.getMessageApiForZoneAndQueue("DFW", CLIENT_ID, "jclouds-test");
 
-         MessageStream messageStream = messageApi.stream(clientId);
+         MessageStream messageStream = messageApi.stream();
 
          assertTrue(Iterables.isEmpty(messageStream));
          assertFalse(messageStream.nextMarker().isPresent());
@@ -139,15 +137,14 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         MessageApi messageApi = api.getMessageApiForZoneAndQueue("DFW", "jclouds-test");
-         UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
+         MessageApi messageApi = api.getMessageApiForZoneAndQueue("DFW", CLIENT_ID, "jclouds-test");
 
-         MessageStream messageStream = messageApi.stream(clientId);
+         MessageStream messageStream = messageApi.stream();
 
          while(messageStream.nextMarker().isPresent()) {
             assertEquals(Iterables.size(messageStream), 6);
 
-            messageStream = messageApi.stream(clientId, messageStream.nextStreamOptions());
+            messageStream = messageApi.stream(messageStream.nextStreamOptions());
          }
 
          assertFalse(messageStream.nextMarker().isPresent());
@@ -172,15 +169,14 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         MessageApi messageApi = api.getMessageApiForZoneAndQueue("DFW", "jclouds-test");
-         UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
+         MessageApi messageApi = api.getMessageApiForZoneAndQueue("DFW", CLIENT_ID, "jclouds-test");
 
-         MessageStream messageStream = messageApi.stream(clientId, limit(2));
+         MessageStream messageStream = messageApi.stream(limit(2));
 
          while(messageStream.nextMarker().isPresent()) {
             assertEquals(Iterables.size(messageStream), 2);
 
-            messageStream = messageApi.stream(clientId, messageStream.nextStreamOptions());
+            messageStream = messageApi.stream(messageStream.nextStreamOptions());
          }
 
          assertFalse(messageStream.nextMarker().isPresent());
@@ -204,11 +200,10 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         MessageApi messageApi = api.getMessageApiForZoneAndQueue("DFW", "jclouds-test");
-         UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
+         MessageApi messageApi = api.getMessageApiForZoneAndQueue("DFW", CLIENT_ID, "jclouds-test");
          List<String> ids = ImmutableList.of("52928896b04a584f24883227", "52928896b04a584f24883228", "52928896b04a584f24883229");
 
-         List<Message> messages = messageApi.list(clientId, ids);
+         List<Message> messages = messageApi.list(ids);
 
          assertEquals(messages.size(), 3);
 
@@ -235,10 +230,9 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         MessageApi messageApi = api.getMessageApiForZoneAndQueue("DFW", "jclouds-test");
-         UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
+         MessageApi messageApi = api.getMessageApiForZoneAndQueue("DFW", CLIENT_ID, "jclouds-test");
 
-         Message message = messageApi.get(clientId, "5292b30cef913e6d026f4dec");
+         Message message = messageApi.get("5292b30cef913e6d026f4dec");
 
          assertEquals(message.getId(), "5292b30cef913e6d026f4dec");
          assertEquals(message.getBody(), "{\"event\":{\"name\":\"Edmonton Java User Group\",\"attendees\":[\"bob\",\"jim\",\"sally\"]}}");
@@ -261,11 +255,10 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         MessageApi messageApi = api.getMessageApiForZoneAndQueue("DFW", "jclouds-test");
-         UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
+         MessageApi messageApi = api.getMessageApiForZoneAndQueue("DFW", CLIENT_ID, "jclouds-test");
          List<String> ids = ImmutableList.of("52936b8a3ac24e6ef4c067dd", "5292b30cef913e6d026f4dec");
 
-         boolean success = messageApi.delete(clientId, ids);
+         boolean success = messageApi.delete(ids);
 
          assertTrue(success);
 
@@ -285,10 +278,9 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         MessageApi messageApi = api.getMessageApiForZoneAndQueue("DFW", "jclouds-test");
-         UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
+         MessageApi messageApi = api.getMessageApiForZoneAndQueue("DFW", CLIENT_ID, "jclouds-test");
 
-         boolean success = messageApi.deleteByClaim(clientId, "52936b8a3ac24e6ef4c067dd", "5292b30cef913e6d026f4dec");
+         boolean success = messageApi.deleteByClaim("52936b8a3ac24e6ef4c067dd", "5292b30cef913e6d026f4dec");
 
          assertTrue(success);
 
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 51f7813..04eff1d 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
@@ -37,10 +37,11 @@
 
 @Test(groups = "live", testName = "QueueApiLiveTest", singleThreaded = true)
 public class QueueApiLiveTest extends BaseMarconiApiLiveTest {
+   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.getQueueApiForZone(zoneId);
+         QueueApi queueApi = api.getQueueApiForZone(zoneId, CLIENT_ID);
          List<Queue> queues = queueApi.list(false).concat().toList();
 
          assertTrue(queues.isEmpty());
@@ -50,7 +51,7 @@
    @Test(dependsOnMethods = { "listZeroPagesOfQueues" })
    public void create() throws Exception {
       for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZone(zoneId);
+         QueueApi queueApi = api.getQueueApiForZone(zoneId, CLIENT_ID);
 
          for (int i=0; i < 6; i++) {
             boolean success = queueApi.create("jclouds-test-" + i);
@@ -63,7 +64,7 @@
    @Test(dependsOnMethods = { "create" })
    public void listOnePageOfQueues() throws Exception {
       for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZone(zoneId);
+         QueueApi queueApi = api.getQueueApiForZone(zoneId, CLIENT_ID);
          List<Queue> queues = queueApi.list(false).concat().toList();
 
          assertEquals(queues.size(), 6);
@@ -78,7 +79,7 @@
    @Test(dependsOnMethods = { "listOnePageOfQueues" })
    public void createMore() throws Exception {
       for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZone(zoneId);
+         QueueApi queueApi = api.getQueueApiForZone(zoneId, CLIENT_ID);
 
          for (int i=6; i < 12; i++) {
             boolean success = queueApi.create("jclouds-test-" + i);
@@ -91,7 +92,7 @@
    @Test(dependsOnMethods = { "createMore" })
    public void listManyPagesOfQueues() throws Exception {
       for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZone(zoneId);
+         QueueApi queueApi = api.getQueueApiForZone(zoneId, CLIENT_ID);
          List<Queue> queues = queueApi.list(false).concat().toList();
 
          assertEquals(queues.size(), 12);
@@ -106,7 +107,7 @@
    @Test(dependsOnMethods = { "listManyPagesOfQueues" })
    public void listManyPagesOfQueuesManually() throws Exception {
       for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZone(zoneId);
+         QueueApi queueApi = api.getQueueApiForZone(zoneId, CLIENT_ID);
 
          Queues queues = queueApi.list(limit(6));
 
@@ -126,7 +127,7 @@
    @Test(dependsOnMethods = { "listManyPagesOfQueuesManually" })
    public void exists() throws Exception {
       for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZone(zoneId);
+         QueueApi queueApi = api.getQueueApiForZone(zoneId, CLIENT_ID);
          boolean success = queueApi.exists("jclouds-test-1");
 
          assertTrue(success);
@@ -136,7 +137,7 @@
    @Test(dependsOnMethods = { "exists" })
    public void setMetadata() throws Exception {
       for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZone(zoneId);
+         QueueApi queueApi = api.getQueueApiForZone(zoneId, CLIENT_ID);
          Map<String, String> metadata = ImmutableMap.of("key1", "value1");
          boolean success = queueApi.setMetadata("jclouds-test-1", metadata);
 
@@ -147,7 +148,7 @@
    @Test(dependsOnMethods = { "setMetadata" })
    public void listManyPagesOfQueuesWithDetails() throws Exception {
       for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZone(zoneId);
+         QueueApi queueApi = api.getQueueApiForZone(zoneId, CLIENT_ID);
          List<Queue> queues = queueApi.list(true).concat().toList();
 
          assertEquals(queues.size(), 12);
@@ -169,7 +170,7 @@
    @Test(dependsOnMethods = { "listManyPagesOfQueuesWithDetails" })
    public void getMetadata() throws Exception {
       for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZone(zoneId);
+         QueueApi queueApi = api.getQueueApiForZone(zoneId, CLIENT_ID);
          Map<String, String> metadata = queueApi.getMetadata("jclouds-test-1");
 
          assertEquals(metadata.get("key1"), "value1");
@@ -179,7 +180,7 @@
    @Test(dependsOnMethods = { "getMetadata" })
    public void getStatsWithoutTotal() throws Exception {
       for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZone(zoneId);
+         QueueApi queueApi = api.getQueueApiForZone(zoneId, CLIENT_ID);
          QueueStats stats = queueApi.getStats("jclouds-test-1");
 
          assertEquals(stats.getMessagesStats().getClaimed(), 0);
@@ -193,16 +194,15 @@
    @Test(dependsOnMethods = { "getStatsWithoutTotal" })
    public void getStatsWithTotal() throws Exception {
       for (String zoneId : zones) {
-         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, "jclouds-test-1");
+         MessageApi messageApi = api.getMessageApiForZoneAndQueue(zoneId, CLIENT_ID, "jclouds-test-1");
 
-         UUID clientId = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
          String json1 = "{\"event\":{\"type\":\"hockey\",\"players\":[\"bob\",\"jim\",\"sally\"]}}";
          CreateMessage message1 = CreateMessage.builder().ttl(120).body(json1).build();
          List<CreateMessage> message = ImmutableList.of(message1);
 
-         messageApi.create(clientId, message);
+         messageApi.create(message);
 
-         QueueApi queueApi = api.getQueueApiForZone(zoneId);
+         QueueApi queueApi = api.getQueueApiForZone(zoneId, CLIENT_ID);
          QueueStats stats = queueApi.getStats("jclouds-test-1");
 
          assertEquals(stats.getMessagesStats().getClaimed(), 0);
@@ -218,7 +218,7 @@
    @Test(dependsOnMethods = { "getStatsWithTotal" })
    public void delete() throws Exception {
       for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZone(zoneId);
+         QueueApi queueApi = api.getQueueApiForZone(zoneId, CLIENT_ID);
 
          for (int i=0; i < 12; i++) {
             boolean success = queueApi.delete("jclouds-test-" + i);
@@ -231,7 +231,7 @@
    @Test(dependsOnMethods = { "delete" })
    public void doesNotExist() throws Exception {
       for (String zoneId : zones) {
-         QueueApi queueApi = api.getQueueApiForZone(zoneId);
+         QueueApi queueApi = api.getQueueApiForZone(zoneId, 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 cafc1de..d0d305f 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
@@ -31,6 +31,7 @@
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
 
 import static org.jclouds.openstack.marconi.v1.options.ListQueuesOptions.Builder.limit;
 import static org.testng.Assert.assertEquals;
@@ -43,6 +44,7 @@
  */
 @Test
 public class QueueApiMockTest extends BaseOpenStackMockTest<MarconiApi> {
+   private static final UUID CLIENT_ID = UUID.fromString("3381af92-2b9e-11e3-b191-71861300734c");
 
    public void createQueue() throws Exception {
       MockWebServer server = mockOpenStackServer();
@@ -51,7 +53,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZone("DFW");
+         QueueApi queueApi = api.getQueueApiForZone("DFW", CLIENT_ID);
          boolean success = queueApi.create("jclouds-test");
 
          assertTrue(success);
@@ -72,7 +74,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZone("DFW");
+         QueueApi queueApi = api.getQueueApiForZone("DFW", CLIENT_ID);
          boolean success = queueApi.delete("jclouds-test");
 
          assertTrue(success);
@@ -93,7 +95,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZone("DFW");
+         QueueApi queueApi = api.getQueueApiForZone("DFW", CLIENT_ID);
          boolean success = queueApi.exists("jclouds-test");
 
          assertTrue(success);
@@ -114,7 +116,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZone("DFW");
+         QueueApi queueApi = api.getQueueApiForZone("DFW", CLIENT_ID);
          boolean success = queueApi.exists("jclouds-blerg");
 
          assertFalse(success);
@@ -135,7 +137,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZone("DFW");
+         QueueApi queueApi = api.getQueueApiForZone("DFW", CLIENT_ID);
 
          List<Queue> queues = queueApi.list(false).concat().toList();
 
@@ -158,7 +160,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZone("DFW");
+         QueueApi queueApi = api.getQueueApiForZone("DFW", CLIENT_ID);
 
          List<Queue> queues = queueApi.list(false).concat().toList();
 
@@ -185,7 +187,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZone("DFW");
+         QueueApi queueApi = api.getQueueApiForZone("DFW", CLIENT_ID);
 
          List<Queue> queues = queueApi.list(false).concat().toList();
 
@@ -216,7 +218,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZone("DFW");
+         QueueApi queueApi = api.getQueueApiForZone("DFW", CLIENT_ID);
 
          Queues queues = queueApi.list(limit(6));
 
@@ -249,7 +251,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZone("DFW");
+         QueueApi queueApi = api.getQueueApiForZone("DFW", CLIENT_ID);
          Map<String, String> metadata = ImmutableMap.of("key1", "value1");
          boolean success = queueApi.setMetadata("jclouds-test", metadata);
 
@@ -273,7 +275,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZone("DFW");
+         QueueApi queueApi = api.getQueueApiForZone("DFW", CLIENT_ID);
          Map<String, String> metadata = queueApi.getMetadata("jclouds-test");
 
          assertEquals(metadata.get("key1"), "value1");
@@ -294,7 +296,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZone("DFW");
+         QueueApi queueApi = api.getQueueApiForZone("DFW", CLIENT_ID);
          QueueStats stats = queueApi.getStats("jclouds-test");
 
          assertEquals(stats.getMessagesStats().getClaimed(), 0);
@@ -319,7 +321,7 @@
 
       try {
          MarconiApi api = api(server.getUrl("/").toString(), "openstack-marconi");
-         QueueApi queueApi = api.getQueueApiForZone("DFW");
+         QueueApi queueApi = api.getQueueApiForZone("DFW", CLIENT_ID);
          QueueStats stats = queueApi.getStats("jclouds-test");
 
          assertEquals(stats.getMessagesStats().getClaimed(), 0);