diff --git a/bnd.bnd b/bnd.bnd
new file mode 100644
index 0000000..222aa35
--- /dev/null
+++ b/bnd.bnd
@@ -0,0 +1,3 @@
+Sling-Initial-Content:SLING-INF;uninstall\:=true;ignoreImportProviders\:=jar
+Sling-Model-Packages: org.apache.sling.scripting.sightly.testing.models
+Require-Capability: io.sightly; filter:="(&(version>=1.0)(!(version>=2.0)))"
diff --git a/pom.xml b/pom.xml
index 89021a1..dd977ab 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,8 +24,8 @@
     <!-- ======================================================================= -->
     <parent>
         <groupId>org.apache.sling</groupId>
-        <artifactId>sling</artifactId>
-        <version>30</version>
+        <artifactId>sling-bundle-parent</artifactId>
+        <version>35</version>
         <relativePath />
     </parent>
 
@@ -38,7 +38,6 @@
         releasing to only increase the first part, unless the module provides support for a newer version of the HTL specification.
     -->
     <version>1.0.15-1.4.0-SNAPSHOT</version>
-    <packaging>bundle</packaging>
 
     <name>Apache Sling Scripting HTL Integration Tests Content</name>
 
@@ -137,29 +136,6 @@
                 </executions>
             </plugin>
             <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                <extensions>true</extensions>
-                <configuration>
-                    <instructions>
-                        <Import-Package>
-                            javax.inject;version=1.0.0,
-                            *
-                        </Import-Package>
-                        <Sling-Initial-Content>SLING-INF;uninstall:=true;ignoreImportProviders:=jar</Sling-Initial-Content>
-                        <Sling-Model-Packages>org.apache.sling.scripting.sightly.testing.models</Sling-Model-Packages>
-                        <Require-Capability>io.sightly; filter:="(&amp;(version&gt;=1.0)(!(version&gt;=2.0)))"</Require-Capability>
-                    </instructions>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.sling</groupId>
-                <artifactId>maven-sling-plugin</artifactId>
-                <configuration>
-                    <failOnError>true</failOnError>
-                </configuration>
-            </plugin>
-            <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>jslint-maven-plugin</artifactId>
                 <version>1.0.1</version>
@@ -178,17 +154,6 @@
                     </execution>
                 </executions>
             </plugin>
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-scr-plugin</artifactId>
-                <dependencies>
-                    <dependency>
-                        <groupId>javax.jcr</groupId>
-                        <artifactId>jcr</artifactId>
-                        <version>2.0</version>
-                    </dependency>
-                </dependencies>
-            </plugin>
         </plugins>
     </build>
 
@@ -203,8 +168,13 @@
     <dependencies>
         <!-- Test bundle dependencies -->
         <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.scr.annotations</artifactId>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.annotation.versioning</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.component.annotations</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -233,13 +203,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.scripting.sightly.runtime</artifactId>
-            <version>1.0.1-1.4.0-SNAPSHOT</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.scripting.sightly</artifactId>
-            <version>1.1.1-1.4.0-SNAPSHOT</version>
+            <version>1.1.0-1.4.0</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/src/main/java/org/apache/sling/scripting/sightly/testing/adaptable/impl/RequestAdapterFactory.java b/src/main/java/org/apache/sling/scripting/sightly/testing/adaptable/impl/RequestAdapterFactory.java
index e1bcf72..03151cc 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/testing/adaptable/impl/RequestAdapterFactory.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/testing/adaptable/impl/RequestAdapterFactory.java
@@ -18,32 +18,19 @@
  ******************************************************************************/
 package org.apache.sling.scripting.sightly.testing.adaptable.impl;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Properties;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.adapter.AdapterFactory;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.scripting.sightly.testing.adaptable.RequestAdapterUseObject;
+import org.osgi.service.component.annotations.Component;
 
