diff --git a/scr/src/main/java/org/osgi/service/component/runtime/dto/ComponentConfigurationDTO.java b/scr/src/main/java/org/osgi/service/component/runtime/dto/ComponentConfigurationDTO.java
index 6b87ee0..b320f62 100755
--- a/scr/src/main/java/org/osgi/service/component/runtime/dto/ComponentConfigurationDTO.java
+++ b/scr/src/main/java/org/osgi/service/component/runtime/dto/ComponentConfigurationDTO.java
@@ -26,41 +26,37 @@
  * 
  * @since 1.3
  * @NotThreadSafe
- * @author $Id: e852b2edb4d364069d01ca41130aac4a3b3112a3 $
+ * @author $Id: f519b5fddd8002ffc252d039856acc8ba6f422d6 $
  */
 public class ComponentConfigurationDTO extends DTO {
 	/**
-	 * The component configuration is unsatisfied.
-	 * 
-	 * <p>
-	 * This is the initial state of a component configuration. When the
-	 * component configuration becomes satisfied it enters the
-	 * {@link #SATISFIED} state.
+	 * The component configuration is unsatisfied due to a missing required
+	 * configuration.
 	 */
-	public static final int		UNSATISFIED		= 1;
+	public static final int			UNSATISFIED_CONFIGURATION	= 1;
+
+	/**
+	 * The component configuration is unsatisfied due to an unsatisfied
+	 * reference.
+	 */
+	public static final int			UNSATISFIED_REFERENCE		= 2;
 
 	/**
 	 * The component configuration is satisfied.
 	 * 
 	 * <p>
-	 * Any {@link ComponentDescriptionDTO#serviceInterfaces services} declared by
-	 * the component description are registered.
-	 * 
-	 * If the component configuration becomes unsatisfied for any reason, any
-	 * declared services must be unregistered and the component configuration
-	 * returns to the {@link #UNSATISFIED} state.
+	 * Any {@link ComponentDescriptionDTO#serviceInterfaces services} declared
+	 * by the component description are registered.
 	 */
-	public static final int		SATISFIED		= 2;
+	public static final int			SATISFIED					= 4;
 
 	/**
 	 * The component configuration is active.
 	 * 
 	 * <p>
-	 * This is the normal operational state of a component configuration. The
-	 * component configuration will move to the {@link #SATISFIED} state when it
-	 * is deactivated.
+	 * This is the normal operational state of a component configuration.
 	 */
-	public static final int			ACTIVE		= 4;
+	public static final int			ACTIVE						= 8;
 
 	/**
 	 * The representation of the component configuration's component
@@ -81,8 +77,8 @@
 	 * The current state of the component configuration.
 	 * 
 	 * <p>
-	 * This is one of {@link #UNSATISFIED}, {@link #SATISFIED} or
-	 * {@link #ACTIVE}.
+	 * This is one of {@link #UNSATISFIED_CONFIGURATION},
+	 * {@link #UNSATISFIED_REFERENCE}, {@link #SATISFIED} or {@link #ACTIVE}.
 	 */
 	public int					state;
 
@@ -94,12 +90,22 @@
 	public Map<String, Object>	properties;
 
 	/**
-	 * The currently bound references.
+	 * The satisfied references.
 	 * 
 	 * <p>
-	 * Each {@link BoundReferenceDTO} in the array represents a service bound to a
-	 * reference of the component configuration. The array will be empty if the
-	 * component configuration has no bound references.
+	 * Each {@link SatisfiedReferenceDTO} in the array represents a satisfied
+	 * reference of the component configuration. The array must be empty if the
+	 * component configuration has no satisfied references.
 	 */
-	public BoundReferenceDTO[]		boundReferences;
+	public SatisfiedReferenceDTO[]		satisfiedReferences;
+
+	/**
+	 * The unsatisfied references.
+	 * 
+	 * <p>
+	 * Each {@link UnsatisfiedReferenceDTO} in the array represents an
+	 * unsatisfied reference of the component configuration. The array must be
+	 * empty if the component configuration has no unsatisfied references.
+	 */
+	public UnsatisfiedReferenceDTO[]	unsatisfiedReferences;
 }
