diff --git a/examples/extenderbased.host/pom.xml b/examples/extenderbased.host/pom.xml
index 1451861..7238c03 100644
--- a/examples/extenderbased.host/pom.xml
+++ b/examples/extenderbased.host/pom.xml
@@ -35,8 +35,8 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.felix</groupId>
-      <artifactId>org.apache.felix.framework</artifactId>
-      <version>1.0.0</version>
+      <artifactId>org.apache.felix.main</artifactId>
+      <version>1.0.3</version>
     </dependency>
   </dependencies>
   <build>
diff --git a/examples/extenderbased.host/src/main/java/org/apache/felix/example/extenderbased/host/Activator.java b/examples/extenderbased.host/src/main/java/org/apache/felix/example/extenderbased/host/Activator.java
index a3bfde0..6ab9149 100644
--- a/examples/extenderbased.host/src/main/java/org/apache/felix/example/extenderbased/host/Activator.java
+++ b/examples/extenderbased.host/src/main/java/org/apache/felix/example/extenderbased/host/Activator.java
@@ -32,6 +32,7 @@
 import org.apache.felix.framework.util.FelixConstants;
 import org.apache.felix.framework.util.StringMap;
 import org.apache.felix.framework.cache.BundleCache;
+import org.apache.felix.main.AutoActivator;
 
 /**
  * The activator of the host application bundle. The activator creates the
@@ -153,14 +154,18 @@
             "org.osgi.util.tracker; version=1.3.2," +
             "org.apache.felix.example.extenderbased.host.extension; version=1.0.0," +
             "javax.swing");
-        configMap.put(FelixConstants.AUTO_START_PROP + ".1",
+        configMap.put(AutoActivator.AUTO_START_PROP + ".1",
             "file:../extenderbased.circle/target/extenderbased.circle-1.0.0.jar " +
             "file:../extenderbased.square/target/extenderbased.square-1.0.0.jar " +
             "file:../extenderbased.triangle/target/extenderbased.triangle-1.0.0.jar");
         configMap.put(FelixConstants.LOG_LEVEL_PROP, "1");
         configMap.put(BundleCache.CACHE_PROFILE_DIR_PROP, cachedir.getAbsolutePath());
 
+        // Create list to hold custom framework activators.
         List list = new ArrayList();
+        // Add activator to process auto-start/install properties.
+        list.add(new AutoActivator(configMap));
+        // Add our own activator.
         list.add(new Activator());
 
         try
@@ -194,4 +199,4 @@
         }
         file.delete();
     }
-}
\ No newline at end of file
+}
diff --git a/examples/servicebased.host/pom.xml b/examples/servicebased.host/pom.xml
index 4517b89..4a8b601 100644
--- a/examples/servicebased.host/pom.xml
+++ b/examples/servicebased.host/pom.xml
@@ -35,8 +35,8 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.felix</groupId>
-      <artifactId>org.apache.felix.framework</artifactId>
-      <version>1.0.0</version>
+      <artifactId>org.apache.felix.main</artifactId>
+      <version>1.0.3</version>
     </dependency>
   </dependencies>
   <build>
diff --git a/examples/servicebased.host/src/main/java/org/apache/felix/example/servicebased/host/Activator.java b/examples/servicebased.host/src/main/java/org/apache/felix/example/servicebased/host/Activator.java
index 9dd5ebd..a47c795 100644
--- a/examples/servicebased.host/src/main/java/org/apache/felix/example/servicebased/host/Activator.java
+++ b/examples/servicebased.host/src/main/java/org/apache/felix/example/servicebased/host/Activator.java
@@ -32,6 +32,7 @@
 import org.apache.felix.framework.util.FelixConstants;
 import org.apache.felix.framework.util.StringMap;
 import org.apache.felix.framework.cache.BundleCache;
+import org.apache.felix.main.AutoActivator;
 
 /**
  * The activator of the host application bundle. The activator creates the
@@ -153,14 +154,18 @@
             "org.osgi.util.tracker; version=1.3.2," +
             "org.apache.felix.example.servicebased.host.service; version=1.0.0," +
             "javax.swing");
-        configMap.put(FelixConstants.AUTO_START_PROP + ".1",
+        configMap.put(AutoActivator.AUTO_START_PROP + ".1",
             "file:../servicebased.circle/target/servicebased.circle-1.0.0.jar " +
             "file:../servicebased.square/target/servicebased.square-1.0.0.jar " +
             "file:../servicebased.triangle/target/servicebased.triangle-1.0.0.jar");
         configMap.put(FelixConstants.LOG_LEVEL_PROP, "1");
         configMap.put(BundleCache.CACHE_PROFILE_DIR_PROP, cachedir.getAbsolutePath());
 
+        // Create list to hold custom framework activators.
         List list = new ArrayList();
+        // Add activator to process auto-start/install properties.
+        list.add(new AutoActivator(configMap));
+        // Add our own activator.
         list.add(new Activator());
 
         try
