diff --git a/core/src/main/java/org/jclouds/chef/test/config/TransientChefApiModule.java b/core/src/main/java/org/jclouds/chef/test/config/TransientChefApiModule.java
index d9eab4d..bab35d0 100644
--- a/core/src/main/java/org/jclouds/chef/test/config/TransientChefApiModule.java
+++ b/core/src/main/java/org/jclouds/chef/test/config/TransientChefApiModule.java
@@ -40,7 +40,6 @@
 import org.jclouds.domain.JsonBall;
 import org.jclouds.rest.ConfiguresHttpApi;
 import org.jclouds.rest.config.RestModule;
-import org.jclouds.rest.config.SyncToAsyncHttpInvocationModule;
 
 import com.google.common.base.Optional;
 import com.google.common.base.Supplier;
@@ -58,7 +57,6 @@
    @Override
    protected void configure() {
       install(new RestModule());
-      install(new SyncToAsyncHttpInvocationModule());
       bind(ChefApi.class).to(TransientChefApi.class);
       bind(LocalBlobStore.class).annotatedWith(Names.named("databags"))
             .toInstance(
diff --git a/core/src/test/java/org/jclouds/chef/ChefApiExpectTest.java b/core/src/test/java/org/jclouds/chef/ChefApiExpectTest.java
index ea4070d..478959b 100644
--- a/core/src/test/java/org/jclouds/chef/ChefApiExpectTest.java
+++ b/core/src/test/java/org/jclouds/chef/ChefApiExpectTest.java
@@ -31,7 +31,7 @@
 import org.jclouds.date.TimeStamp;
 import org.jclouds.http.HttpRequest;
 import org.jclouds.http.HttpResponse;
-import org.jclouds.rest.ConfiguresRestClient;
+import org.jclouds.rest.ConfiguresHttpApi;
 import org.testng.annotations.Test;
 
 import com.google.common.base.Supplier;
@@ -260,11 +260,11 @@
 
    @Override
    protected Module createModule() {
-      return new TestChefRestClientModule();
+      return new TestChefHttpApiModule();
    }
 
-   @ConfiguresRestClient
-   static class TestChefRestClientModule extends ChefHttpApiModule {
+   @ConfiguresHttpApi
+   static class TestChefHttpApiModule extends ChefHttpApiModule {
       @Override
       protected String provideTimeStamp(@TimeStamp Supplier<String> cache) {
          return "timestamp";
diff --git a/core/src/test/java/org/jclouds/chef/ChefApiTest.java b/core/src/test/java/org/jclouds/chef/ChefApiTest.java
index 434c22c..f998a95 100644
--- a/core/src/test/java/org/jclouds/chef/ChefApiTest.java
+++ b/core/src/test/java/org/jclouds/chef/ChefApiTest.java
@@ -56,8 +56,8 @@
 import org.jclouds.io.Payload;
 import org.jclouds.io.payloads.StringPayload;
 import org.jclouds.reflect.Invocation;
-import org.jclouds.rest.ConfiguresRestClient;
-import org.jclouds.rest.internal.BaseAsyncApiTest;
+import org.jclouds.rest.ConfiguresHttpApi;
+import org.jclouds.rest.internal.BaseRestAnnotationProcessingTest;
 import org.jclouds.rest.internal.GeneratedHttpRequest;
 import org.testng.annotations.Test;
 
@@ -71,7 +71,7 @@
  * Tests annotation parsing of {@code ChefApi}.
  */
 @Test(groups = { "unit" })
-public class ChefApiTest extends BaseAsyncApiTest<ChefApi> {
+public class ChefApiTest extends BaseRestAnnotationProcessingTest<ChefApi> {
 
    public void testCommitSandbox() throws SecurityException, NoSuchMethodException, IOException {
 
@@ -713,7 +713,7 @@
 
    @Override
    protected Module createModule() {
-      return new TestChefRestClientModule();
+      return new TestChefHttpApiModule();
    }
 
    @Override
@@ -723,8 +723,8 @@
       return props;
    }
 
-   @ConfiguresRestClient
-   static class TestChefRestClientModule extends ChefHttpApiModule {
+   @ConfiguresHttpApi
+   static class TestChefHttpApiModule extends ChefHttpApiModule {
       @Override
       protected String provideTimeStamp(@TimeStamp Supplier<String> cache) {
          return "timestamp";
diff --git a/enterprise/src/test/java/org/jclouds/enterprisechef/EnterpriseChefApiExpectTest.java b/enterprise/src/test/java/org/jclouds/enterprisechef/EnterpriseChefApiExpectTest.java
index 3785cf6..7ca79f7 100644
--- a/enterprise/src/test/java/org/jclouds/enterprisechef/EnterpriseChefApiExpectTest.java
+++ b/enterprise/src/test/java/org/jclouds/enterprisechef/EnterpriseChefApiExpectTest.java
@@ -33,7 +33,7 @@
 import org.jclouds.http.HttpRequest;
 import org.jclouds.http.HttpResponse;
 import org.jclouds.providers.ProviderMetadata;
-import org.jclouds.rest.ConfiguresRestClient;
+import org.jclouds.rest.ConfiguresHttpApi;
 import org.jclouds.rest.ResourceNotFoundException;
 import org.testng.annotations.Test;
 
@@ -190,11 +190,11 @@
 
    @Override
    protected Module createModule() {
-      return new TestEnterpriseChefRestClientModule();
+      return new TestEnterpriseChefHttpApiModule();
    }
 
-   @ConfiguresRestClient
-   static class TestEnterpriseChefRestClientModule extends EnterpriseChefHttpApiModule {
+   @ConfiguresHttpApi
+   static class TestEnterpriseChefHttpApiModule extends EnterpriseChefHttpApiModule {
       @Override
       protected String provideTimeStamp(@TimeStamp Supplier<String> cache) {
          return "timestamp";
