diff --git a/scr-annotations/src/main/java/org/apache/felix/scr/annotations/PropertyOption.java b/scr-annotations/src/main/java/org/apache/felix/scr/annotations/PropertyOption.java
index 6814cc4..1dec2da 100644
--- a/scr-annotations/src/main/java/org/apache/felix/scr/annotations/PropertyOption.java
+++ b/scr-annotations/src/main/java/org/apache/felix/scr/annotations/PropertyOption.java
@@ -23,6 +23,7 @@
 /**
  * Defines a {@link Property} option.
  */
+@Property(options=@PropertyOption(name="you",value="something"))
 @Target(ElementType.ANNOTATION_TYPE)
 @Retention(RetentionPolicy.SOURCE)
 @Documented
diff --git a/scr-annotations/src/main/java/org/apache/felix/scr/annotations/Reference.java b/scr-annotations/src/main/java/org/apache/felix/scr/annotations/Reference.java
index 6a7277e..760b3b9 100644
--- a/scr-annotations/src/main/java/org/apache/felix/scr/annotations/Reference.java
+++ b/scr-annotations/src/main/java/org/apache/felix/scr/annotations/Reference.java
@@ -95,14 +95,11 @@
     String unbind() default "";
 
     /**
-     * TODO: parameter documentation missing
-     */
-    boolean checked() default false;
-
-    /**
-     * TODO: parameter documentation missing
-     * @since 1.0.9
+     * The reference strategy for the reference. This can either be
+     * {@link ReferenceStrategy#EVENT} in which case the bind and unbind
+     * methods are used or it can be {@link ReferenceStrategy#LOOKUP}
+     * in which case the reference is looked up through the
+     * component context.
      */
     ReferenceStrategy strategy() default ReferenceStrategy.EVENT;
-
 }
diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ReferenceTag.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ReferenceTag.java
index ffc4c1c..1ab68a7 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ReferenceTag.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/annotation/defaulttag/ReferenceTag.java
@@ -52,10 +52,6 @@
                 return Util.getEnumValue(annotation, "cardinality", ReferenceCardinality.class, Reference.class);
             }
 
-            public boolean checked() {
-                return Util.getBooleanValue(annotation, "checked", Reference.class);
-            }
-
             public String name() {
                 return Util.getStringValue(annotation, desc, "name", Reference.class);
             }
@@ -107,7 +103,6 @@
         map.put(Constants.REFERENCE_TARGET, emptyToNull(this.annotation.target()));
         map.put(Constants.REFERENCE_BIND, emptyToNull(this.annotation.bind()));
         map.put(Constants.REFERENCE_UNDBIND, emptyToNull(this.annotation.unbind()));
-        map.put(Constants.REFERENCE_CHECKED, String.valueOf(this.annotation.checked()));
         map.put(Constants.REFERENCE_STRATEGY, this.annotation.strategy().getStrategyString());
 
         return map;