diff --git a/scr/src/main/java/org/osgi/service/component/runtime/dto/ComponentDescriptionDTO.java b/scr/src/main/java/org/osgi/service/component/runtime/dto/ComponentDescriptionDTO.java
index bab6ad4..8e50ca3 100755
--- a/scr/src/main/java/org/osgi/service/component/runtime/dto/ComponentDescriptionDTO.java
+++ b/scr/src/main/java/org/osgi/service/component/runtime/dto/ComponentDescriptionDTO.java
@@ -25,7 +25,7 @@
  * 
  * @since 1.3
  * @NotThreadSafe
- * @author $Id: 5ed89a27964e91018c55dc9e72434eb92a438fa6 $
+ * @author $Id: 9f098a6edef3359b4dbd21e1e58bbad01b89b995 $
  */
 public class ComponentDescriptionDTO extends DTO {
 	/**
@@ -33,7 +33,7 @@
 	 * 
 	 * <p>
 	 * This is declared in the {@code name} attribute of the {@code component}
-	 * element. This will be the default name if the component description does
+	 * element. This must be the default name if the component description does
 	 * not declare a name.
 	 */
 	public String				name;
@@ -48,7 +48,7 @@
 	 * 
 	 * <p>
 	 * This is declared in the {@code factory} attribute of the
-	 * {@code component} element. This will be {@code null} if the component
+	 * {@code component} element. This must be {@code null} if the component
 	 * description is not declared as a component factory.
 	 */
 	public String				factory;
@@ -58,7 +58,7 @@
 	 * 
 	 * <p>
 	 * This is declared in the {@code scope} attribute of the {@code service}
-	 * element. This will be {@code null} if the component description does not
+	 * element. This must be {@code null} if the component description does not
 	 * declare any service interfaces.
 	 */
 	public String				scope;
@@ -95,7 +95,7 @@
 	 * 
 	 * <p>
 	 * These are declared in the {@code interface} attribute of the
-	 * {@code provide} elements. The array will be empty if the component
+	 * {@code provide} elements. The array must be empty if the component
 	 * description does not declare any service interfaces.
 	 */
 	public String[]				serviceInterfaces;
@@ -113,7 +113,7 @@
 	 * The referenced services.
 	 * 
 	 * <p>
-	 * These are declared in the {@code reference} elements. The array will be
+	 * These are declared in the {@code reference} elements. The array must be
 	 * empty if the component description does not declare references to any
 	 * services.
 	 */
@@ -124,7 +124,7 @@
 	 * 
 	 * <p>
 	 * This is declared in the {@code activate} attribute of the
-	 * {@code component} element. This will be {@code null} if the component
+	 * {@code component} element. This must be {@code null} if the component
 	 * description does not declare an activate method name.
 	 */
 	public String				activate;
@@ -134,7 +134,7 @@
 	 * 
 	 * <p>
 	 * This is declared in the {@code deactivate} attribute of the
-	 * {@code component} element. This will be {@code null} if the component
+	 * {@code component} element. This must be {@code null} if the component
 	 * description does not declare a deactivate method name.
 	 */
 	public String				deactivate;
@@ -144,7 +144,7 @@
 	 * 
 	 * <p>
 	 * This is declared in the {@code modified} attribute of the
-	 * {@code component} element. This will be {@code null} if the component
+	 * {@code component} element. This must be {@code null} if the component
 	 * description does not declare a modified method name.
 	 */
 	public String				modified;
@@ -154,7 +154,7 @@
 	 * 
 	 * <p>
 	 * This is declared in the {@code configuration-policy} attribute of the
-	 * {@code component} element. This will be the default configuration policy
+	 * {@code component} element. This must be the default configuration policy
 	 * if the component description does not declare a configuration policy.
 	 */
 	public String				configurationPolicy;
@@ -164,7 +164,7 @@
 	 * 
 	 * <p>
 	 * These are declared in the {@code configuration-pid} attribute of the
-	 * {@code component} element. This will contain the default configuration
+	 * {@code component} element. This must contain the default configuration
 	 * pid if the component description does not declare a configuration pid.
 	 */
 	public String[]				configurationPid;
diff --git a/scr/src/main/java/org/osgi/service/component/runtime/dto/ReferenceDTO.java b/scr/src/main/java/org/osgi/service/component/runtime/dto/ReferenceDTO.java
index 33fec8b..e4392bc 100755
--- a/scr/src/main/java/org/osgi/service/component/runtime/dto/ReferenceDTO.java
+++ b/scr/src/main/java/org/osgi/service/component/runtime/dto/ReferenceDTO.java
@@ -23,15 +23,61 @@
  * 
  * @since 1.3
  * @NotThreadSafe
- * @author $Id: 2fc8a3deac2ece6b9fff4878dbe3f082faadd5f8 $
+ * @author $Id: a02ee5ad7b783a19bf7e1d8f9dcc6f44685ccd41 $
  */
 public class ReferenceDTO extends DTO {
+
+	/**
+	 * Constant for the lookup strategy
+	 * 
+	 * @see #strategy
+	 */
+	String			STRATEGY_LOOKUP			= "LOOKUP";
+
+	/**
+	 * Constant for the method strategy
+	 * 
+	 * @see #strategy
+	 */
+	String			STRATEGY_METHOD			= "METHOD";
+
+	/**
+	 * Constant for the field replace strategy
+	 * 
+	 * @see #strategy
+	 */
+	String			STRATEGY_FIELD_REPLACE	= "FIELD_REPLACE";
+
+	/**
+	 * Constant for the field update strategy
+	 * 
+	 * @see #strategy
+	 */
+	String			STRATEGY_FIELD_UPDATE	= "FIELD_UPDATE";
+
+	/**
+	 * The strategy of the reference.
+	 * 
+	 * <p>
+	 * This field returns the strategy used for this reference. If the value is
+	 * either {@code #STRATEGY_FIELD_REPLACE} or {@code #STRATEGY_FIELD_UPDATE},
+	 * {@link #field} returns the name of the field. If the strategy is
+	 * {@code #STRATEGY_METHOD} {@link #bind}, {@link #unbind}, and
+	 * {@link #updated} return the name of the methods.
+	 *
+	 * @see #STRATEGY_FIELD_REPLACE
+	 * @see #STRATEGY_FIELD_UPDATE
+	 * @see #STRATEGY_LOOKUP
+	 * @see #STRATEGY_METHOD
+	 */
+	public String	strategy;
+
 	/**
 	 * The name of the reference.
 	 * 
 	 * <p>
 	 * This is declared in the {@code name} attribute of the {@code reference}
-	 * element. This will be the default name if the component description does
+	 * element. This must be the default name if the component description does
 	 * not declare a name for the reference.
 	 */
 	public String	name;
@@ -50,7 +96,7 @@
 	 * 
 	 * <p>
 	 * This is declared in the {@code cardinality} attribute of the
-	 * {@code reference} element. This will be the default cardinality if the
+	 * {@code reference} element. This must be the default cardinality if the
 	 * component description does not declare a cardinality for the reference.
 	 */
 	public String	cardinality;
@@ -60,7 +106,7 @@
 	 * 
 	 * <p>
 	 * This is declared in the {@code policy} attribute of the {@code reference}
-	 * element. This will be the default policy if the component description
+	 * element. This must be the default policy if the component description
 	 * does not declare a policy for the reference.
 	 */
 	public String	policy;
@@ -70,7 +116,7 @@
 	 * 
 	 * <p>
 	 * This is declared in the {@code policy-option} attribute of the
-	 * {@code reference} element. This will be the default policy option if the
+	 * {@code reference} element. This must be the default policy option if the
 	 * component description does not declare a policy option for the reference.
 	 */
 	public String	policyOption;
@@ -80,7 +126,7 @@
 	 * 
 	 * <p>
 	 * This is declared in the {@code target} attribute of the {@code reference}
-	 * element. This will be {@code null} if the component description does not
+	 * element. This must be {@code null} if the component description does not
 	 * declare a target for the reference.
 	 */
 	public String	target;
@@ -90,8 +136,9 @@
 	 * 
 	 * <p>
 	 * This is declared in the {@code bind} attribute of the {@code reference}
-	 * element. This will be {@code null} if the component description does not
-	 * declare a bind method for the reference.
+	 * element. This must be {@code null} if the component is not using the
+	 * method strategy or the component description does not declare a bind
+	 * method for the reference.
 	 */
 	public String	bind;
 
@@ -100,8 +147,11 @@
 	 * 
 	 * <p>
 	 * This is declared in the {@code unbind} attribute of the {@code reference}
-	 * element. This will be {@code null} if the component description does not
-	 * declare an unbind method for the reference.
+	 * element. This must be {@code null} if the component is not using the
+	 * method strategy or the component description does not declare an unbind
+	 * method for the reference.
+	 *
+	 * @see #strategy
 	 */
 	public String	unbind;
 
@@ -110,17 +160,32 @@
 	 * 
 	 * <p>
 	 * This is declared in the {@code updated} attribute of the
-	 * {@code reference} element. This will be {@code null} if the component
-	 * description does not declare an updated method for the reference.
+	 * {@code reference} element. This must be {@code null} if the component is
+	 * not using the method strategy or the component description does not
+	 * declare an updated method for the reference.
+	 * 
+	 * @see #strategy
 	 */
 	public String	updated;
 
 	/**
+	 * The name of the field of the reference.
+	 * 
+	 * <p>
+	 * This is declared in the {@code field} attribute of the {@code reference}
+	 * element. This must be {@code null} if the component is using the lookup
+	 * or method strategy.
+	 * 
+	 * @see #strategy
+	 */
+	public String	field;
+
+	/**
 	 * The scope of the reference.
 	 * 
 	 * <p>
 	 * This is declared in the {@code scope} attribute of the {@code reference}
-	 * element. This will be the default scope if the component description does
+	 * element. This must be the default scope if the component description does
 	 * not declare a scope for the reference.
 	 */
 	public String	scope;
diff --git a/scr/src/main/java/org/osgi/service/component/runtime/dto/BoundReferenceDTO.java b/scr/src/main/java/org/osgi/service/component/runtime/dto/SatisfiedReferenceDTO.java
similarity index 76%
rename from scr/src/main/java/org/osgi/service/component/runtime/dto/BoundReferenceDTO.java
rename to scr/src/main/java/org/osgi/service/component/runtime/dto/SatisfiedReferenceDTO.java
index b843280..3bfc082 100755
--- a/scr/src/main/java/org/osgi/service/component/runtime/dto/BoundReferenceDTO.java
+++ b/scr/src/main/java/org/osgi/service/component/runtime/dto/SatisfiedReferenceDTO.java
@@ -20,13 +20,13 @@
 import org.osgi.framework.dto.ServiceReferenceDTO;
 
 /**
- * A representation of a bound reference to a service.
+ * A representation of a satisfied reference.
  * 
  * @since 1.3
  * @NotThreadSafe
- * @author $Id: 1ba28863312f0c0784e4a5596f991a6a6a68c147 $
+ * @author $Id: 20de229ef78ffbfd603b62d4534721e2f2b17922 $
  */
-public class BoundReferenceDTO extends DTO {
+public class SatisfiedReferenceDTO extends DTO {
 	/**
 	 * The name of the declared reference.
 	 * 
@@ -34,18 +34,18 @@
 	 * This is declared in the {@code name} attribute of the {@code reference}
 	 * element of the component description.
 	 * 
-	 * @see ComponentDescriptionDTO#name
+	 * @see ReferenceDTO#name
 	 */
 	public String					name;
 
 	/**
-	 * The target property of the bound reference.
+	 * The target property of the satisfied reference.
 	 * 
 	 * <p>
 	 * This is the value of the {@link ComponentConfigurationDTO#properties
 	 * component property} whose name is the concatenation of the
 	 * {@link ReferenceDTO#name declared reference name} and
-	 * &quot;.target&quot;. This will be {@code null} if no target property is
+	 * &quot;.target&quot;. This must be {@code null} if no target property is
 	 * set for the reference.
 	 */
 	public String					target;
@@ -55,7 +55,8 @@
 	 * 
 	 * <p>
 	 * Each {@link ServiceReferenceDTO} in the array represents a service bound
-	 * to the component configuration.
+	 * to the satisfied reference. The array must be empty if there are no bound
+	 * services.
 	 */
-	public ServiceReferenceDTO[]	serviceReferences;
+	public ServiceReferenceDTO[]	boundServices;
 }
diff --git a/scr/src/main/java/org/osgi/service/component/runtime/dto/BoundReferenceDTO.java b/scr/src/main/java/org/osgi/service/component/runtime/dto/UnsatisfiedReferenceDTO.java
old mode 100755
new mode 100644
similarity index 65%
copy from scr/src/main/java/org/osgi/service/component/runtime/dto/BoundReferenceDTO.java
copy to scr/src/main/java/org/osgi/service/component/runtime/dto/UnsatisfiedReferenceDTO.java
index b843280..870c5c3
--- a/scr/src/main/java/org/osgi/service/component/runtime/dto/BoundReferenceDTO.java
+++ b/scr/src/main/java/org/osgi/service/component/runtime/dto/UnsatisfiedReferenceDTO.java
@@ -20,13 +20,13 @@
 import org.osgi.framework.dto.ServiceReferenceDTO;
 
 /**
- * A representation of a bound reference to a service.
+ * A representation of an unsatisfied reference.
  * 
  * @since 1.3
  * @NotThreadSafe
- * @author $Id: 1ba28863312f0c0784e4a5596f991a6a6a68c147 $
+ * @author $Id: 20ce77a3dbc307be592c86bf7b5eddacfe77e21b $
  */
-public class BoundReferenceDTO extends DTO {
+public class UnsatisfiedReferenceDTO extends DTO {
 	/**
 	 * The name of the declared reference.
 	 * 
@@ -34,28 +34,31 @@
 	 * This is declared in the {@code name} attribute of the {@code reference}
 	 * element of the component description.
 	 * 
-	 * @see ComponentDescriptionDTO#name
+	 * @see ReferenceDTO#name
 	 */
 	public String					name;
 
 	/**
-	 * The target property of the bound reference.
+	 * The target property of the unsatisfied reference.
 	 * 
 	 * <p>
 	 * This is the value of the {@link ComponentConfigurationDTO#properties
 	 * component property} whose name is the concatenation of the
 	 * {@link ReferenceDTO#name declared reference name} and
-	 * &quot;.target&quot;. This will be {@code null} if no target property is
+	 * &quot;.target&quot;. This must be {@code null} if no target property is
 	 * set for the reference.
 	 */
 	public String					target;
 
 	/**
-	 * The bound services.
+	 * The target services.
 	 * 
 	 * <p>
-	 * Each {@link ServiceReferenceDTO} in the array represents a service bound
-	 * to the component configuration.
+	 * Each {@link ServiceReferenceDTO} in the array represents a target service
+	 * for the reference. The array must be empty if there are no target
+	 * services. The upper bound on the number of target services in the array
+	 * is the upper bound on the {@link ReferenceDTO#cardinality cardinality} of
+	 * the reference.
 	 */
-	public ServiceReferenceDTO[]	serviceReferences;
+	public ServiceReferenceDTO[]	targetServices;
 }
