diff --git a/webconsole/pom.xml b/webconsole/pom.xml
index 187a99c..9398d59 100644
--- a/webconsole/pom.xml
+++ b/webconsole/pom.xml
@@ -122,6 +122,7 @@
                         <Embed-Dependency>
                             <!-- Import/Export-Package parsing -->
                             org.apache.felix.utils;inline=org/apache/felix/utils/manifest/**,
+                            org.apache.felix.framework;inline=org/apache/felix/framework/util/VersionRange**,
                             
                             <!-- ServiceTracker -->
                             org.osgi.compendium;
@@ -184,7 +185,8 @@
                                         <_donotcopy>LICENSE.json</_donotcopy>
                                         <!-- <_donotcopy>(LICENSE.json|NOTICE.bare)</_donotcopy> -->
                                         <Embed-Dependency>
-                                            org.apache.felix.utils;inline=org/apache/felix/utils/manifest/**
+                                            org.apache.felix.utils;inline=org/apache/felix/utils/manifest/**,
+                                            org.apache.felix.framework;inline=org/apache/felix/framework/util/VersionRange**
                                         </Embed-Dependency>
                                     </instructions>
                                 </configuration>
@@ -248,11 +250,23 @@
             <scope>provided</scope>
         </dependency>
 
+        <!--
+           Required for a simple VersionRange class, the class from
+           the utils bundle is overkill and requires JDK 1.4 or better
+        -->
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.framework</artifactId>
+            <version>2.0.2</version>
+            <scope>provided</scope>
+            <optional>true</optional>
+        </dependency>
+
         <!--  Parsing Import/Export-Package headers -->
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.utils</artifactId>
-            <version>0.1.0-SNAPSHOT</version>
+            <version>1.0.0</version>
             <scope>provided</scope>
             <optional>true</optional>
         </dependency>
@@ -267,7 +281,7 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.bundlerepository</artifactId>
-            <version>1.5.0-SNAPSHOT</version>
+            <version>1.6.0</version>
             <scope>provided</scope>
             <optional>true</optional>
         </dependency>
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java
index b3abff1..f8d3831 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/core/BundlesServlet.java
@@ -44,6 +44,7 @@
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.fileupload.FileItem;
+import org.apache.felix.framework.util.VersionRange;
 import org.apache.felix.utils.manifest.Clause;
 import org.apache.felix.utils.manifest.Parser;
 import org.apache.felix.webconsole.AbstractWebConsolePlugin;
@@ -1278,8 +1279,15 @@
     {
         if ( imported.getName().equals( exported.getName() ) )
         {
-            Version required = Version.parseVersion( imported.getAttribute( Constants.VERSION_ATTRIBUTE ) );
-            return exported.getVersion().compareTo( required ) > 0;
+            String versionAttr = imported.getAttribute( Constants.VERSION_ATTRIBUTE );
+            if ( versionAttr == null )
+            {
+                // no specific version required, this export surely satisfies it
+                return true;
+            }
+
+            VersionRange required = VersionRange.parse( versionAttr );
+            return required.isInRange( exported.getVersion() );
         }
 
         // no this export does not satisfy the import
