diff --git a/cluster-mgmt/mininet/start_topo.py b/cluster-mgmt/mininet/start_topo.py
index ccabeda..4313014 100755
--- a/cluster-mgmt/mininet/start_topo.py
+++ b/cluster-mgmt/mininet/start_topo.py
@@ -53,15 +53,17 @@
     hostname = platform.node()
     default_topo = 'topo.%s.py' % hostname
     fallback_topo = 'topo.py'
-    topofile = default_topo if os.path.exists(default_topo) else fallback_topo
+    if os.path.exists(default_topo):
+        topofile = default_topo
+    else:
+        topofile = fallback_topo
 
 if not os.path.exists( topofile ):
-    print( 'Config file %s not found' % default_topo )
+    print( 'Config file %s not found' % topofile )
     exit( 1 )
 
 execfile( topofile )
 conf = createTopo()
-print conf
 
 class ConfigTopo( Topo ):
     "Topology created from config."
@@ -74,19 +76,27 @@
         # Add hosts and switches
         nmap = {}
         for s, prop in conf[ 'switches' ].iteritems():
-            # make sure encoding is ASCII (if not, virtual eth creation fails)
-            s = s.strip().encode( 'ascii' )
-            dpid = prop[ 'dpid' ].strip().encode( 'ascii' )
+            s = s.strip()
+            dpid = None
+            if 'dpid' in prop:
+                dpid = prop[ 'dpid' ].strip()
             nmap[ s ] = self.addSwitch( s, dpid=dpid )
         
         for h, prop in conf[ 'hosts' ].iteritems():
-            h = h.strip().encode( 'ascii' )
-            nmap[ h ] =self.addHost( h )
+            h = h.strip()
+            params = {}
+            if 'mac' in prop:
+                mac = prop[ 'mac' ].strip() 
+                params[ 'mac' ] = mac
+            if 'ip' in prop:
+                ip = prop[ 'ip' ].strip() 
+                params[ 'ip' ] = ip
+            nmap[ h ] = self.addHost( h, **params )
         
         # Add links
         for l in conf[ 'links' ]:
-            node1 = nmap[ l[ 'node1' ] ].strip().encode( 'ascii' )
-            node2 = nmap[ l[ 'node2' ] ].strip().encode( 'ascii' )
+            node1 = nmap[ l[ 'node1' ] ].strip()
+            node2 = nmap[ l[ 'node2' ] ].strip()
             self.addLink( node1, node2 )
 
 class ClusterConnectedSwitch( OVSSwitch ):
@@ -112,8 +122,8 @@
         Controller.__init__( self, name, **params )
         
         for cname, addr in conf[ 'controllers' ].iteritems():
-            cname = cname.strip().encode( 'ascii' )
-            addr = addr.strip().encode( 'ascii' )
+            cname = cname.strip()
+            addr = addr.strip()
             ip, port = addr.split( ':' )
             self.cmap[ cname ] = RemoteController( cname, ip=ip, port=int( port ) )
         
@@ -141,6 +151,7 @@
 
 if __name__ == '__main__':
     setLogLevel( 'info' )
+    info( "Topology file : %s\n" % topofile )
     net = Mininet( topo=ConfigTopo(),
                    controller=ControllerCluster,
                    switch=ClusterConnectedSwitch )
diff --git a/cluster-mgmt/mininet/topo.py b/cluster-mgmt/mininet/topo.py
index 2bd8b22..d2a7c10 100644
--- a/cluster-mgmt/mininet/topo.py
+++ b/cluster-mgmt/mininet/topo.py
@@ -9,6 +9,8 @@
         "onosdev2" : "192.168.56.12:6633"
     },
     "switches": {
+        # Note that dpid is optional.
+        # If omitted, sequential number will be assigned.
         "sw01": { "dpid": "0000000000000101", "controllers": [ "onosdev1" ] },
         "sw02": { "dpid": "0000000000000102", "controllers": [ "onosdev1" ] },
         "sw03": { "dpid": "0000000000000103", "controllers": [ "onosdev1" ] },
@@ -16,13 +18,22 @@
         "sw05": { "dpid": "0000000000000105", "controllers": [ "onosdev2", "onosdev1" ] }
     },
     "hosts": {
-        "h01": {},
-        "h02": {},
-        "h03": {},
-        "h04": {},
-        "h05": {}
+        # Only default interface is configurable for now.
+        # mac and ip are optional and automatically assigned if omitted.
+        # To avoid collision of address, do not mix specified hosts and omitted hosts.
+        "h01": { "mac": "00:00:00:00:01:01", "ip": "10.0.0.1" },
+        "h02": { "mac": "00:00:00:00:02:02", "ip": "10.0.0.2" },
+        "h03": { "mac": "00:00:00:00:03:03", "ip": "10.0.0.3" },
+        "h04": { "mac": "00:00:00:00:04:04", "ip": "10.0.0.4" },
+        "h05": { "mac": "00:00:00:00:05:05", "ip": "10.0.0.5" }
+#         "h01": {},
+#         "h02": {},
+#         "h03": {},
+#         "h04": {},
+#         "h05": {}
     },
     "links": [
+        # Note that multiple links between nodes are unsupported (if declared, single link will be created).
         {
             "node1": "sw01",
             "node2": "sw02"
diff --git a/cluster-mgmt/onos-cluster.sh b/cluster-mgmt/onos-cluster.sh
index 6c23cdc..f49c07b 100755
--- a/cluster-mgmt/onos-cluster.sh
+++ b/cluster-mgmt/onos-cluster.sh
@@ -191,6 +191,10 @@
   sed -i -e "s|__BACKEND__|${CLUSTER_BACKEND}|" ${tempfile}
   sed -i -e "s|__ZK_HOSTS__|${zk_hosts}|" ${tempfile}
   sed -i -e "s|__RAMCLOUD_PROTOCOL__|${CLUSTER_RC_PROTOCOL}|" ${tempfile}
+  sed -i -e "s|__RAMCLOUD_IP__|${rc_ip}|" ${tempfile}
+  sed -i -e "s|__RAMCLOUD_COORD_PORT__|${rc_coord_port}|" ${tempfile}
+  sed -i -e "s|__RAMCLOUD_SERVER_PORT__|${rc_server_port}|" ${tempfile}
+  sed -i -e "s|__RAMCLOUD_SERVER_REPLICAS__|${CLUSTER_RC_SERVER_REPLICAS}|" ${tempfile}
   
   # Filling RAMCloud parameters
   local host_role=$(read-conf ${CLUSTER_CONF} "cluster.${host}.role")
