diff --git a/scr/pom.xml b/scr/pom.xml
index cb86891..7ceb875 100644
--- a/scr/pom.xml
+++ b/scr/pom.xml
@@ -233,11 +233,12 @@
             <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
-                <version>2.3.7</version>
+                <version>2.4.0</version>
                 <extensions>true</extensions>
                 <configuration>
                     <instructions>
-                        <Bundle-Category>osgi</Bundle-Category>
+                        <_include>-bnd.bnd</_include>
+<!--                         <Bundle-Category>osgi</Bundle-Category>
                         <Bundle-SymbolicName>
                             ${project.artifactId}
                         </Bundle-SymbolicName>
@@ -263,84 +264,84 @@
                             org.apache.felix.utils.extender
                         </Private-Package>
                         <Import-Package>
-                            <!--
+                            
                                 Configuration Admin is optional and dynamic, but allow eager
                                 wiring by importing it
-                            -->
+                           
                             org.osgi.service.cm;version="[1.2,2)";resolution:=optional,
 
-                            <!--
+                            
                                 Metatype import is optional and dynamic, but allow eager
                                 wiring by importing it
-                            -->
+                           
                             org.osgi.service.metatype;version="[1.1,2)";resolution:=optional,
-                            <!--
+                            
                                 optional import for Gogo annotations 
-                            -->
+                           
                             org.apache.felix.service.command;resolution:=optional,
                             
-                            <!--
+                            
                                 The Felix Shell support is optional 
-                            -->
+                           
                             org.apache.felix.shell;provide:=true;resolution:=optional,
                             
-                            <!--
+                            
                                 Framework version 1.4 (from R4.1) is required
                                 because we depend on ServiceReference being
                                 Comparable and Bundle.getBundleContext method
                                 being available.
-                            -->
+                           
                             org.osgi.framework;version="[1.4,2)",
                             
-                            <!--
+                            
                                 LogService is optional but if present the
                                 R4.0 version 1.3 is sufficient.
-                            -->
+                           
                             org.osgi.service.log;version="[1.3,2)";resolution:=optional,
 
-                            <!--
+                            
                                 PackageAdmin is used to find reference types if
                                 the component's bundle does not import it.
                                 See BindMethod.getParameterClass(Class) for details.
                                 R4.0 version 1.2 is sufficient. 
-                            -->
+                           
                             org.osgi.service.packageadmin;version="[1.2,2)";resolution:=optional,
                             
-                            <!--
+                            
                                 SCR API is required (we also export it) and must
                                 be of the same minor version as we export, because
                                 we implement that exact version. This import is
                                 only used if the framework decides to wire the
                                 bundle to another API provider.
                                 (version is automatically deduced from export) 
-                            -->
+                           
                             org.osgi.service.component;provide:=true,
 
-                            <!--
+                            
                                 SCR Admin API is required (we also export it) and
                                 must be of the same minor version as we export,
                                 because we implement that exact version. This
                                 import is only used if the framework decides to
                                 wire the bundle to another API provider. 
-                            -->
+                           
                             org.apache.felix.scr;provide:=true
                         </Import-Package>
                         <DynamicImport-Package>
-                            <!--
+                            
                                 Configuration Admin version 1.2 (from R4.0) is enough
-                            -->
+                           
                             org.osgi.service.cm;version="[1.2,2)",
                             
-                            <!--
+                            
                                 Metatype is optional and if it is
                                 present, version 1.1 (from R4.1) is enough  
-                            -->
+                           
                             org.osgi.service.metatype;version="[1.1,2)"
                         </DynamicImport-Package>
                         <Embed-Dependency>
                             kxml2;inline=org/kxml2/io/KXmlParser.class|org/xmlpull/v1/XmlPull**,
                         </Embed-Dependency>
-                    </instructions>
+ -->                    </instructions>
                 </configuration>
             </plugin>
 
