diff --git a/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeAddCommand.java b/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeAddCommand.java
index 5448ef1..8995314 100644
--- a/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeAddCommand.java
+++ b/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeAddCommand.java
@@ -21,7 +21,7 @@
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.TpPort;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.cordvtn.CordVtnService;
+import org.onosproject.cordvtn.CordVtnNodeManager;
 import org.onosproject.cordvtn.CordVtnNode;
 import org.onosproject.net.DeviceId;
 
@@ -63,7 +63,7 @@
         checkArgument(ovsdb.contains(":"), "OVSDB address should be ip:port format");
         checkArgument(bridgeId.startsWith("of:"), "bridgeId should be of:dpid format");
 
-        CordVtnService service = AbstractShellCommand.get(CordVtnService.class);
+        CordVtnNodeManager nodeManager = AbstractShellCommand.get(CordVtnNodeManager.class);
         String[] ipPort = ovsdb.split(":");
         CordVtnNode node = new CordVtnNode(hostname,
                                            IpAddress.valueOf(ipPort[0]),
@@ -71,6 +71,6 @@
                                            DeviceId.deviceId(bridgeId),
                                            phyPortName,
                                            IpAddress.valueOf(localIp));
-        service.addNode(node);
+        nodeManager.addNode(node);
     }
 }
diff --git a/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeCheckCommand.java b/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeCheckCommand.java
index 185acd7..f8afbd9 100644
--- a/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeCheckCommand.java
+++ b/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeCheckCommand.java
@@ -20,7 +20,7 @@
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.cordvtn.CordVtnNode;
-import org.onosproject.cordvtn.CordVtnService;
+import org.onosproject.cordvtn.CordVtnNodeManager;
 
 /**
  * Checks detailed node init state.
@@ -35,8 +35,8 @@
 
     @Override
     protected void execute() {
-        CordVtnService service = AbstractShellCommand.get(CordVtnService.class);
-        CordVtnNode node = service.getNodes()
+        CordVtnNodeManager nodeManager = AbstractShellCommand.get(CordVtnNodeManager.class);
+        CordVtnNode node = nodeManager.getNodes()
                 .stream()
                 .filter(n -> n.hostname().equals(hostname))
                 .findFirst()
@@ -47,6 +47,6 @@
             return;
         }
 
-        print(service.checkNodeInitState(node));
+        print(nodeManager.checkNodeInitState(node));
     }
 }
diff --git a/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeDeleteCommand.java b/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeDeleteCommand.java
index 0446fc6..1bdc84a 100644
--- a/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeDeleteCommand.java
+++ b/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeDeleteCommand.java
@@ -19,7 +19,7 @@
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.cordvtn.CordVtnService;
+import org.onosproject.cordvtn.CordVtnNodeManager;
 import org.onosproject.cordvtn.CordVtnNode;
 
 import java.util.NoSuchElementException;
@@ -37,12 +37,12 @@
 
     @Override
     protected void execute() {
-        CordVtnService service = AbstractShellCommand.get(CordVtnService.class);
+        CordVtnNodeManager nodeManager = AbstractShellCommand.get(CordVtnNodeManager.class);
 
         for (String hostname : hostnames) {
             CordVtnNode node;
             try {
-                node = service.getNodes()
+                node = nodeManager.getNodes()
                         .stream()
                         .filter(n -> n.hostname().equals(hostname))
                         .findFirst().get();
@@ -51,7 +51,7 @@
                 continue;
             }
 
-            service.deleteNode(node);
+            nodeManager.deleteNode(node);
         }
     }
 }
diff --git a/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeInitCommand.java b/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeInitCommand.java
index dd77a9c..ab8b389 100644
--- a/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeInitCommand.java
+++ b/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeInitCommand.java
@@ -19,7 +19,7 @@
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.cordvtn.CordVtnService;
+import org.onosproject.cordvtn.CordVtnNodeManager;
 import org.onosproject.cordvtn.CordVtnNode;
 
 import java.util.NoSuchElementException;
@@ -37,12 +37,12 @@
 
     @Override
     protected void execute() {
-        CordVtnService service = AbstractShellCommand.get(CordVtnService.class);
+        CordVtnNodeManager nodeManager = AbstractShellCommand.get(CordVtnNodeManager.class);
 
         for (String hostname : hostnames) {
             CordVtnNode node;
             try {
-                node = service.getNodes()
+                node = nodeManager.getNodes()
                         .stream()
                         .filter(n -> n.hostname().equals(hostname))
                         .findFirst().get();
@@ -51,7 +51,7 @@
                 continue;
             }
 
-            service.initNode(node);
+            nodeManager.initNode(node);
         }
     }
 }
diff --git a/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeListCommand.java b/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeListCommand.java
index 51641c4..48e1112 100644
--- a/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeListCommand.java
+++ b/src/main/java/org/onosproject/cordvtn/cli/CordVtnNodeListCommand.java
@@ -21,7 +21,7 @@
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.cordvtn.CordVtnService;
+import org.onosproject.cordvtn.CordVtnNodeManager;
 import org.onosproject.cordvtn.CordVtnNode;
 
 import java.util.Collections;
@@ -36,12 +36,12 @@
 
     @Override
     protected void execute() {
-        CordVtnService service = AbstractShellCommand.get(CordVtnService.class);
-        List<CordVtnNode> nodes = service.getNodes();
+        CordVtnNodeManager nodeManager = AbstractShellCommand.get(CordVtnNodeManager.class);
+        List<CordVtnNode> nodes = nodeManager.getNodes();
         Collections.sort(nodes, CordVtnNode.CORDVTN_NODE_COMPARATOR);
 
         if (outputJson()) {
-            print("%s", json(service, nodes));
+            print("%s", json(nodeManager, nodes));
         } else {
             for (CordVtnNode node : nodes) {
                 print("hostname=%s, ovsdb=%s, br-int=%s, phyPort=%s, localIp=%s, init=%s",
@@ -50,13 +50,13 @@
                       node.intBrId().toString(),
                       node.phyPortName(),
                       node.localIp().toString(),
-                      getState(service, node));
+                      getState(nodeManager, node));
             }
-            print("Total %s nodes", service.getNodeCount());
+            print("Total %s nodes", nodeManager.getNodeCount());
         }
     }
 
-    private JsonNode json(CordVtnService service, List<CordVtnNode> nodes) {
+    private JsonNode json(CordVtnNodeManager nodeManager, List<CordVtnNode> nodes) {
         ObjectMapper mapper = new ObjectMapper();
         ArrayNode result = mapper.createArrayNode();
         for (CordVtnNode node : nodes) {
@@ -67,12 +67,12 @@
                                .put("brInt", node.intBrId().toString())
                                .put("phyPort", node.phyPortName())
                                .put("localIp", node.localIp().toString())
-                               .put("init", getState(service, node)));
+                               .put("init", getState(nodeManager, node)));
         }
         return result;
     }
 
-    private String getState(CordVtnService service, CordVtnNode node) {
-        return service.getNodeInitState(node) ? "COMPLETE" : "INCOMPLETE";
+    private String getState(CordVtnNodeManager nodeManager, CordVtnNode node) {
+        return nodeManager.getNodeInitState(node) ? "COMPLETE" : "INCOMPLETE";
     }
 }
