diff --git a/conf/hazelcast.xml b/conf/hazelcast.xml
deleted file mode 100644
index d97b358..0000000
--- a/conf/hazelcast.xml
+++ /dev/null
@@ -1,116 +0,0 @@
-<hazelcast xsi:schemaLocation="http://www.hazelcast.com/schema/config
-	http://www.hazelcast.com/schema/config/hazelcast-config-3.0.xsd"
-	xmlns="http://www.hazelcast.com/schema/config"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-
-  <!-- Configuration of maps used as a data store. -->
-  <map name="datastore://*">
-    <!-- must use 'sync' backup to imitate other data store -->
-    <backup-count>3</backup-count>
-    <async-backup-count>0</async-backup-count>
-    <!-- must be false for strong consistency -->
-    <read-backup-data>false</read-backup-data>
-    <!-- near cache must not be used -->
-  </map>
-
-  <map name="*">
-
-    <!--
-    Number of sync-backups. If 1 is set as the backup-count for example,
-    then all entries of the map will be copied to another JVM for
-    ail-safety. Valid numbers are 0 (no backup), 1, 2, 3.
-    -->
-    <backup-count>0</backup-count>
-
-    <!--
-    Number of async-backups. If 1 is set as the backup-count for example,
-    then all entries of the map will be copied to another JVM for
-    fail-safety. Valid numbers are 0 (no backup), 1, 2, 3.
-    -->
-    <async-backup-count>3</async-backup-count>
-
-    <!--
-    Can we read the local backup entries? Default value is false for
-    strong consistency. Being able to read backup data will give you
-    greater performance.
-    -->
-    <read-backup-data>true</read-backup-data>
-
-    <near-cache>
-      <!--
-	  Maximum size of the near cache. When max size is reached,
-	  cache is evicted based on the policy defined.
-	  Any integer between 0 and Integer.MAX_VALUE. 0 means
-	  Integer.MAX_VALUE. Default is 0.
-      -->
-      <max-size>0</max-size>
-      <!--
-	  Maximum number of seconds for each entry to stay in the near cache.
-	  Entries that are older than <time-to-live-seconds> will get
-	  automatically evicted from the near cache.
-	  Any integer between 0 and Integer.MAX_VALUE. 0 means infinite.
-	  Default is 0.
-      -->
-      <time-to-live-seconds>0</time-to-live-seconds>
-
-      <!--
-	  Maximum number of seconds each entry can stay in the near cache as
-	  untouched (not-read).
-	  Entries that are not read (touched) more than <max-idle-seconds>
-	  value will get removed from the near cache.
-	  Any integer between 0 and Integer.MAX_VALUE. 0 means
-	  Integer.MAX_VALUE. Default is 0.
-      -->
-      <max-idle-seconds>0</max-idle-seconds>
-
-      <!--
-	  Valid values are:
-	  NONE (no extra eviction, <time-to-live-seconds> may still apply),
-	  LRU (Least Recently Used),
-	  LFU (Least Frequently Used).
-	  LRU is the default.
-	  Regardless of the eviction policy used, <time-to-live-seconds> will
-	  still apply.
-      -->
-      <eviction-policy>NONE</eviction-policy>
-
-      <!--
-	  Should the cached entries get evicted if the entries are changed
-	  (updated or removed).
-	  true of false. Default is true.
-      -->
-      <invalidate-on-change>true</invalidate-on-change>
-
-    </near-cache>
-  </map>
-
-  <topic name="*">
-    <global-ordering-enabled>false</global-ordering-enabled>
-  </topic>
-
-  <network>
-    <port auto-increment="true">5701</port>
-    <join>
-      <multicast enabled="false">
-        <multicast-group>224.2.2.3</multicast-group>
-        <multicast-port>54327</multicast-port>
-      </multicast>
-      <tcp-ip enabled="true">
-        <member>localhost:5701</member>
-      <!--
-        <member>machine2</member>
-        <member>machine3:5799</member>
-        <member>192.168.1.0-7</member>
-        <member>192.168.1.21</member>
-      -->
-      </tcp-ip>
-      <aws enabled="false">
-      </aws>
-    </join>
-  </network>
-
-  <properties>
-    <property name="hazelcast.logging.type">slf4j</property>
-    <property name="hazelcast.version.check.enabled">false</property>
-  </properties>
-</hazelcast>
diff --git a/conf/logback-deployment.xml b/conf/logback-deployment.xml
deleted file mode 100644
index 3877f65..0000000
--- a/conf/logback-deployment.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<configuration scan="true" debug="true">
-  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>%level [%logger:%thread] %msg%n</pattern>
-    </encoder>
-  </appender>
-
-  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
-    <file>./onos-logs/onos.ubuntu.log</file>
-    <encoder>
-      <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
-    </encoder>
-  </appender>
-
-  <appender name="ROLLINGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>./onos-logs/onos.ubuntu.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <!-- Roll over to a new log file every day -->
-      <fileNamePattern>./onos-logs/onos.ubuntu.%d{yyyy-MM-dd}.log</fileNamePattern>
-      <!-- Keep 10 days worth of logs -->
-      <maxHistory>10</maxHistory>
-    </rollingPolicy>
-
-    <encoder>
-      <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
-    </encoder>
-    
-  </appender>
-
-  <logger name="org" level="WARN"/>
-  <logger name="LogService" level="WARN"/> <!-- Restlet access logging -->
-  <logger name="net.floodlightcontroller.logging" level="WARN"/>
-
-  <root level="DEBUG">
-    <appender-ref ref="ROLLINGFILE" />
-  </root>
-</configuration>
diff --git a/conf/ramcloud.conf b/conf/ramcloud.conf
deleted file mode 100644
index 9acd174..0000000
--- a/conf/ramcloud.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-ramcloud.coordinatorIp=fast+udp:host=127.0.0.1
-ramcloud.coordinatorPort=port=12246
-# Following lines is not used by ONOS core
-ramcloud.serverIp=fast+udp:host=127.0.0.1
-ramcloud.serverPort=port=12242
diff --git a/onos.sh b/onos.sh
index 3954010..750078a 100755
--- a/onos.sh
+++ b/onos.sh
@@ -284,7 +284,7 @@
   
   if [ -z "${myid}" ]; then
     local filename=`basename ${ONOS_CONF}`
