diff --git a/feature/pom.xml b/feature/pom.xml
index cee2462..a8de8c7 100644
--- a/feature/pom.xml
+++ b/feature/pom.xml
@@ -108,7 +108,6 @@
                 <feature>jclouds</feature>
                 <feature>jclouds-blobstore</feature>
                 <feature>jclouds-compute</feature>
-                <feature>jclouds-management</feature>
                 <feature>jclouds-api-byon</feature>
                 <feature>jclouds-api-cloudsigma2</feature>
                 <feature>jclouds-api-cloudstack</feature>
diff --git a/feature/src/main/resources/feature.xml b/feature/src/main/resources/feature.xml
index 818d49c..a3067c0 100644
--- a/feature/src/main/resources/feature.xml
+++ b/feature/src/main/resources/feature.xml
@@ -47,16 +47,6 @@
         <bundle>mvn:org.apache.jclouds/jclouds-compute/${jclouds.version}</bundle>
     </feature>
 
-    <feature name='jclouds-management' description='jclouds Management' version='${project.version}' resolver='(obr)'>
-        <feature version='${project.version}'>jclouds-compute</feature>
-        <feature version='${project.version}'>jclouds-blobstore</feature>
-        <bundle>mvn:org.apache.jclouds.labs.representations/representations-core/${jclouds.version}</bundle>
-        <bundle>mvn:org.apache.jclouds.labs.representations/representations-codec/${jclouds.version}</bundle>
-        <bundle>mvn:org.apache.jclouds.labs.management/management-core/${jclouds.version}</bundle>
-        <bundle>mvn:org.apache.jclouds.labs.management/management-blobstore/${jclouds.version}</bundle>
-        <bundle>mvn:org.apache.jclouds.labs.management/management-compute/${jclouds.version}</bundle>
-    </feature>
-
     <!-- APIS -->
     <feature name='jclouds-api-filesystem' description='jclouds - API - FileSystem' version='${project.version}' resolver='(obr)'>
         <feature version='${project.version}'>jclouds-blobstore</feature>
@@ -419,7 +409,6 @@
         <configfile finalname="/etc/org.apache.jclouds.credentials.cfg">mvn:org.apache.jclouds.karaf/jclouds-karaf/${project.version}/cfg/credentials</configfile>
         <feature version='${project.version}'>jclouds-compute</feature>
         <feature version='${project.version}'>jclouds-blobstore</feature>
-        <feature version='${project.version}'>jclouds-management</feature>
         <bundle dependency='true'>mvn:net.schmizz/sshj/${sshj.version}</bundle>
         <bundle dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsch-agentproxy-sshj/${jsch.agentproxy.bundle.version}</bundle>
         <bundle dependency='true'>mvn:com.jcraft/jsch.agentproxy.connector-factory/${jsch.agentproxy.version}</bundle>
diff --git a/itests/src/test/java/org/jclouds/karaf/itests/MiscFeaturesInstallationTest.java b/itests/src/test/java/org/jclouds/karaf/itests/MiscFeaturesInstallationTest.java
index 711d61e..50599d4 100644
--- a/itests/src/test/java/org/jclouds/karaf/itests/MiscFeaturesInstallationTest.java
+++ b/itests/src/test/java/org/jclouds/karaf/itests/MiscFeaturesInstallationTest.java
@@ -40,11 +40,6 @@
     }
 
     @Test
-    public void testManagementFeature() throws Exception {
-        installAndCheckFeature("jclouds-management");
-    }
-
-    @Test
     public void testBasicFeaturesInstallation() throws Exception {
         installAndCheckFeature("jclouds-commands");
     }
diff --git a/services/pom.xml b/services/pom.xml
index 6c1e9e6..73739be 100644
--- a/services/pom.xml
+++ b/services/pom.xml
@@ -63,11 +63,6 @@
       <groupId>org.apache.jclouds</groupId>
       <artifactId>jclouds-blobstore</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.apache.jclouds.labs.management</groupId>
-      <artifactId>management-core</artifactId>
-      <version>${jclouds.version}</version>
-    </dependency>
 
     <dependency>
       <groupId>org.apache.jclouds.driver</groupId>
diff --git a/services/src/main/java/org/jclouds/karaf/services/internal/BlobStoreServiceFactory.java b/services/src/main/java/org/jclouds/karaf/services/internal/BlobStoreServiceFactory.java
index 4aee2ff..c2b2583 100644
--- a/services/src/main/java/org/jclouds/karaf/services/internal/BlobStoreServiceFactory.java
+++ b/services/src/main/java/org/jclouds/karaf/services/internal/BlobStoreServiceFactory.java
@@ -30,8 +30,6 @@
 import org.jclouds.karaf.services.InvalidConfigurationException;
 import org.jclouds.karaf.services.ServiceFactorySupport;
 import org.jclouds.logging.log4j.config.Log4JLoggingModule;
-import org.jclouds.management.config.ManagementLifecycle;
-import org.jclouds.management.internal.BaseManagementContext;
 import org.jclouds.providers.ProviderMetadata;
 import org.jclouds.providers.ProviderPredicates;
 import org.osgi.framework.BundleContext;
@@ -114,7 +112,7 @@
                     builder = builder.endpoint(endpoint);
                 }
                 context = builder.name(id).credentials(identity, credential)
-                        .modules(ImmutableSet.<Module>of(new Log4JLoggingModule(), new ManagementLifecycle(BaseManagementContext.INSTANCE)))
+                        .modules(ImmutableSet.<Module>of(new Log4JLoggingModule()))
                         .overrides(props)
                         .build(BlobStoreContext.class);
 
diff --git a/services/src/main/java/org/jclouds/karaf/services/internal/ComputeServiceFactory.java b/services/src/main/java/org/jclouds/karaf/services/internal/ComputeServiceFactory.java
index 2e83d9b..ef5f0af 100644
--- a/services/src/main/java/org/jclouds/karaf/services/internal/ComputeServiceFactory.java
+++ b/services/src/main/java/org/jclouds/karaf/services/internal/ComputeServiceFactory.java
@@ -32,8 +32,6 @@
 import org.jclouds.karaf.services.InvalidConfigurationException;
 import org.jclouds.karaf.services.ServiceFactorySupport;
 import org.jclouds.logging.log4j.config.Log4JLoggingModule;
-import org.jclouds.management.config.ManagementLifecycle;
-import org.jclouds.management.internal.BaseManagementContext;
 import org.jclouds.providers.ProviderMetadata;
 import org.jclouds.providers.ProviderPredicates;
 import org.jclouds.sshj.config.SshjSshClientModule;
@@ -161,7 +159,7 @@
                     builder = builder.endpoint(endpoint);
                 }
 
-                builder = builder.name(id).modules(ImmutableSet.<Module>of(new Log4JLoggingModule(), new SshjSshClientModule(), new ManagementLifecycle(BaseManagementContext.INSTANCE)));
+                builder = builder.name(id).modules(ImmutableSet.<Module>of(new Log4JLoggingModule(), new SshjSshClientModule()));
 
                 if (credentialStore != null) {
                     builder = builder.modules(ImmutableSet.<Module>of(credentialStore));