-@Component
-@Service
-@Properties({
-        @Property(
-                name = AdapterFactory.ADAPTABLE_CLASSES,
-                value = {
-                        "org.apache.sling.api.SlingHttpServletRequest"
-                }
-        ),
-        @Property(
-                name = AdapterFactory.ADAPTER_CLASSES,
-                value = {
-                        "org.apache.sling.scripting.sightly.testing.adaptable.RequestAdapterUseObject"
-                }
-        )
-})
+@Component(
+        property = {
+                AdapterFactory.ADAPTABLE_CLASSES + "=org.apache.sling.api.SlingHttpServletRequest",
+                AdapterFactory.ADAPTER_CLASSES + "=org.apache.sling.scripting.sightly.testing.adaptable.RequestAdapterUseObject"
+        }
+)
 public class RequestAdapterFactory implements AdapterFactory {
 
     @Override
diff --git a/src/main/java/org/apache/sling/scripting/sightly/testing/adaptable/impl/ResourceAdapterFactory.java b/src/main/java/org/apache/sling/scripting/sightly/testing/adaptable/impl/ResourceAdapterFactory.java
index 671ac71..cbecf49 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/testing/adaptable/impl/ResourceAdapterFactory.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/testing/adaptable/impl/ResourceAdapterFactory.java
@@ -18,31 +18,18 @@
  ******************************************************************************/
 package org.apache.sling.scripting.sightly.testing.adaptable.impl;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Properties;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.api.adapter.AdapterFactory;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.scripting.sightly.testing.adaptable.ResourceAdapterUseObject;
+import org.osgi.service.component.annotations.Component;
 
-@Component
-@Service
-@Properties({
-        @Property(
-                name = AdapterFactory.ADAPTABLE_CLASSES,
-                value = {
-                        "org.apache.sling.api.resource.Resource"
-                }
-        ),
-        @Property(
-                name = AdapterFactory.ADAPTER_CLASSES,
-                value = {
-                        "org.apache.sling.scripting.sightly.testing.adaptable.ResourceAdapterUseObject"
-                }
-        )
-})
+@Component(
+        property = {
+                AdapterFactory.ADAPTABLE_CLASSES + "=org.apache.sling.api.resource.Resource",
+                AdapterFactory.ADAPTER_CLASSES + "=org.apache.sling.scripting.sightly.testing.adaptable.ResourceAdapterUseObject"
+        }
+)
 public class ResourceAdapterFactory implements AdapterFactory {
 
     @Override
diff --git a/src/main/java/org/apache/sling/scripting/sightly/testing/adaptable/impl/ResourceResolverAdapterFactory.java b/src/main/java/org/apache/sling/scripting/sightly/testing/adaptable/impl/ResourceResolverAdapterFactory.java
index b499b3b..6b6531d 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/testing/adaptable/impl/ResourceResolverAdapterFactory.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/testing/adaptable/impl/ResourceResolverAdapterFactory.java
@@ -18,30 +18,17 @@
  ******************************************************************************/
 package org.apache.sling.scripting.sightly.testing.adaptable.impl;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Properties;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.api.adapter.AdapterFactory;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.scripting.sightly.testing.adaptable.ResourceResolverAdapterUseObject;
+import org.osgi.service.component.annotations.Component;
 
-@Component
-@Service
-@Properties({
-    @Property(
-        name = AdapterFactory.ADAPTABLE_CLASSES,
-        value = {
-                "org.apache.sling.api.resource.ResourceResolver"
+@Component(
+        property = {
+                AdapterFactory.ADAPTABLE_CLASSES + "=org.apache.sling.api.resource.ResourceResolver",
+                AdapterFactory.ADAPTER_CLASSES + "=org.apache.sling.scripting.sightly.testing.adaptable.ResourceResolverAdapterUseObject"
         }
-    ),
-    @Property(
-        name = AdapterFactory.ADAPTER_CLASSES,
-        value = {
-                "org.apache.sling.scripting.sightly.testing.adaptable.ResourceResolverAdapterUseObject"
-        }
-    )
-})
+)
 public class ResourceResolverAdapterFactory implements AdapterFactory {
 
     @Override
diff --git a/src/main/java/org/apache/sling/scripting/sightly/testing/use/impl/TestServiceImpl.java b/src/main/java/org/apache/sling/scripting/sightly/testing/use/impl/TestServiceImpl.java
index acc037f..82385bd 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/testing/use/impl/TestServiceImpl.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/testing/use/impl/TestServiceImpl.java
@@ -16,12 +16,10 @@
  ******************************************************************************/
 package org.apache.sling.scripting.sightly.testing.use.impl;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.sling.scripting.sightly.testing.use.TestService;
+import org.osgi.service.component.annotations.Component;
 
 @Component
-@Service(TestService.class)
 public class TestServiceImpl implements TestService {
 
     @Override
