diff --git a/core/api/src/main/java/org/onosproject/ui/RequestHandler.java b/core/api/src/main/java/org/onosproject/ui/RequestHandler.java
index 7231dcf..51a803a 100644
--- a/core/api/src/main/java/org/onosproject/ui/RequestHandler.java
+++ b/core/api/src/main/java/org/onosproject/ui/RequestHandler.java
@@ -22,14 +22,14 @@
  * Abstraction of an entity that handles a specific request from the
  * user interface client.
  *
- * @see UiMessageHandlerTwo
+ * @see UiMessageHandler
  */
 public abstract class RequestHandler {
 
     protected static final ObjectMapper MAPPER = new ObjectMapper();
 
     private final String eventType;
-    private UiMessageHandlerTwo parent;
+    private UiMessageHandler parent;
 
 
     public RequestHandler(String eventType) {
@@ -37,7 +37,7 @@
     }
 
     // package private
-    void setParent(UiMessageHandlerTwo parent) {
+    void setParent(UiMessageHandler parent) {
         this.parent = parent;
     }
 
diff --git a/core/api/src/main/java/org/onosproject/ui/UiMessageHandlerTwo.java b/core/api/src/main/java/org/onosproject/ui/UiMessageHandler.java
similarity index 96%
rename from core/api/src/main/java/org/onosproject/ui/UiMessageHandlerTwo.java
rename to core/api/src/main/java/org/onosproject/ui/UiMessageHandler.java
index 915bcaf..2f70780 100644
--- a/core/api/src/main/java/org/onosproject/ui/UiMessageHandlerTwo.java
+++ b/core/api/src/main/java/org/onosproject/ui/UiMessageHandler.java
@@ -44,7 +44,7 @@
  * }
  * </pre>
  */
-public abstract class UiMessageHandlerTwo {
+public abstract class UiMessageHandler {
 
     private final Map<String, RequestHandler> handlerMap = new HashMap<>();
 
@@ -56,20 +56,6 @@
      */
     protected final ObjectMapper mapper = new ObjectMapper();
 
-    /**
-     * Binds the handlers returned from {@link #getHandlers()} to this
-     * instance.
-     */
-    void bindHandlers() {
-        Collection<RequestHandler> handlers = getHandlers();
-        checkNotNull(handlers, "Handlers cannot be null");
-        checkArgument(!handlers.isEmpty(), "Handlers cannot be empty");
-
-        for (RequestHandler h : handlers) {
-            h.setParent(this);
-            handlerMap.put(h.eventType(), h);
-        }
-    }
 
     /**
      * Subclasses must return the collection of handlers for the
@@ -115,6 +101,17 @@
         }
     }
 
+    private void bindHandlers() {
+        Collection<RequestHandler> handlers = getHandlers();
+        checkNotNull(handlers, "Handlers cannot be null");
+        checkArgument(!handlers.isEmpty(), "Handlers cannot be empty");
+
+        for (RequestHandler h : handlers) {
+            h.setParent(this);
+            handlerMap.put(h.eventType(), h);
+        }
+    }
+
     /**
      * Initializes the handler with the user interface connection and
      * service directory context.
diff --git a/core/api/src/main/java/org/onosproject/ui/UiMessageHandlerFactory.java b/core/api/src/main/java/org/onosproject/ui/UiMessageHandlerFactory.java
index 23bd5d4..522daa8 100644
--- a/core/api/src/main/java/org/onosproject/ui/UiMessageHandlerFactory.java
+++ b/core/api/src/main/java/org/onosproject/ui/UiMessageHandlerFactory.java
@@ -28,6 +28,6 @@
      *
      * @return collection of new handlers
      */
-    Collection<UiMessageHandlerTwo> newHandlers();
+    Collection<UiMessageHandler> newHandlers();
 
 }
