diff --git a/http/api/pom.xml b/http/api/pom.xml
index baa0d2f..b47b3ae 100644
--- a/http/api/pom.xml
+++ b/http/api/pom.xml
@@ -26,7 +26,7 @@
         <relativePath>../parent/pom.xml</relativePath>
     </parent>
 
-    <name>Apache Felix Http Api</name>
+    <name>Apache Felix Http API</name>
     <artifactId>org.apache.felix.http.api</artifactId>
     <version>3.0.0-SNAPSHOT</version>
     <packaging>bundle</packaging>
@@ -59,7 +59,7 @@
                             org.osgi.service.http.runtime,
                             org.osgi.service.http.runtime.dto,
                             org.osgi.service.http.whiteboard,
-                            javax.servlet.*;version="[2.3,4)",
+                            javax.servlet.*;version="[3.1,4)",
                             *
                         </Import-Package>
                     </instructions>
diff --git a/http/base/pom.xml b/http/base/pom.xml
index 61c8df8..6889054 100644
--- a/http/base/pom.xml
+++ b/http/base/pom.xml
@@ -48,6 +48,12 @@
                             org.apache.felix.http.base.*
                         </Private-Package>
                         <Import-Package>
+                        <!-- Maven bundle plugin version 2.5.3 has a problem
+                             with correctly calculating the import ranges -->
+                            org.osgi.service.http;version="[1.2,1.3)",
+                            org.osgi.service.http.context;version="[1.0,1.1)",
+                            org.osgi.service.http.runtime;version="[1.0,1.1)",
+                            org.osgi.service.http.runtime.dto;version="[1.0,1.1)",
                         	org.osgi.service.useradmin;resolution:=optional,
                             *
                         </Import-Package>
@@ -61,18 +67,14 @@
         <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>javax.servlet-api</artifactId>
-            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
-            <version>6.0.0</version>
-            <scope>provided</scope>
+            <artifactId>osgi.core</artifactId>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
-            <scope>provided</scope>
+            <artifactId>osgi.cmpn</artifactId>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
diff --git a/http/itest/pom.xml b/http/itest/pom.xml
index 47e05f9..e5d9a10 100644
--- a/http/itest/pom.xml
+++ b/http/itest/pom.xml
@@ -57,14 +57,11 @@
 	<dependencies>
 		<dependency>
 			<groupId>org.osgi</groupId>
-			<artifactId>org.osgi.core</artifactId>
-			<version>6.0.0</version>
-			<scope>provided</scope>
+			<artifactId>osgi.core</artifactId>
 		</dependency>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
-            <scope>provided</scope>
+            <artifactId>osgi.cmpn</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.httpcomponents</groupId>
diff --git a/http/itest/src/test/java/org/apache/felix/http/itest/BaseIntegrationTest.java b/http/itest/src/test/java/org/apache/felix/http/itest/BaseIntegrationTest.java
index b24b6b2..b93c61e 100644
--- a/http/itest/src/test/java/org/apache/felix/http/itest/BaseIntegrationTest.java
+++ b/http/itest/src/test/java/org/apache/felix/http/itest/BaseIntegrationTest.java
@@ -406,7 +406,7 @@
         }
     }
 
-    protected void configureHttpService(Dictionary<?, ?> props) throws Exception
+    protected void configureHttpService(Dictionary<String, ?> props) throws Exception
     {
         final String pid = "org.apache.felix.http";
 
diff --git a/http/jetty/pom.xml b/http/jetty/pom.xml
index e87d760..2e46b96 100644
--- a/http/jetty/pom.xml
+++ b/http/jetty/pom.xml
@@ -70,8 +70,16 @@
                         	org.ietf.jgss;resolution:=optional,
                         	org.mortbay.log;resolution:=optional;version="[6.1,7)",
                         	org.mortbay.util.ajax;resolution:=optional;version="[6.1,7)",
+                        	org.osgi.service.cm;version="[1.3,2)",
+                        	org.osgi.service.event;version="[1.2,2)",
                         	org.osgi.service.metatype;version="[1.1,2)";resolution:=optional,
                         	org.osgi.service.useradmin;resolution:=optional,
+                        <!-- Maven bundle plugin version 2.5.3 has a problem
+                             with correctly calculating the import ranges -->
+                            org.osgi.service.http;version="[1.2,1.3)",
+                            org.osgi.service.http.context;version="[1.0,1.1)",
+                            org.osgi.service.http.runtime;version="[1.0,1.1)",
+                            org.osgi.service.http.runtime.dto;version="[1.0,1.1)",
                             *
                         </Import-Package>
                         <DynamicImport-Package>
@@ -96,27 +104,18 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
-            <version>6.0.0</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>biz.aQute</groupId>
-            <artifactId>bndlib</artifactId>
-            <version>1.50.0</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>javax.servlet-api</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>osgi.core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>osgi.cmpn</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.eclipse.jetty</groupId>
             <artifactId>jetty-servlet</artifactId>
             <version>${jetty.version}</version>
@@ -160,6 +159,7 @@
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.http.api</artifactId>
             <version>3.0.0-SNAPSHOT</version>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.felix</groupId>
diff --git a/http/jetty/src/main/java/org/apache/felix/http/jetty/ConnectorFactory.java b/http/jetty/src/main/java/org/apache/felix/http/jetty/ConnectorFactory.java
index 29d1a67..5de3a84 100644
--- a/http/jetty/src/main/java/org/apache/felix/http/jetty/ConnectorFactory.java
+++ b/http/jetty/src/main/java/org/apache/felix/http/jetty/ConnectorFactory.java
@@ -19,9 +19,8 @@
 package org.apache.felix.http.jetty;
 
 import org.eclipse.jetty.server.Connector;
-
-import aQute.bnd.annotation.ConsumerType;
 import org.eclipse.jetty.server.Server;
+import org.osgi.annotation.versioning.ConsumerType;
 
 /**
  * The <code>ConnectorFactory</code> is a service interface which allows
diff --git a/http/jetty/src/main/java/org/apache/felix/http/jetty/package-info.java b/http/jetty/src/main/java/org/apache/felix/http/jetty/package-info.java
index 5f3570d..148afa2 100644
--- a/http/jetty/src/main/java/org/apache/felix/http/jetty/package-info.java
+++ b/http/jetty/src/main/java/org/apache/felix/http/jetty/package-info.java
@@ -19,4 +19,4 @@
 @Version("2.0")
 package org.apache.felix.http.jetty;
 
-import aQute.bnd.annotation.Version;
\ No newline at end of file
+import org.osgi.annotation.versioning.Version;
\ No newline at end of file