-    revert-confs "[ERROR in ${filename}] zookeeper.hosts must have hostname \"${ONOS_HOST_NAME}\" or IP address"
+    revert-confs "[ERROR] In ${filename}, zookeeper.hosts must have hostname \"${ONOS_HOST_NAME}\" or IP address"
   fi
   
   if [ -f "${ZK_MY_ID}" ]; then
@@ -387,11 +387,6 @@
   echo "ramcloud.coordinatorIp=${RC_COORD_PROTOCOL}:host=${RC_COORD_IP}" > ${temp_hc}
   echo "ramcloud.coordinatorPort=port=${RC_COORD_PORT}" >> ${temp_hc}
 
-  # FIXME remove these when old start-up script is removed.
-  echo "# Following lines is not used by ONOS core or onos.sh" >> ${temp_hc}
-  echo "ramcloud.serverIp=${RC_SERVER_PROTOCOL}:host=${RC_SERVER_IP}" >> ${temp_hc}
-  echo "ramcloud.serverPort=port=${RC_SERVER_PORT}" >> ${temp_hc}
-
   mv ${temp_hc} ${RAMCLOUD_CONF}
 
   echo "DONE"
diff --git a/start-onos-jacoco.sh b/start-onos-jacoco.sh
deleted file mode 100755
index 55bafd5..0000000
--- a/start-onos-jacoco.sh
+++ /dev/null
@@ -1,189 +0,0 @@
-#!/bin/bash
-
-# Set paths
-if [ -z "${ONOS_HOME}" ]; then
-        ONOS_HOME=`dirname $0`
-fi
-
-## Because the script change dir to $ONOS_HOME, we can set ONOS_LOGBACK and LOGDIR relative to $ONOS_HOME
-#ONOS_LOGBACK="${ONOS_HOME}/logback.`hostname`.xml"
-#LOGDIR=${ONOS_HOME}/onos-logs
-ONOS_LOGBACK="./logback.`hostname`.xml"
-LOGDIR=./onos-logs
-ONOS_LOG="${LOGDIR}/onos.`hostname`.log"
-PCAP_LOG="${LOGDIR}/onos.`hostname`.pcap"
-LOGS="$ONOS_LOG $PCAP_LOG"
-
-# Set JVM options
-JVM_OPTS=""
-## If you want JaCoCo Code Coverage reports... uncomment line below
-JVM_OPTS="$JVM_OPTS -javaagent:${ONOS_HOME}/lib/jacocoagent.jar=dumponexit=true,output=file,destfile=${LOGDIR}/jacoco.exec"
-JVM_OPTS="$JVM_OPTS -server -d64"
-#JVM_OPTS="$JVM_OPTS -Xmx2g -Xms2g -Xmn800m"
-JVM_OPTS="$JVM_OPTS -Xmx1g -Xms1g -Xmn800m"
-#JVM_OPTS="$JVM_OPTS -XX:+UseParallelGC -XX:+AggressiveOpts -XX:+UseFastAccessorMethods"
-JVM_OPTS="$JVM_OPTS -XX:+UseConcMarkSweepGC -XX:+UseAdaptiveSizePolicy -XX:+AggressiveOpts -XX:+UseFastAccessorMethods"
-JVM_OPTS="$JVM_OPTS -XX:MaxInlineSize=8192 -XX:FreqInlineSize=8192"
-JVM_OPTS="$JVM_OPTS -XX:CompileThreshold=1500 -XX:PreBlockSpin=8"
-JVM_OPTS="$JVM_OPTS -XX:OnError=crash-logger" ;# For dumping core
-#JVM_OPTS="$JVM_OPTS -Dpython.security.respectJavaAccessibility=false"
-JVM_OPTS="$JVM_OPTS -XX:CompileThreshold=1500 -XX:PreBlockSpin=8 \
-		-XX:+UseThreadPriorities \
-		-XX:ThreadPriorityPolicy=42 \
-		-XX:+UseCompressedOops \
-		-Dcom.sun.management.jmxremote.port=7189 \
-		-Dcom.sun.management.jmxremote.ssl=false \
-		-Dcom.sun.management.jmxremote.authenticate=false"
-JVM_OPTS="$JVM_OPTS -Dhazelcast.logging.type=slf4j"
-
-# Set ONOS core main class
-MAIN_CLASS="net.onrc.onos.core.main.Main"
-
-if [ -z "${MVN}" ]; then
-    MVN="mvn -o"
-fi
-
-CPFILE=${ONOS_HOME}/.javacp.`hostname`
-if [ ! -f ${CPFILE} ]; then
-  ${MVN} -f ${ONOS_HOME}/pom.xml compile
-fi
-JAVA_CP=`cat ${CPFILE}`
-JAVA_CP="${JAVA_CP}:${ONOS_HOME}/target/classes"
-
-#<logger name="net.floodlightcontroller.linkdiscovery.internal" level="TRACE"/>
-#<appender-ref ref="STDOUT" />
-
-function lotate {
-    logfile=$1
-    nr_max=${2:-10}
-    if [ -f $logfile ]; then
-	for i in `seq $(expr $nr_max - 1) -1 1`; do
-	    if [ -f ${logfile}.${i} ]; then
-		mv -f ${logfile}.${i} ${logfile}.`expr $i + 1`
-	    fi
-	done
-	mv $logfile $logfile.1
-    fi
-}
-
-function start {
-  if [ ! -d ${LOGDIR} ]; then
-    mkdir -p ${LOGDIR}
-  fi
-  # Backup log files
-  for log in ${LOGS}; do
-    echo "rotate log: $log"
-    if [ -f ${log} ]; then
-      lotate ${log}
-    fi
-  done
-
-# Create a logback file if required
-  if [ ! -f ${ONOS_LOGBACK} ]; then
-    cat <<EOF_LOGBACK >${ONOS_LOGBACK}
-<configuration scan="true" debug="true">
-<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-<encoder>
-<pattern>%level [%logger:%thread] %msg%n</pattern>
-</encoder>
-</appender>
-
-<appender name="FILE" class="ch.qos.logback.core.FileAppender">
-<file>${ONOS_LOG}</file>
-<encoder>
-<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
-</encoder>
-</appender>
-
-<logger name="org" level="WARN"/>
-<logger name="LogService" level="WARN"/> <!-- Restlet access logging -->
-<logger name="net.floodlightcontroller.logging" level="WARN"/>
-<logger name="com.thinkaurelius.titan" level="INFO"/>
-
-<root level="DEBUG">
-<appender-ref ref="FILE" />
-</root>
-</configuration>
-EOF_LOGBACK
-  fi
-
-  # Run ONOS
-  echo "Starting ONOS controller ..."
-  echo 
-
-  # XXX : MVN has to run at the project top dir 
-  echo $ONOS_HOME
-  cd ${ONOS_HOME}
-  java ${JVM_OPTS} -Dlogback.configurationFile=${ONOS_LOGBACK} -cp ${JAVA_CP} ${MAIN_CLASS} -cf ./conf/onos.properties > ${LOGDIR}/onos.`hostname`.stdout 2>${LOGDIR}/onos.`hostname`.stderr &
-
-  echo "Waiting for ONOS to start..."
-  COUNT=0
-  ESTATE=0
-  while [ "$COUNT" != "10" ]; do
-    echo -n "."
-    sleep 1
-#    COUNT=$((COUNT + 1))
-#    sleep $COUNT
-    n=`jps -l |grep "${MAIN_CLASS}" | wc -l`
-    if [ "$n" -ge "1" ]; then
-      echo ""
-      exit 0
-    fi
-  done
-  echo "Timed out"
-  exit 1
-
-#  echo "java ${JVM_OPTS} -Dlogback.configurationFile=${ONOS_LOGBACK} -jar ${ONOS_JAR} -cf ./onos.properties > /dev/null 2>&1 &"
-#  sudo -b /usr/sbin/tcpdump -n -i eth0 -s0 -w ${PCAP_LOG} 'tcp port 6633' > /dev/null  2>&1
-}
-
-function stop {
-  # Kill the existing processes
-  flpid=`jps -l |grep ${MAIN_CLASS} | awk '{print $1}'`
-  tdpid=`ps -edalf |grep tcpdump |grep ${PCAP_LOG} | awk '{print $4}'`
-  pids="$flpid $tdpid"
-  for p in ${pids}; do
-    if [ x$p != "x" ]; then
-      kill -TERM $p
-      echo "Killed existing process (pid: $p)"
-    fi
-  done
-}
-
-function check_db {
-   if [ -d "/tmp/cassandra.titan" ]; then
-      echo "Cassandra is running on local berkely db. Exitting"
-      exit
-   fi
-   n=`ps -edalf |grep java |grep apache-cassandra | wc -l`
-   if [ x$n == "x0" ]; then
-      echo "Cassandra is not running. Exitting"
-      exit
-   fi
-}
-
-case "$1" in
-  start)
-    stop
-    check_db
-    start 
-    ;;
-  startifdown)
-    n=`jps -l |grep "${MAIN_CLASS}" | wc -l`
-    if [ $n == 0 ]; then
-      start
-    else 
-      echo "$n instance of onos running"
-    fi
-    ;;
-  stop)
-    stop
-    ;;
-  status)
-    n=`jps -l |grep "${MAIN_CLASS}" | wc -l`
-    echo "$n instance of onos running"
-    ;;
-  *)
-    echo "Usage: $0 {start|stop|status|startifdown}"
-    exit 1
-esac
diff --git a/start-onos.sh b/start-onos.sh
deleted file mode 100755
index 83819d7..0000000
--- a/start-onos.sh
+++ /dev/null
@@ -1,210 +0,0 @@
-#!/bin/bash
-
-echo
-echo "===================================================================="
-echo "[WARNING] This script is deprecated. Use \"\$ ./onos.sh core\" instead."
-echo "===================================================================="
-echo
-
-ulimit -c unlimited
-
-# Set paths
-ONOS_HOME="${ONOS_HOME:-`dirname $0`}"
-RAMCLOUD_HOME=${RAMCLOUD_HOME:-~/ramcloud}
-RAMCLOUD_BRANCH=${RAMCLOUD_BRANCH:-master}
-
-export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${ONOS_HOME}/lib:${RAMCLOUD_HOME}/obj.${RAMCLOUD_BRANCH}
-
-## Because the script change dir to $ONOS_HOME, we can set ONOS_LOGBACK and LOGDIR relative to $ONOS_HOME
-ONOS_LOGBACK=${ONOS_LOGBACK:-${ONOS_HOME}/logback.`hostname`.xml}
-LOGDIR=${ONOS_LOGDIR:-${ONOS_HOME}/onos-logs}
-LOGBASE=${ONOS_LOGBASE:-onos.`hostname`}
-ONOS_LOG="${LOGDIR}/${LOGBASE}.log"
-PCAP_LOG="${LOGDIR}/${LOGBASE}.pcap"
-LOGS="$ONOS_LOG $PCAP_LOG"
-
-ONOS_PROPS=${ONOS_PROPS:-${ONOS_HOME}/conf/onos.properties}
-JMX_PORT=${JMX_PORT:-7189}
-
-# Set JVM options
-JVM_OPTS="${JVM_OPTS:-}"
-## If you want JaCoCo Code Coverage reports... uncomment line below
-#JVM_OPTS="$JVM_OPTS -javaagent:${ONOS_HOME}/lib/jacocoagent.jar=dumponexit=true,output=file,destfile=${LOGDIR}/jacoco.exec"
-JVM_OPTS="$JVM_OPTS -server -d64"
-#JVM_OPTS="$JVM_OPTS -XX:+TieredCompilation -XX:InitialCodeCacheSize=512m -XX:ReservedCodeCacheSize=512m"
-JVM_OPTS="$JVM_OPTS -Xmx4g -Xms4g -Xmn800m"
-#JVM_OPTS="$JVM_OPTS -Xmx2g -Xms2g -Xmn800m"
-#JVM_OPTS="$JVM_OPTS -Xmx1g -Xms1g -Xmn800m"
-#JVM_OPTS="$JVM_OPTS -XX:+UseParallelGC -XX:+AggressiveOpts -XX:+UseFastAccessorMethods"
-JVM_OPTS="$JVM_OPTS -XX:+UseConcMarkSweepGC -XX:+UseAdaptiveSizePolicy -XX:+AggressiveOpts -XX:+UseFastAccessorMethods"
-JVM_OPTS="$JVM_OPTS -XX:MaxInlineSize=8192 -XX:FreqInlineSize=8192"
-JVM_OPTS="$JVM_OPTS -XX:CompileThreshold=1500 -XX:PreBlockSpin=8"
-JVM_OPTS="$JVM_OPTS -XX:OnError=crash-logger" ;# For dumping core
-#JVM_OPTS="$JVM_OPTS -Dpython.security.respectJavaAccessibility=false"
-JVM_OPTS="$JVM_OPTS -XX:CompileThreshold=1500 -XX:PreBlockSpin=8 \
-		-XX:+UseThreadPriorities \
-		-XX:ThreadPriorityPolicy=42 \
-		-XX:+UseCompressedOops \
-		-Dcom.sun.management.jmxremote.port=$JMX_PORT \
-		-Dcom.sun.management.jmxremote.ssl=false \
-                -Dbenchmark.measureBP=0 \
-                -Dbenchmark.measureRc=0 \
-                -Dbenchmark.measureONOS=0 \
-		-Dcom.sun.management.jmxremote.authenticate=false"
-JVM_OPTS="$JVM_OPTS -Dhazelcast.logging.type=slf4j"
-
-# Set ONOS core main class
-MAIN_CLASS="net.onrc.onos.core.main.Main"
-
-MVN=${MVN:-mvn -o}
-
-CPFILE=${ONOS_HOME}/.javacp.`hostname`
-if [ ! -f ${CPFILE} ]; then
-  ${MVN} -f ${ONOS_HOME}/pom.xml compile
-fi
-JAVA_CP=`cat ${CPFILE}`
-JAVA_CP="${JAVA_CP}:${ONOS_HOME}/target/classes"
-
-#<logger name="net.floodlightcontroller.linkdiscovery.internal" level="TRACE"/>
-#<appender-ref ref="STDOUT" />
-
-function lotate {
-    logfile=$1
-    nr_max=${2:-10}
-    if [ -f $logfile ]; then
-	for i in `seq $(expr $nr_max - 1) -1 1`; do
-	    if [ -f ${logfile}.${i} ]; then
-		mv -f ${logfile}.${i} ${logfile}.`expr $i + 1`
-	    fi
-	done
-	mv $logfile $logfile.1
-    fi
-}
-
-function start {
-  if [ ! -d ${LOGDIR} ]; then
-    mkdir -p ${LOGDIR}
-  fi
-  # Backup log files
-  for log in ${LOGS}; do
-    echo "rotate log: $log"
-    if [ -f ${log} ]; then
-      lotate ${log}
-    fi
-  done
-
-# Create a logback file if required
-  if [ ! -f ${ONOS_LOGBACK} ]; then
-    cat <<EOF_LOGBACK >${ONOS_LOGBACK}
-<configuration scan="true" scanPeriod="1 minutes" debug="true">
-<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-<encoder>
-<pattern>%level [%logger:%thread] %msg%n</pattern>
-</encoder>
-</appender>
-
-<appender name="FILE" class="ch.qos.logback.core.FileAppender">
-<file>${ONOS_LOG}</file>
-<encoder>
-<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
-<immediateFlush>true</immediateFlush>
-</encoder>
-</appender>
-
-<logger name="org" level="WARN"/>
-<logger name="LogService" level="WARN"/> <!-- Restlet access logging -->
-<logger name="net.floodlightcontroller.logging" level="WARN"/>
-<logger name="com.thinkaurelius.titan" level="INFO"/>
-
-<root level="DEBUG">
-<appender-ref ref="FILE" />
-</root>
-</configuration>
-EOF_LOGBACK
-  fi
-
-  # Run ONOS
-  echo "Starting ONOS controller ..."
-  echo
-
-  # XXX : MVN has to run at the project top dir
-  echo $ONOS_HOME
-  cd ${ONOS_HOME}
-  pwd
-  java ${JVM_OPTS} -Dlogback.configurationFile=${ONOS_LOGBACK} -cp ${JAVA_CP} ${MAIN_CLASS} -cf ${ONOS_PROPS} > ${LOGDIR}/${LOGBASE}.stdout 2>${LOGDIR}/${LOGBASE}.stderr &
-
-  echo "Waiting for ONOS to start..."
-  COUNT=0
-  ESTATE=0
-  while [ "$COUNT" != "10" ]; do
-    echo -n "."
-    sleep 1
-#    COUNT=$((COUNT + 1))
-#    sleep $COUNT
-    n=`jps -l |grep "${MAIN_CLASS}" | wc -l`
-    if [ "$n" -ge "1" ]; then
-      echo ""
-      exit 0
-    fi
-  done
-  echo "Timed out"
-  exit 1
-
-#  echo "java ${JVM_OPTS} -Dlogback.configurationFile=${ONOS_LOGBACK} -jar ${ONOS_JAR} -cf ./onos.properties > /dev/null 2>&1 &"
-#  sudo -b /usr/sbin/tcpdump -n -i eth0 -s0 -w ${PCAP_LOG} 'tcp port 6633' > /dev/null  2>&1
-}
-
-function stop {
-  # Kill the existing processes
-  flpid=`jps -l |grep ${MAIN_CLASS} | awk '{print $1}'`
-  tdpid=`ps -edalf |grep tcpdump |grep ${PCAP_LOG} | awk '{print $4}'`
-  pids="$flpid $tdpid"
-  for p in ${pids}; do
-    if [ x$p != "x" ]; then
-      kill -TERM $p
-      echo "Killed existing process (pid: $p)"
-    fi
-  done
-}
-
-function check_db {
-   if [ -d "/tmp/cassandra.titan" ]; then
-      echo "Cassandra is running on local berkely db. Exitting"
-      exit
-   fi
-   n=`ps -edalf |grep java |grep apache-cassandra | wc -l`
-   if [ x$n == "x0" ]; then
-      echo "Cassandra is not running. Exitting"
-      exit
-   fi
-}
-
-case "$1" in
-  start)
-    stop
-#    check_db
-    start
-    ;;
-  startnokill)
-#    check_db
-    start
-    ;;
-  startifdown)
-    n=`jps -l |grep "${MAIN_CLASS}" | wc -l`
-    if [ $n == 0 ]; then
-      start
-    else
-      echo "$n instance of onos running"
-    fi
-    ;;
-  stop)
-    stop
-    ;;
-  status)
-    n=`jps -l |grep "${MAIN_CLASS}" | wc -l`
-    echo "$n instance of onos running"
-    ;;
-  *)
-    echo "Usage: $0 {start|stop|status|startifdown}"
-    exit 1
-esac
diff --git a/start-ramcloud-coordinator.sh b/start-ramcloud-coordinator.sh
deleted file mode 100755
index d23c301..0000000
--- a/start-ramcloud-coordinator.sh
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/bin/bash
-
-echo
-echo "========================================================================"
-echo "[WARNING] This script is deprecated. Use \"\$ ./onos.sh rc-coord\" instead."
-echo "========================================================================"
-echo
-
-# Set paths
-ONOS_HOME=`dirname $0`
-RAMCLOUD_DIR=${HOME}/ramcloud
-LOGDIR=${ONOS_LOGDIR:-${ONOS_HOME}/onos-logs}
-RAMCLOUD_LOG=${LOGDIR}/ramcloud.coordinator.`hostname`.log
-RAMCLOUD_CONF=${RAMCLOUD_CONF:-${ONOS_HOME}/conf/ramcloud.conf}
-#coordinatorip=`grep coordinatorIp ${ONOS_HOME}/conf/ramcloud.conf | cut -d "=" -f 2,3`
-#coordinatorport=`grep coordinatorPort ${ONOS_HOME}/conf/ramcloud.conf | cut -d "=" -f 2,3`
-
-COORDINATOR_IP=`grep coordinatorIp ${RAMCLOUD_CONF} | cut -d "=" -f 2,3`
-COORDINATOR_PORT=`grep coordinatorPort ${RAMCLOUD_CONF} | cut -d "=" -f 2,3`
-
-#RAMCLOUD_COORDINATOR=`echo $coordinatorip","$coordinatorport`
-RAMCLOUD_COORDINATOR=`echo $COORDINATOR_IP","$COORDINATOR_PORT`
-RAMCLOUD_BRANCH=${RAMCLOUD_BRANCH:-master}
-
-function lotate {
-    logfile=$1
-    nr_max=${2:-10}
-    if [ -f $logfile ]; then
-	for i in `seq $(expr $nr_max - 1) -1 1`; do
-	    if [ -f ${logfile}.${i} ]; then
-		mv -f ${logfile}.${i} ${logfile}.`expr $i + 1`
-	    fi
-	done
-	mv $logfile $logfile.1
-    fi
-}
-
-function start {
-  if [ ! -d ${LOGDIR} ]; then
-    mkdir -p ${LOGDIR}
-  fi
-  echo "rotate log: $log"
-  if [ -f $RAMCLOUD_LOG ]; then
-    lotate $RAMCLOUD_LOG
-  fi
-
-  # Run ramcloud 
-  echo "Starting ramcloud coordinator"
-  $RAMCLOUD_DIR/obj.${RAMCLOUD_BRANCH}/coordinator  -L $RAMCLOUD_COORDINATOR > $RAMCLOUD_LOG 2>&1 &
-}
-
-function stop {
-  # Kill the existing processes
-  capid=`pgrep coordinator | awk '{print $1}'`
-  pids="$capid"
-  for p in ${pids}; do
-    if [ x$p != "x" ]; then
-      kill -KILL $p
-      echo "Killed existing process (pid: $p)"
-    fi
-  done
-}
-
-case "$1" in
-  start)
-    #cp $ONOS_HOME/conf/ramcloud.conf /tmp
-    stop
-    start 
-    ;;
-  stop)
-    stop
-    ;;
-  status)
-    n=`pgrep -f obj.${RAMCLOUD_BRANCH}/coordinator | wc -l`
-    echo "$n ramcloud coordinator is running"
-    ;;
-  *)
-    echo "Usage: $0 {start|stop|restart|status}"
-    exit 1
-esac
diff --git a/start-ramcloud-server.sh b/start-ramcloud-server.sh
deleted file mode 100755
index 395a234..0000000
--- a/start-ramcloud-server.sh
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/bin/bash
-
-echo
-echo "========================================================================="
-echo "[WARNING] This script is deprecated. Use \"\$ ./onos.sh rc-server\" instead."
-echo "========================================================================="
-echo
-
-ulimit -c unlimited
-
-# Set paths
-ONOS_HOME=`dirname $0`
-RAMCLOUD_DIR=${HOME}/ramcloud
-LOGDIR=${ONOS_LOGDIR:-${ONOS_HOME}/onos-logs}
-RAMCLOUD_LOG=${LOGDIR}/ramcloud.server.`hostname`.log
-RAMCLOUD_CONF=${RAMCLOUD_CONF:-${ONOS_HOME}/conf/ramcloud.conf}
-
-#coordinatorip=`grep coordinatorIp ${ONOS_HOME}/conf/ramcloud.conf | cut -d "=" -f 2,3`
-#coordinatorport=`grep coordinatorPort ${ONOS_HOME}/conf/ramcloud.conf | cut -d "=" -f 2,3`
-#RAMCLOUD_COORDINATOR=`echo $coordinatorip","$coordinatorport`
-COORDINATOR_IP=`grep coordinatorIp ${RAMCLOUD_CONF} | cut -d "=" -f 2,3`
-COORDINATOR_PORT=`grep coordinatorPort ${RAMCLOUD_CONF} | cut -d "=" -f 2,3`
-RAMCLOUD_COORDINATOR=`echo $COORDINATOR_IP","$COORDINATOR_PORT`
-
-#serverip=`grep serverIp ${ONOS_HOME}/conf/ramcloud.conf | cut -d "=" -f 2,3`
-#serverport=`grep serverPort ${ONOS_HOME}/conf/ramcloud.conf | cut -d "=" -f 2,3`
-#RAMCLOUD_SERVER=`echo $serverip","$serverport`
-
-SERVER_IP=`grep serverIp ${RAMCLOUD_CONF} | cut -d "=" -f 2,3`
-SERVER_PORT=`grep serverPort ${RAMCLOUD_CONF} | cut -d "=" -f 2,3`
-RAMCLOUD_SERVER=`echo $SERVER_IP","$SERVER_PORT`
-
-RAMCLOUD_BRANCH=${RAMCLOUD_BRANCH:-master}
-
-function lotate {
-    logfile=$1
-    nr_max=${2:-10}
-    if [ -f $logfile ]; then
-	for i in `seq $(expr $nr_max - 1) -1 1`; do
-	    if [ -f ${logfile}.${i} ]; then
-		mv -f ${logfile}.${i} ${logfile}.`expr $i + 1`
-	    fi
-	done
-	mv $logfile $logfile.1
-    fi
-}
-
-function start {
-  if [ ! -d ${LOGDIR} ]; then
-    mkdir -p ${LOGDIR}
-  fi
-  echo "rotate log: $log"
-  if [ -f $RAMCLOUD_LOG ]; then
-    lotate $RAMCLOUD_LOG
-  fi
-
-  # Run ramcloud
-  echo "Starting ramcloud"
-  $RAMCLOUD_DIR/obj.${RAMCLOUD_BRANCH}/server -M -L $RAMCLOUD_SERVER -C $RAMCLOUD_COORDINATOR --masterServiceThreads 1 --logCleanerThreads 1 --detectFailures 0 > $RAMCLOUD_LOG 2>&1 &
-}
-
-function stop {
-  # Kill the existing processes
-  capid=`pgrep -f obj.${RAMCLOUD_BRANCH}/server | awk '{print $1}'`
-  pids="$capid"
-  for p in ${pids}; do
-    if [ x$p != "x" ]; then
-      kill -KILL $p
-      echo "Killed existing process (pid: $p)"
-    fi
-  done
-}
-
-case "$1" in
-  start)
-    #cp $ONOS_HOME/conf/ramcloud.conf /tmp
-    stop
-    start 
-    ;;
-  stop)
-    stop
-    ;;
-  status)
-    n=`pgrep -f obj.${RAMCLOUD_BRANCH}/server | wc -l`
-    echo "$n ramcloud server running"
-    ;;
-  *)
-    echo "Usage: $0 {start|stop|restart|status}"
-    exit 1
-esac
diff --git a/start-zk.sh b/start-zk.sh
deleted file mode 100755
index 36d531f..0000000
--- a/start-zk.sh
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/bash
-
-echo
-echo "=================================================================="
-echo "[WARNING] This script is deprecated. Use \"\$ ./onos.sh zk\" instead."
-echo "=================================================================="
-echo
-
-# Set paths
-
-ONOS_HOME=`dirname $0`
-ZK_DIR=${HOME}/zookeeper-3.4.5
-#ZK_CONF=${ONOS_HOME}/conf/zoo.cfg
-ZOO_LOG_DIR=${ONOS_HOME}/onos-logs
-
-function start {
-  # Run Zookeeper with our configuration
-  echo "Starting Zookeeper"
-#  echo "[31;48m[WARNING] This script copies conf/zoo.cfg to $ZK_DIR/conf/zoo.cfg (overwrites)[0m"
-#  echo "[31;48moriginal zoo.cfg was backed up as zoo.cfg.backup[0m"
-#  if [ $ZK_DIR/conf/zoo.cfg ]; then
-#    cp $ZK_DIR/conf/zoo.cfg $ZK_DIR/conf/zoo.cfg.backup
-#  fi
-#  hostid > /var/lib/zookeeper/myid
-#  cp $ZK_CONF $ZK_DIR/conf
-#  echo "cp $ZK_CONF $ZK_DIR/conf"
-  $ZK_DIR/bin/zkServer.sh start
-}
-
-function stop {
-  # Kill the existing processes
-  pids=`jps -l | grep org.apache.zookeeper.server | awk '{print $1}'`
-  for p in ${pids}; do
-    if [ x$p != "x" ]; then
-      kill -KILL $p
-      echo "Killed existing prosess (pid: $p)"
-    fi
-  done
-}
-function status {
-  $ZK_DIR/bin/zkServer.sh status
-}
-
-case "$1" in
-  start)
-    start 
-    ;;
-  stop)
-    stop
-    ;;
-  status)
-    status
-    ;;
-  restart)
-    stop
-    start
-    ;;
-  *)
-    echo "Usage: $0 {start|stop|restart|status}"
-    exit 1
-esac
