diff --git a/core/api/src/main/java/org/onosproject/net/AnnotationKeys.java b/core/api/src/main/java/org/onosproject/net/AnnotationKeys.java
index 9fb7e33..5345e34 100644
--- a/core/api/src/main/java/org/onosproject/net/AnnotationKeys.java
+++ b/core/api/src/main/java/org/onosproject/net/AnnotationKeys.java
@@ -21,7 +21,6 @@
  * Number of the annotation keys have been deprecated as the use of annotations
  * is being phased out and instead network configuration subsystem is being
  * phased-in for majority of model meta-data.
- * </p>
  */
 public final class AnnotationKeys {
 
@@ -43,6 +42,11 @@
     public static final String TYPE = "type";
 
     /**
+     * Annotation key for UI type (the glyph ID for rendering).
+     */
+    public static final String UI_TYPE = "uiType";
+
+    /**
      * Annotation key for latitude (e.g. latitude of device).
      */
     public static final String LATITUDE = "latitude";
diff --git a/core/api/src/main/java/org/onosproject/net/config/basics/BasicDeviceConfig.java b/core/api/src/main/java/org/onosproject/net/config/basics/BasicDeviceConfig.java
index 6401ab4..ebcdd82 100644
--- a/core/api/src/main/java/org/onosproject/net/config/basics/BasicDeviceConfig.java
+++ b/core/api/src/main/java/org/onosproject/net/config/basics/BasicDeviceConfig.java
@@ -18,6 +18,7 @@
 import org.onosproject.net.Device;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.key.DeviceKeyId;
+
 /**
  * Basic configuration for network infrastructure devices.
  */
@@ -34,9 +35,9 @@
 
     @Override
     public boolean isValid() {
-        return hasOnlyFields(ALLOWED, NAME, LATITUDE, LONGITUDE, RACK_ADDRESS, OWNER,
-                             TYPE, DRIVER, MANUFACTURER, HW_VERSION, SW_VERSION, SERIAL,
-                             MANAGEMENT_ADDRESS, DEVICE_KEY_ID);
+        return hasOnlyFields(ALLOWED, NAME, LATITUDE, LONGITUDE, UI_TYPE,
+                RACK_ADDRESS, OWNER, TYPE, DRIVER, MANUFACTURER, HW_VERSION,
+                SW_VERSION, SERIAL, MANAGEMENT_ADDRESS, DEVICE_KEY_ID);
     }
 
     /**
@@ -185,12 +186,12 @@
     /**
      * Sets the device key id.
      *
-     * @param deviceKeyId new device key id; null to clear
+     * @param deviceKeyId the new device key id; null to clear
      * @return self
      */
     public BasicDeviceConfig deviceKeyId(DeviceKeyId deviceKeyId) {
         return (BasicDeviceConfig) setOrClear(DEVICE_KEY_ID,
-                                              deviceKeyId != null ? deviceKeyId.id() : null);
+                deviceKeyId != null ? deviceKeyId.id() : null);
     }
 
     // TODO: device port meta-data to be configured via BasicPortsConfig
diff --git a/core/api/src/main/java/org/onosproject/net/config/basics/BasicElementConfig.java b/core/api/src/main/java/org/onosproject/net/config/basics/BasicElementConfig.java
index 74257e6..7c2a5b8 100644
--- a/core/api/src/main/java/org/onosproject/net/config/basics/BasicElementConfig.java
+++ b/core/api/src/main/java/org/onosproject/net/config/basics/BasicElementConfig.java
@@ -23,6 +23,7 @@
 public abstract class BasicElementConfig<S> extends AllowedEntityConfig<S> {
 
     protected static final String NAME = "name";
+    protected static final String UI_TYPE = "uiType";
 
     protected static final String LATITUDE = "latitude";
     protected static final String LONGITUDE = "longitude";
@@ -52,15 +53,36 @@
         return (BasicElementConfig) setOrClear(NAME, name);
     }
 
-    private static boolean doubleIsZero(double value) {
+    /**
+     * Returns the UI type (glyph image to be used) for the element in
+     * the Topology View.
+     *
+     * @return the UI type
+     */
+    public String uiType() {
+        return get(UI_TYPE, null);
+    }
+
+    /**
+     * Sets the UI type (glyph image to be used) for the element in
+     * the Topology View.
+     *
+     * @param uiType the UI type; null for default
+     * @return self
+     */
+    public BasicElementConfig uiType(String uiType) {
+        return (BasicElementConfig) setOrClear(UI_TYPE, uiType);
+    }
+
+    private boolean doubleIsZero(double value) {
         return value >= -ZERO_THRESHOLD && value <= ZERO_THRESHOLD;
     }
 
     /**
      * Returns true if the geographical coordinates (latitude and longitude)
-     * are set on this element.
+     * are set on this element; false otherwise.
      *
-     * @return true if geo-coordinates are set
+     * @return true if geo-coordinates are set; false otherwise
      */
     public boolean geoCoordsSet() {
         return !doubleIsZero(latitude()) || !doubleIsZero(longitude());
diff --git a/core/api/src/main/java/org/onosproject/net/config/basics/BasicHostConfig.java b/core/api/src/main/java/org/onosproject/net/config/basics/BasicHostConfig.java
index fe3a3b7..3758c4e 100644
--- a/core/api/src/main/java/org/onosproject/net/config/basics/BasicHostConfig.java
+++ b/core/api/src/main/java/org/onosproject/net/config/basics/BasicHostConfig.java
@@ -23,8 +23,6 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import static org.onosproject.net.config.basics.AllowedEntityConfig.ALLOWED;
-
 /**
  * Basic configuration for network end-station hosts.
  */
@@ -38,12 +36,12 @@
         // Location and IP addresses can be absent, but if present must be valid.
         this.location();
         this.ipAddresses();
-        return hasOnlyFields(ALLOWED, NAME, LATITUDE, LONGITUDE, RACK_ADDRESS, OWNER,
-                             IPS, LOCATION);
+        return hasOnlyFields(ALLOWED, NAME, LATITUDE, LONGITUDE, UI_TYPE,
+                RACK_ADDRESS, OWNER, IPS, LOCATION);
     }
 
     /**
-     * Returns location of the host.
+     * Returns the location of the host.
      *
      * @return location of the host or null if not set
      * @throws IllegalArgumentException if not specified with correct format
