diff --git a/conf/onos.properties b/conf/onos.properties
index 0f7256e..20d90c4 100644
--- a/conf/onos.properties
+++ b/conf/onos.properties
@@ -11,4 +11,5 @@
 net.floodlightcontroller.core.FloodlightProvider.workerthreads = 16
 net.floodlightcontroller.forwarding.Forwarding.idletimeout = 5
 net.floodlightcontroller.forwarding.Forwarding.hardtimeout = 0
-net.onrc.onos.core.datagrid.HazelcastDatagrid.datagridConfig = conf/hazelcast.xml
+# NOTE: Do NOT modify or remove the line below. This value will be overwritten by onos.sh script.
+net.onrc.onos.core.datagrid.HazelcastDatagrid.datagridConfig = 
diff --git a/onos.sh b/onos.sh
index dbf2739..9bc7a3d 100755
--- a/onos.sh
+++ b/onos.sh
@@ -6,12 +6,13 @@
 # $ONOS_CONF       : path of ONOS node config file (~/ONOS/conf/onos_node.`hostname`.conf or onos_node.conf)
 # $ONOS_PROPS      : path of ONOS properties file (~/ONOS/conf/onos.properties)
 # $ONOS_LOGBACK    : path of logback config file (~/ONOS/conf/logback.`hostname`.xml)
-# $LOGDIR          : path of log output directory (~/ONOS/onos-logs)
-# $LOGBASE         : base name of log output file (onos.`hostname`)
+# $ONOS_LOGDIR     : path of log output directory (~/ONOS/onos-logs)
+# $ONOS_LOGBASE    : base name of log output file (onos.`hostname`)
 # $RAMCLOUD_HOME   : path of root directory of RAMCloud repository (~/ramcloud)
 # $RAMCLOUD_BRANCH : branch name of RAMCloud to use (master)
 # $ZK_HOME         : path of root directory of ZooKeeper (~/zookeeper-3.4.5)
 # $ZK_LIB_DIR      : path of ZooKeeper library (/var/lib/zookeeper)
+# $ZK_LOG_DIR      : path of ZooKeeper log output directory (~/ONOS/onos-logs/zk-`hostname`)
 # $JVM_OPTS        : JVM options ONOS starts with
 # $ZK_CONF         : path of ZooKeeper config file (~/ONOS/conf/zoo.cfg)
 # $HC_CONF         : path of Hazelcast config file (~/ONOS/conf/hazelcast.xml)
@@ -62,7 +63,7 @@
 ZK_CONF=${ZK_CONF:-${ONOS_CONF_DIR}/zoo.cfg}
 ZK_CONF_TEMPLATE=${ONOS_TEMPLATE_DIR}/zoo.cfg.template
 # Adding ONOS_HOST_NAME dir since file name (zookeeper.out) cannot be controlled.
-ZK_LOG_DIR=${ONOS_HOME}/onos-logs/${ONOS_HOST_NAME}
+ZK_LOG_DIR=${ZK_LOG_DIR:-${ONOS_HOME}/onos-logs/zk-${ONOS_HOST_NAME}}
 ZK_LIB_DIR=${ZK_LIB_DIR:-/var/lib/zookeeper}
 ZK_MY_ID=${ZK_LIB_DIR}/myid
 
@@ -124,6 +125,8 @@
 
 JVM_OPTS="$JVM_OPTS -Dhazelcast.logging.type=slf4j"
 
+JVM_OPTS="${JVM_OPTS} -Dnet.onrc.onos.core.datagrid.HazelcastDatagrid.datagridConfig=${HC_CONF}"
+
 # Uncomment to dump final JVM flags to stdout
 #JVM_OPTS="$JVM_OPTS -XX:+PrintFlagsFinal"
 
diff --git a/vm-utils/onos.py b/vm-utils/onos.py
index 119df36..9a34c5b 100755
--- a/vm-utils/onos.py
+++ b/vm-utils/onos.py
@@ -61,6 +61,7 @@
     ofbase = 6633
     restbase = 8080
     jmxbase = 7189
