diff --git a/scr/src/main/java/org/apache/felix/scr/impl/runtime/ServiceComponentRuntimeImpl.java b/scr/src/main/java/org/apache/felix/scr/impl/runtime/ServiceComponentRuntimeImpl.java
index 42331da..438591a 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/runtime/ServiceComponentRuntimeImpl.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/runtime/ServiceComponentRuntimeImpl.java
@@ -310,19 +310,12 @@
 			dto.bind = r.getBind();
 			dto.cardinality = r.getCardinality();
 			dto.field = r.getField();
+			dto.fieldOption = r.getFieldOption();
 			dto.interfaceName = r.getInterface();
 			dto.name = r.getName();
 			dto.policy = r.getPolicy();
 			dto.policyOption = r.getPolicyOption();
 			dto.scope = r.getScope().name();
-			if ( r.getField() != null )
-			{
-		        dto.strategy = r.isReplace() ? ReferenceDTO.STRATEGY_FIELD_REPLACE : ReferenceDTO.STRATEGY_FIELD_UPDATE;
-			}
-			else
-			{
-			    dto.strategy = r.getBind() != null ? ReferenceDTO.STRATEGY_METHOD : ReferenceDTO.STRATEGY_LOOKUP;
-			}
 			dto.target = r.getTarget();
 			dto.unbind = r.getUnbind();
 			dto.updated = r.getUpdated();
diff --git a/scr/src/main/java/org/osgi/service/component/ComponentConstants.java b/scr/src/main/java/org/osgi/service/component/ComponentConstants.java
index c8d3fa1..de3a41a 100644
--- a/scr/src/main/java/org/osgi/service/component/ComponentConstants.java
+++ b/scr/src/main/java/org/osgi/service/component/ComponentConstants.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) OSGi Alliance (2004, 2014). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2004, 2015). All Rights Reserved.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,7 +21,7 @@
 /**
  * Defines standard names for Service Component constants.
  * 
- * @author $Id: 93b7c4e0215afc23d3f2dce477cdf4298fd366a4 $
+ * @author $Id: 624eb5610c2127d24ce76f16b3cc146cbcf6db57 $
  */
 @ProviderType
 public interface ComponentConstants {
@@ -123,4 +123,20 @@
 	 * @since 1.1
 	 */
 	public static final int		DEACTIVATION_REASON_BUNDLE_STOPPED			= 6;
+
+	/**
+	 * Capability name for Service Component Runtime.
+	 * 
+	 * <p>
+	 * Used in {@code Provide-Capability} and {@code Require-Capability}
+	 * manifest headers with the {@code osgi.extender} namespace. For example:
+	 * 
+	 * <pre>
+	 * Require-Capability: osgi.extender;
+	 *  filter:="(&amp;(osgi.extender=osgi.component)(version&gt;=1.3)(!(version&gt;=2.0)))"
+	 * </pre>
+	 * 
+	 * @since 1.3
+	 */
+	public static final String	COMPONENT_CAPABILITY_NAME					= "osgi.component";
 }
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 7d7fc31..8f7c5b1 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
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) OSGi Alliance (2013, 2014). All Rights Reserved.
+ * Copyright (c) OSGi Alliance (2013, 2015). All Rights Reserved.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,56 +23,11 @@
  * 
  * @since 1.3
  * @NotThreadSafe
- * @author $Id: 906b26512776b149670ec3048a8714dc99ff447a $
+ * @author $Id: fca2413271fcded16b4ebe3c6628fe8660e2575e $
  */
 public class ReferenceDTO extends DTO {
 
 	/**
-	 * Constant for the lookup strategy
-	 * 
-	 * @see #strategy
-	 */
-	public static final String	STRATEGY_LOOKUP			= "LOOKUP";
-
-	/**
-	 * Constant for the method strategy
-	 * 
-	 * @see #strategy
-	 */
-	public static final String	STRATEGY_METHOD			= "METHOD";
-
-	/**
-	 * Constant for the field replace strategy
-	 * 
-	 * @see #strategy
-	 */
-	public static final String	STRATEGY_FIELD_REPLACE	= "FIELD_REPLACE";
-
-	/**
-	 * Constant for the field update strategy
-	 * 
-	 * @see #strategy
-	 */
-	public static final 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>
@@ -136,9 +91,8 @@
 	 * 
 	 * <p>
 	 * This is declared in the {@code bind} attribute of the {@code 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.
+	 * element. This must be {@code null} if the component description does not
+	 * declare a bind method for the reference.
 	 */
 	public String	bind;
 
@@ -147,11 +101,8 @@
 	 * 
 	 * <p>
 	 * This is declared in the {@code unbind} attribute of the {@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 unbind
-	 * method for the reference.
-	 *
-	 * @see #strategy
+	 * element. This must be {@code null} if the component description does not
+	 * declare an unbind method for the reference.
 	 */
 	public String	unbind;
 
@@ -160,11 +111,8 @@
 	 * 
 	 * <p>
 	 * This is declared in the {@code updated} attribute of the
-	 * {@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
+	 * {@code reference} element. This must be {@code null} if the component
+	 * description does not declare an updated method for the reference.
 	 */
 	public String	updated;
 
@@ -173,14 +121,22 @@
 	 * 
 	 * <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
+	 * element. This must be {@code null} if the component description does not
+	 * declare a field for the reference.
 	 */
 	public String	field;
 
 	/**
+	 * The field option of the reference.
+	 * 
+	 * <p>
+	 * This is declared in the {@code field-option} attribute of the
+	 * {@code reference} element. This must be {@code null} if the component
+	 * description does not declare a field for the reference.
+	 */
+	public String	fieldOption;
+
+	/**
 	 * The scope of the reference.
 	 * 
 	 * <p>
