Working on model & description annotations.
diff --git a/core/api/src/main/java/org/onlab/onos/net/AbstractAnnotated.java b/core/api/src/main/java/org/onlab/onos/net/AbstractAnnotated.java
index f3c4b86..f29ad43 100644
--- a/core/api/src/main/java/org/onlab/onos/net/AbstractAnnotated.java
+++ b/core/api/src/main/java/org/onlab/onos/net/AbstractAnnotated.java
@@ -1,11 +1,5 @@
 package org.onlab.onos.net;
 
-import com.google.common.collect.ImmutableSet;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
 import static com.google.common.base.Preconditions.checkArgument;
 
 /**
@@ -13,13 +7,13 @@
  */
 public class AbstractAnnotated implements Annotated {
 
-    private static final Map<String, String> EMPTY = new HashMap<>();
+    private static final Annotations EMPTY = DefaultAnnotations.builder().build();
 
-    private final Map<String, String> annotations;
+    private final Annotations annotations;
 
     // For serialization
     protected AbstractAnnotated() {
-        this.annotations = EMPTY;
+        this.annotations = null;
     }
 
     /**
@@ -27,19 +21,14 @@
      *
      * @param annotations optional key/value annotations map
      */
-    protected AbstractAnnotated(Map<String, String>[] annotations) {
+    protected AbstractAnnotated(Annotations... annotations) {
         checkArgument(annotations.length <= 1, "Only one set of annotations is expected");
         this.annotations = annotations.length == 1 ? annotations[0] : EMPTY;
     }
 
     @Override
-    public Set<String> annotationKeys() {
-        return ImmutableSet.copyOf(annotations.keySet());
-    }
-
-    @Override
-    public String annotation(String key) {
-        return annotations.get(key);
+    public Annotations annotations() {
+        return annotations;
     }
 
 }