+    hcbase = 5701
 
     fc = 'net.floodlightcontroller.'
 
@@ -194,10 +195,13 @@
         "Stop Zookeeper"
         self.cmd( 'onos.sh zk stop' )
 
+    def getPropsFilename( self, id, path ):
+        return path + '/onos-%s.properties' % id
+        
     def genProperties( self, id, path='/tmp' ):
         "Generate ONOS properties file and return its full pathname"
         defaultProps = self.onosDir + '/conf/onos.properties'
-        propsFile = path + '/onos-%s.properties' % id
+        propsFile = self.getPropsFilename( id, path )
         with open( propsFile, 'w' ) as f:
             with open( defaultProps ) as d:
                 for line in d.readlines():
@@ -216,7 +220,24 @@
                                 f.write( '%s,\\\n' % module )
         return propsFile
 
-    def setVars( self, id, propsFile ):
+    def getConfsFilename( self, id, path ):
+        return path + '/onos-%s.conf' % id
+        
+    def genConfig( self, id, path='/tmp' ):
+        "Generate ONOS node config file and return its full pathname"
+        confsFile = self.getConfsFilename( id, path )
+        with open( confsFile, 'w' ) as f:
+            f.write( 'host.ip = 127.0.0.1\n' )
+            f.write( 'host.backend = ramcloud\n' )
+            f.write( 'hazelcast.host.port = %s\n' % ( self.hcbase + 10 * id ) )
+        return confsFile
+
+    def setVarsGlobal( self, path='/tmp'):
+        logdir = self.logDir
+        self.cmd( 'export ONOS_LOGDIR=%s' % logdir )
+        self.cmd( 'export ZK_LOG_DIR=%s' % logdir )
+
+    def setVarsLocal( self, id, path='/tmp' ):
         """Set and return environment vars
            id: ONOS instance number
            propsFile: properties file name"""
@@ -224,22 +245,29 @@
         logback = self.logbackFile % id
         jmxport = self.jmxbase + id
         logdir = self.logDir
-        self.cmd( 'export ONOS_LOGDIR=%s' % logdir )
         self.cmd( 'export ONOS_LOGBASE=onos-%d.`hostname`' % id)
-        self.cmd( 'export ZOO_LOG_DIR="%s"' % logdir )
         self.cmd( 'export ONOS_LOGBACK="%s"' % logback )
         self.cmd( 'export JMX_PORT=%s' % jmxport )
         self.cmd( 'export JVM_OPTS="-D%s=%s"' % (
             self.proctag, id ) )
+        propsFile = self.getPropsFilename( id, path )
         self.cmd( 'export ONOS_PROPS="%s"' % propsFile )
+        confsFile = self.getConfsFilename( id, path )
+        self.cmd( 'export ONOS_CONF="%s"' % confsFile )
+        self.cmd( 'export HC_CONF="%s/hazelcast.%s.conf"' % ( path, id ) )
 
+    def setupONOS (self, id):
+        propsFile = self.genProperties( id )
+        confFile = self.genConfig( id )
+        self.setVarsLocal( id )
+        self.cmd( 'onos.sh setup -f' )
+        
     def startONOS( self, id ):
         """Start ONOS
            id: new instance number"""
         start = time.time()
+        self.setVarsLocal( id )
         self.stopONOS( id )
-        propsFile = self.genProperties( id )
-        self.setVars( id, propsFile )
         self.cmd( 'onos.sh core startnokill' )
         # start-onos.sh waits for ONOS startup
         elapsed = time.time() - start
@@ -255,6 +283,11 @@
 
     def start( self, *args ):
         "Start ONOS instances"
+        self.setVarsGlobal()
+        # TODO: use onos-cluster.sh to setup/start/stop ONOS cluster
+        for id in self.ids:
+            info( '* Setting up ONOS %s\n' % id )
+            self.setupONOS( id )
         info( '* Starting Zookeeper\n' )
         self.startZookeeper()
         info( '* Starting Ramcloud\n' )
