diff --git a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ComponentManager.java b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ComponentManager.java
index 5c0ab85..339d31a 100644
--- a/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ComponentManager.java
+++ b/dependencymanager/runtime/src/main/java/org/apache/felix/dm/runtime/ComponentManager.java
@@ -41,7 +41,7 @@
 
 /**
  * This class parses service descriptors generated by the annotation bnd processor.
- * The descriptors are located under OSGI-INF/ directory. Such files are actually 
+ * The descriptors are located under OSGI-INF/dependencymanager directory. Such files are actually 
  * referenced by a specific "DependendencyManager-Component" manifest header.
  */
 public class ComponentManager implements SynchronousBundleListener
@@ -151,6 +151,10 @@
                         service = createService(b, dm, parser);
                         break;
 
+                    case AspectService:
+                        service = createAspectService(b, dm, parser);
+                        break;
+                        
                     case ServiceDependency:
                         checkServiceParsed(service);
                         service.add(createServiceDependency(b, dm, parser, false));
@@ -372,4 +376,22 @@
         cd.setCallback(callback);
         return cd;
     }
+
+    /**
+     * Creates an Aspect Service.
+     * @param b
+     * @param dm
+     * @param parser
+     * @return
+     */
+    private Service createAspectService(Bundle b, DependencyManager dm, DescriptorParser parser)
+        throws ClassNotFoundException
+    {
+        Class<?> serviceInterface = b.loadClass(parser.getString(DescriptorParam.service));
+        String serviceFilter = parser.getString(DescriptorParam.filter, null);
+        Class<?> aspectImplementation = b.loadClass(parser.getString(DescriptorParam.impl));
+        Dictionary<String, String> aspectProperties = parser.getDictionary(DescriptorParam.properties, null);
+        Service service = dm.createAspectService(serviceInterface, serviceFilter, aspectImplementation, aspectProperties);
+        return service;
+    }
 }
