diff --git a/bundleplugin/pom.xml b/bundleplugin/pom.xml
index 0ff5a7d..a661b52 100644
--- a/bundleplugin/pom.xml
+++ b/bundleplugin/pom.xml
@@ -64,11 +64,6 @@
     <version>2.2.2</version>
   </dependency>
   <dependency>
-    <groupId>xmlpull</groupId>
-    <artifactId>xmlpull</artifactId>
-    <version>1.1.3.1</version>
-  </dependency>
-  <dependency>
     <groupId>org.apache.felix</groupId>
     <artifactId>org.osgi.core</artifactId>
     <version>1.0.0</version>
@@ -119,11 +114,6 @@
    <version>1.1</version>
   </dependency>
   <dependency>
-   <groupId>org.apache.maven.shared</groupId>
-   <artifactId>maven-osgi</artifactId>
-   <version>0.2.0</version>
-  </dependency>
-  <dependency>
     <groupId>org.apache.maven.wagon</groupId>
     <artifactId>wagon-provider-api</artifactId>
     <version>1.0-beta-2</version>
diff --git a/bundleplugin/src/main/java/org/apache/maven/shared/osgi/ManifestReadingException.java b/bundleplugin/src/main/java/org/apache/maven/shared/osgi/ManifestReadingException.java
new file mode 100644
index 0000000..38483d8
--- /dev/null
+++ b/bundleplugin/src/main/java/org/apache/maven/shared/osgi/ManifestReadingException.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.shared.osgi;
+
+/**
+ * Exception while reading the manifest. Encapsulates an IOException to make it runtime
+ * 
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id: ManifestReadingException.java 661727 2008-05-30 14:21:49Z bentmann $
+ */
+public class ManifestReadingException
+    extends RuntimeException
+{
+
+    public ManifestReadingException()
+    {
+        super();
+    }
+
+    public ManifestReadingException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
+
+    public ManifestReadingException( String message )
+    {
+        super( message );
+    }
+
+    public ManifestReadingException( Throwable cause )
+    {
+        super( cause );
+    }
+}
diff --git a/bundleplugin/src/main/java/org/apache/maven/shared/osgi/Maven2OsgiConverter.java b/bundleplugin/src/main/java/org/apache/maven/shared/osgi/Maven2OsgiConverter.java
new file mode 100644
index 0000000..eec6cc5
--- /dev/null
+++ b/bundleplugin/src/main/java/org/apache/maven/shared/osgi/Maven2OsgiConverter.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.shared.osgi;
+
+import org.apache.maven.artifact.Artifact;
+
+/**
+ * Converter from Maven groupId,artifactId and versions to OSGi Bundle-SymbolicName and version
+ * 
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id: Maven2OsgiConverter.java 661727 2008-05-30 14:21:49Z bentmann $
+ */
+public interface Maven2OsgiConverter
+{
+
+    /**
+     * Get the OSGi symbolic name for the artifact
+     * 
+     * @param artifact
+     * @return the Bundle-SymbolicName manifest property
+     */
+    String getBundleSymbolicName( Artifact artifact );
+
+    String getBundleFileName( Artifact artifact );
+
+    /**
+     * Convert a Maven version into an OSGi compliant version
+     * 
+     * @param artifact Maven artifact
+     * @return the OSGi version
+     */
+    String getVersion( Artifact artifact );
+
+    /**
+     * Convert a Maven version into an OSGi compliant version
+     * 
+     * @param version Maven version
+     * @return the OSGi version
+     */
+    String getVersion( String version );
+
+}
\ No newline at end of file
