diff --git a/dependencymanager/core/src/main/java/org/apache/felix/dm/ComponentDependencyDeclaration.java b/dependencymanager/core/src/main/java/org/apache/felix/dm/ComponentDependencyDeclaration.java
index 2d4e11b..da6a1cf 100644
--- a/dependencymanager/core/src/main/java/org/apache/felix/dm/ComponentDependencyDeclaration.java
+++ b/dependencymanager/core/src/main/java/org/apache/felix/dm/ComponentDependencyDeclaration.java
@@ -32,7 +32,9 @@
         "optional unavailable", 
         "optional available", 
         "required unavailable", 
-        "required available" 
+        "required available",
+        "optional (not tracking)",
+        "required (not tracking)"
         };
     /** State constant for an unavailable, optional dependency. */
     public static final int STATE_UNAVAILABLE_OPTIONAL = 0;
@@ -42,6 +44,10 @@
     public static final int STATE_UNAVAILABLE_REQUIRED = 2;
     /** State constant for an available, required dependency. */
     public static final int STATE_AVAILABLE_REQUIRED = 3;
+    /** State constant for an optional dependency that has not been started yet. */
+    public static final int STATE_OPTIONAL = 4;
+    /** State constant for a required dependency that has not been started yet. */
+    public static final int STATE_REQUIRED = 5;
     /** Returns the name of this dependency. */
     public String getName();
     /** Returns the name of the type of this dependency. */
diff --git a/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/BundleDependencyImpl.java b/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/BundleDependencyImpl.java
index 969356b..71e447f 100644
--- a/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/BundleDependencyImpl.java
+++ b/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/BundleDependencyImpl.java
@@ -45,7 +45,6 @@
  */
 public class BundleDependencyImpl extends DependencyBase implements BundleDependency, BundleTrackerCustomizer, ComponentDependencyDeclaration {
 	private final BundleContext m_context;
-	private boolean m_isStarted;
 	private BundleTracker m_tracker;
 	private int m_stateMask = Bundle.INSTALLED | Bundle.RESOLVED | Bundle.ACTIVE;
 	private List m_services = new ArrayList();
@@ -151,10 +150,6 @@
         return sb.toString();
 	}
 
-	public int getState() {
-        return (isAvailable() ? 1 : 0) + (isRequired() ? 2 : 0);
-	}
-
 	public String getType() {
 		return "bundle";
 	}
diff --git a/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ConfigurationDependencyImpl.java b/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ConfigurationDependencyImpl.java
index 1a31849..8338d11 100644
--- a/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ConfigurationDependencyImpl.java
+++ b/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ConfigurationDependencyImpl.java
@@ -69,7 +69,6 @@
     protected List m_services = new ArrayList();
 	private Dictionary m_settings;
     private String m_callback;
-    private boolean m_isStarted;
 	private final Set m_updateInvokedCache = new HashSet();
     private MetaTypeProviderImpl m_metaType;
     private boolean m_propagate;
@@ -287,10 +286,6 @@
         return m_pid;
     }
 
-    public int getState() {
-        return (isAvailable() ? 1 : 0) + (isRequired() ? 2 : 0);
-    }
-
     public String getType() {
         return "configuration";
     }
diff --git a/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/DependencyBase.java b/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/DependencyBase.java
index c3bd124..a94c959 100644
--- a/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/DependencyBase.java
+++ b/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/DependencyBase.java
@@ -18,6 +18,7 @@
  */
 package org.apache.felix.dm.impl.dependencies;
 
+import org.apache.felix.dm.ComponentDependencyDeclaration;
 import org.apache.felix.dm.Dependency;
 import org.apache.felix.dm.DependencyActivation;
 import org.apache.felix.dm.impl.Logger;
@@ -29,6 +30,7 @@
     private boolean m_isRequired;
     private boolean m_isInstanceBound;
     protected final Logger m_logger;
+    protected volatile boolean m_isStarted;
 
     public DependencyBase(Logger logger) {
         m_logger = logger;
@@ -55,4 +57,14 @@
     public final void setIsInstanceBound(boolean isInstanceBound) {
         m_isInstanceBound = isInstanceBound;
     }
+    
+    public int getState() {
+        if (m_isStarted) {
+            return (isAvailable() ? 1 : 0) + (isRequired() ? 2 : 0);
+        }
+        else {
+            return isRequired() ? ComponentDependencyDeclaration.STATE_REQUIRED : ComponentDependencyDeclaration.STATE_OPTIONAL;
+        }
+    }
+
 }
diff --git a/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ResourceDependencyImpl.java b/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ResourceDependencyImpl.java
index f000c50..7111d36 100644
--- a/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ResourceDependencyImpl.java
+++ b/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ResourceDependencyImpl.java
@@ -53,7 +53,6 @@
     protected List m_services = new ArrayList();
 	private String m_resourceFilter;
 	private URL m_trackedResource;
-    private boolean m_isStarted;
     private List m_resources = new ArrayList();
     private URL m_resourceInstance;
     private boolean m_propagate;
@@ -441,10 +440,6 @@
         return sb.toString();
     }
 
-    public int getState() {
-        return (isAvailable() ? 1 : 0) + (isRequired() ? 2 : 0);
-    }
-
     public String getType() {
         return "resource";
     }
diff --git a/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ServiceDependencyImpl.java b/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ServiceDependencyImpl.java
index 4d2f769..fc3184a 100644
--- a/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ServiceDependencyImpl.java
+++ b/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/dependencies/ServiceDependencyImpl.java
@@ -65,7 +65,6 @@
     private volatile String m_trackedServiceFilter;
     private volatile String m_trackedServiceFilterUnmodified;
     private volatile ServiceReference m_trackedServiceReference;
-    private volatile boolean m_isStarted;
     private Object m_callbackInstance;
     private String m_callbackAdded;
     private String m_callbackChanged;
@@ -1047,10 +1046,6 @@
         return sb.toString();
     }
 
-    public int getState() {
-        return (isAvailable() ? 1 : 0) + (isRequired() ? 2 : 0);
-    }
-
     public String getType() {
         return "service";
     }
