diff --git a/core/api/src/main/java/org/onosproject/ui/UiPreferencesService.java b/core/api/src/main/java/org/onosproject/ui/UiPreferencesService.java
index 5ddd70b..7a4ccf3 100644
--- a/core/api/src/main/java/org/onosproject/ui/UiPreferencesService.java
+++ b/core/api/src/main/java/org/onosproject/ui/UiPreferencesService.java
@@ -42,12 +42,22 @@
     Map<String, ObjectNode> getPreferences(String userName);
 
     /**
+     * Returns the named preference for the specified user.
+     * If no such preferences exist, null will be returned.
+     *
+     * @param username user name
+     * @param key      preference key
+     * @return named preference
+     */
+    ObjectNode getPreference(String username, String key);
+
+    /**
      * Sets the named preference for the specified user.
      *
-     * @param userName   user name
-     * @param preference name of the user preference
-     * @param value      preference value
+     * @param username user name
+     * @param key      preference key
+     * @param value    preference value
      */
-    void setPreference(String userName, String preference, ObjectNode value);
+    void setPreference(String username, String key, ObjectNode value);
 
 }
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/UiExtensionManager.java b/web/gui/src/main/java/org/onosproject/ui/impl/UiExtensionManager.java
index 7895751..5ef4724 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/UiExtensionManager.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/UiExtensionManager.java
@@ -348,17 +348,22 @@
     }
 
     @Override
-    public Map<String, ObjectNode> getPreferences(String userName) {
+    public Map<String, ObjectNode> getPreferences(String username) {
         ImmutableMap.Builder<String, ObjectNode> builder = ImmutableMap.builder();
         prefs.entrySet().stream()
-                .filter(e -> e.getKey().startsWith(userName + SLASH))
+                .filter(e -> e.getKey().startsWith(username + SLASH))
                 .forEach(e -> builder.put(keyName(e.getKey()), e.getValue()));
         return builder.build();
     }
 
     @Override
-    public void setPreference(String userName, String preference, ObjectNode value) {
-        prefs.put(key(userName, preference), value);
+    public ObjectNode getPreference(String username, String key) {
+        return prefs.get(key(username, key));
+    }
+
+    @Override
+    public void setPreference(String username, String key, ObjectNode value) {
+        prefs.put(key(username, key), value);
     }
 
     // =====================================================================
