diff --git a/cli/Makefile b/cli/Makefile
index ceb178f..4693918 100755
--- a/cli/Makefile
+++ b/cli/Makefile
@@ -18,38 +18,39 @@
 VIRTUALENV = $(WORKSPACE)/ve
 TOOLS = $(WORKSPACE)/tools
 BUILD_DIR = $(SOURCE)/build
-FL_DIR = $(SOURCE)/sdnplatform
+#FL_DIR = $(SOURCE)/sdnplatform
 
 all: build-sdnplatform
 
 clean-python:
-	printf 'import setuptools\nsetuptools.setup(name="django_cassandra", version="0.1", packages=["django_cassandra", "django_cassandra.db"])' >$(SOURCE)/django_cassandra_backend/setup.py
+#	printf 'import setuptools\nsetuptools.setup(name="django_cassandra", version="0.1", packages=["django_cassandra", "django_cassandra.db"])' >$(SOURCE)/django_cassandra_backend/setup.py
 	echo '$(SOURCE)' >$$(python -c 'import distutils; print distutils.sysconfig.get_python_lib()')/sdnplatform.pth
 	set -e; \
 	cd $(SOURCE); \
-	for p in django_cassandra_backend/setup.py sdncon/setup.py cli/setup.py; do \
+#	for p in django_cassandra_backend/setup.py sdncon/setup.py cli/setup.py; do
+	for p in sdncon/setup.py cli/setup.py; do \
 	  echo "+++ Preparing Python virtualenv for $$p"; \
 	  ( cd $$(dirname $$p); rm -rf *.egg-info; ARCHFLAGS="-arch i386 -arch x86_64" python $$(basename $$p) develop ); \
 	done
 	( cd $(SOURCE)/cli ; tools/rebuild_model.sh )
 
 clean-sdnplatform:
-	cd $(FL_DIR); ant clean
+#	cd $(FL_DIR); ant clean
 
 clean: reset-cassandra clean-sdnplatform clean-python
 
 stop-cassandra:
-	$(BUILD_DIR)/kill-port-wait.sh -p 9160
-	@echo "+++ Cassandra stopped"
+#	$(BUILD_DIR)/kill-port-wait.sh -p 9160
+#	@echo "+++ Cassandra stopped"
 
 reset-cassandra: stop-cassandra
-	rm -rf $(VIRTUALENV)/cassandra
-	@echo "+++ Cassandra db deleted"
+#	rm -rf $(VIRTUALENV)/cassandra
+#	@echo "+++ Cassandra db deleted"
 
 cassandra: start-cassandra
 start-cassandra:
-	$(BUILD_DIR)/start-and-wait-for-port.sh -p 9160 -l $(VIRTUALENV)/log/cassandra.log $(TOOLS)/cassandra/bin/cassandra
-	@echo "+++ Cassandra running"
+#	$(BUILD_DIR)/start-and-wait-for-port.sh -p 9160 -l $(VIRTUALENV)/log/cassandra.log $(TOOLS)/cassandra/bin/cassandra
+#	@echo "+++ Cassandra running"
 
 stop-sdncon:
 	$(BUILD_DIR)/kill-port-wait.sh -p 8000
@@ -68,18 +69,18 @@
 	@echo "+++ sdncon running"
 
 stop-sdnplatform:
-	while pid=$$(lsof -t -iTCP:6633 -sTCP:LISTEN); do kill $${pid}; sleep 1; done
-	@echo "+++ SDN Platform stopped"
+#	while pid=$$(lsof -t -iTCP:6633 -sTCP:LISTEN); do kill $${pid}; sleep 1; done
+#	@echo "+++ SDN Platform stopped"
 
 start-sdnplatform: start-cassandra
-	if ! lsof -iTCP:6633 -sTCP:LISTEN >/dev/null; then \
-	  ( cd $(SOURCE)/sdnplatform; ant run &>$(VIRTUALENV)/log/sdnplatform.log & ); \
-	fi
-	while ! nc -z localhost 6633; do sleep 1; done
-	@echo "+++ SDN Platform running"
+#	if ! lsof -iTCP:6633 -sTCP:LISTEN >/dev/null; then \
+#	  ( cd $(SOURCE)/sdnplatform; ant run &>$(VIRTUALENV)/log/sdnplatform.log & ); \
+#	fi
+#	while ! nc -z localhost 6633; do sleep 1; done
+#	@echo "+++ SDN Platform running"
 
 eclipse:
-	cd $(FL_DIR); ant eclipse
+#	cd $(FL_DIR); ant eclipse
 
 build-sdnplatform:
-	cd $(FL_DIR); ant dist
+#	cd $(FL_DIR); ant dist
diff --git a/cli/cli/cli.py b/cli/cli/cli.py
index afe6188..b03f6dc 100755
--- a/cli/cli/cli.py
+++ b/cli/cli/cli.py
@@ -237,6 +237,7 @@
 FT_TIMEOUT = "FilterTimeout"
 FT_PERIOD_DEFAULT = 300
 
+onos=1
 #
 # --------------------------------------------------------------------------------
 # 
@@ -520,11 +521,18 @@
         #
         # commands which start at 'login'
         #
-        self.command_nested_dict['login'] = [ 'show', 'logout', 'exit',
+        if onos == 0:
+            self.command_nested_dict['login'] = [ 'show', 'logout', 'exit',
                                               'history', 'help', 'echo',
                                               'date', 'trace', 'traceroute',
                                               'ping', 'test', 'version',
                                               'connect', 'watch', 'no' ]
+        else:
+            self.command_nested_dict['login'] = [ 'show', 'logout', 'exit',
+                                              'history', 'help', 'echo',
+                                              'date', 'trace',
+                                              'ping', 'test', 'version',
+                                              'connect', 'watch', 'no' ]
 
         self.command_nested_dict['enable'] = [ 'clear', 'end' ]
 
@@ -7747,7 +7755,7 @@
         while self.run:
             # Get command line - this will use the command completion above
             try:
-                rest_to_model.validate_switch()
+                #rest_to_model.validate_switch()
                 url_cache.clear_cached_urls()
                 line = raw_input(self.prompt)
                 if self.batch:
diff --git a/cli/cli/desc/version200/switch.py b/cli/cli/desc/version200/switch.py
index 67facf5..541b3a5 100755
--- a/cli/cli/desc/version200/switch.py
+++ b/cli/cli/desc/version200/switch.py
@@ -951,12 +951,9 @@
     'switch' : {
         'field-orderings' : {
             'default' : [ 'Idx', '@', 'switch-alias', 'connected-since',
-                          'ip-address', 'tunnelCapable', 'tunnelEnabled',
-                          'tunnelState', 'core-switch', ],
+                          'ip-address', ],
             'details' : [ 'Idx','@', 'switch-alias', 'connected-since',
-                          'ip-address',
-                          'tunnelCapable', 'tunnelEnabled', 'tunnelState',
-                          'core-switch', ],
+                          'ip-address', ],
             'brief'   : [ 'Idx', '@', 'switch-alias', 'connected-since',
                           'ip-address', ],
             },
diff --git a/cli/cli/rest_to_model.py b/cli/cli/rest_to_model.py
index d061277..692b3e7 100755
--- a/cli/cli/rest_to_model.py
+++ b/cli/cli/rest_to_model.py
@@ -51,6 +51,7 @@
     to move model requests to specific url requests
     """
 
+    onos = 1
     startswith = '__startswith'
     data = dict(data)
 
@@ -389,62 +390,68 @@
                 continue
             if switch_prefix and not entry['dpid'].startswith(switch_prefix):
                 continue
-
-            attrs = entry['attributes']
-            actions = entry['actions']
-            capabilities = entry['capabilities']
-            inet_address = entry.get('inetAddress')
-            ip_address = ''
-            tcp_port = ''
-            if inet_address:
-                # Current Java value looks like: /192.168.2.104:38420
-                inet_parts = inet_address.split(':')
-                ip_address = inet_parts[0][1:]
-                tcp_port = inet_parts[1]
-
-            result.append({
-               'dpid'                : entry['dpid'],
-               'connected-since'     : entry['connectedSince'],
-               'ip-address'          : ip_address,
-               'tcp-port'            : tcp_port,
-               'actions'             : actions,
-               'capabilities'        : capabilities,
-               'dp-desc'             : attrs.get('DescriptionData', ''),
-               'fast-wildcards'      : attrs.get('FastWildcards', ''),
-               'supports-nx-role'    : attrs.get('supportsNxRole', ''),
-               'supports-ofpp-flood' : attrs.get('supportsOfppFlood', ''),
-               'supports-ofpp-table' : attrs.get('supportsOfppTable', ''),
-               'core-switch'         : False,
-            })
-
+            if onos == 1:
+                result.append({
+                   'dpid'                : entry['dpid'],
+                   'connected-since'     : 0,
+                   'ip-address'          : 0,
+                })
+            else:
+                attrs = entry['attributes']
+                actions = entry['actions']
+                capabilities = entry['capabilities']
+                inet_address = entry.get('inetAddress')
+                ip_address = ''
+                tcp_port = ''
+                if inet_address:
+                    # Current Java value looks like: /192.168.2.104:38420
+                    inet_parts = inet_address.split(':')
+                    ip_address = inet_parts[0][1:]
+                    tcp_port = inet_parts[1]
+    
+                result.append({
+                   'dpid'                : entry['dpid'],
+                   'connected-since'     : entry['connectedSince'],
+                   'ip-address'          : ip_address,
+                   'tcp-port'            : tcp_port,
+                   'actions'             : actions,
+                   'capabilities'        : capabilities,
+                   'dp-desc'             : attrs.get('DescriptionData', ''),
+                   'fast-wildcards'      : attrs.get('FastWildcards', ''),
+                   'supports-nx-role'    : attrs.get('supportsNxRole', ''),
+                   'supports-ofpp-flood' : attrs.get('supportsOfppFlood', ''),
+                   'supports-ofpp-table' : attrs.get('supportsOfppTable', ''),
+                   'core-switch'         : False,
+                })
         # now add switch-config
 
         switch_config = sdnsh.rest_query_objects('switch-config', data)
         known_dpids = dict([[x['dpid'], x] for x in result])
 
-        for sw in switch_config:
-            dpid = sw['dpid']
-            if not dpid in known_dpids:
-                # be sensitive to search fields:
-                query_match = True
-                if len(data):
-                    for (d, dv) in data.items():
-                        # other ops aside from '='?
-                        if d.endswith(startswith):
-                            fn = d[:-len(startswith)]
-                            if not fn in sw or not sw[fn].startswith(dv):
+        if onos == 0:
+            for sw in switch_config:
+                dpid = sw['dpid']
+                if not dpid in known_dpids:
+                    # be sensitive to search fields:
+                    query_match = True
+                    if len(data):
+                        for (d, dv) in data.items():
+                            # other ops aside from '='?
+                            if d.endswith(startswith):
+                                fn = d[:-len(startswith)]
+                                if not fn in sw or not sw[fn].startswith(dv):
+                                    query_match = False
+                            elif (not d in sw) or dv != sw[d]:
                                 query_match = False
-                        elif (not d in sw) or dv != sw[d]:
-                            query_match = False
-                            break
-
-                if query_match:
-                    sw['ip-address'] = ''
-                    sw['tcp-port'] = ''
-                    sw['connected-since'] = ''
-                    result.append(sw)
-            else:
-                known_dpids[dpid].update(sw)
+                                break
+    
+                    if query_match:
+                        sw['ip-address'] = ''
+                        sw['tcp-port'] = ''
+                        sw['connected-since'] = ''
+                        result.append(sw)
+                else:
+                    known_dpids[dpid].update(sw)
     elif obj_type == 'interfaces':
 
         # These are called interfaces because the primary
@@ -476,15 +483,19 @@
                 continue
 
             for p in entry['ports']:
-                portNumber = p['portNumber']
-                name = p['name']
+                if onos == 0:
+                    portNumber = p['portNumber']
+                    name = p['name']
+                else:
+                    portNumber = p['number']
+                    name = 0
 
                 if name_match and name.lower() != name_match:
                     continue
                 if name_prefix and not name.lower().startswith(name_prefix):
                     continue
-
-                result.append({
+                if onos == 0:
+                    result.append({
                                     'id'                 : '%s|%s' % (dpid,name),
                                     'portNumber'         : portNumber,
                                     'switch'             : dpid,
@@ -494,7 +505,20 @@
                                     'advertisedFeatures' : p['advertisedFeatures'],
                                     'currentFeatures'    : p['currentFeatures'],
                                     'hardwareAddress'    : p['hardwareAddress'],
-                              })
+                                  })
+                else:
+                    result.append({
+                                    'id'                 : '%s|%s' % (dpid,name),
+                                    'portNumber'         : portNumber,
+                                    'switch'             : dpid,
+                                    'portName'           : 0,
+                                    'config'             : 0,
+                                    'state'              : p['state'],
+                                    'advertisedFeatures' : 0,
+                                    'currentFeatures'    : 0,
+                                    'hardwareAddress'    : 0,
+                                  })
+                
 
     #
     # order the result
diff --git a/cli/deps/apache-cassandra-1.0.10-bin.tar.gz b/cli/deps/apache-cassandra-1.0.10-bin.tar.gz
deleted file mode 100755
index 03a3bbf..0000000
--- a/cli/deps/apache-cassandra-1.0.10-bin.tar.gz
+++ /dev/null
Binary files differ
diff --git a/cli/sdncon/rest/views.py b/cli/sdncon/rest/views.py
index 6355c35..be01800 100755
--- a/cli/sdncon/rest/views.py
+++ b/cli/sdncon/rest/views.py
@@ -47,7 +47,12 @@
 JSON_CONTENT_TYPE = 'application/json'
 BINARY_DATA_CONTENT_TYPE = 'application/octet-stream'
 
-CONTROLLER_URL_PREFIX = 'http://localhost:8080/wm/'
+onos = 1
+
+if onos == 1:
+    CONTROLLER_URL_PREFIX = 'http://localhost:9000/wm/'
+else:
+    CONTROLLER_URL_PREFIX = 'http://localhost:8080/wm/'
 
 def controller_url(*elements):
     return CONTROLLER_URL_PREFIX + '/'.join(elements)
@@ -675,18 +680,30 @@
 
 @safe_rest_view
 def do_device(request):
-    return get_sdnplatform_query(request, "device")
+    if onos == 0:
+        return get_sdnplatform_query(request, "device")
+    else:
+        url = controller_url("onos", "topology", "hosts")
+        if request.META['QUERY_STRING']:
+            url += '?' + request.META['QUERY_STRING']
+        return get_sdnplatform_response(url)        
 
 @safe_rest_view
 def do_switches(request):
-    url = controller_url("core", "controller", "switches", "json")
+    if onos == 0:
+        url = controller_url("core", "controller", "switches", "json")
+    else:
+        url = controller_url("onos", "topology", "switches")
     if request.META['QUERY_STRING']:
         url += '?' + request.META['QUERY_STRING']
     return get_sdnplatform_response(url)        
 
 @safe_rest_view
 def do_links(request):
-    url = controller_url("topology", "links", "json")
+    if onos == 0:
+        url = controller_url("topology", "links", "json")
+    else:
+        url = controller_url("onos", "topology", "links")
     if request.META['QUERY_STRING']:
         url += '?' + request.META['QUERY_STRING']
     return get_sdnplatform_response(url)        
diff --git a/cli/sdncon/settings.py b/cli/sdncon/settings.py
index cc2c62e..97f766e 100755
--- a/cli/sdncon/settings.py
+++ b/cli/sdncon/settings.py
@@ -17,7 +17,7 @@
 # Django settings for sdncon project.
 
 import os, sys
-from cassandra.ttypes import ConsistencyLevel
+#from cassandra.ttypes import ConsistencyLevel
 
 DEBUG = True
 DEBUG_PROPAGATE_EXCEPTIONS = DEBUG
@@ -31,7 +31,8 @@
 
 DATABASES = {
     'default': {
-        'ENGINE': 'django_cassandra.db',
+        #'ENGINE': 'django_cassandra.db',
+        'ENGINE': 'django.db.backends.sqlite3',
         'NAME': 'sdncon',
         'USER': '',                      # Not used with sqlite3.
         'PASSWORD': '',                  # Not used with sqlite3.
@@ -155,7 +156,7 @@
     'djangotoolbox',
     'sdncon.rest',
     'sdncon.controller',
-    'django_cassandra',
+    #'django_cassandra',
     'sdncon.coreui',
     'sdncon.clusterAdmin',
     #'sdncon.account',
diff --git a/cli/setup.sh b/cli/setup.sh
index 3046003..6a1ad34 100755
--- a/cli/setup.sh
+++ b/cli/setup.sh
@@ -22,8 +22,8 @@
 
 DJANGO_PKG=django-nonrel-20111024-be48c152abc6.zip
 DJANGO_TOOLBOX_PKG=djangotoolbox-20111024-957ea5f68040.zip
-CASSANDRA_VERSION=1.0.10
-CASSANDRA_PKG=apache-cassandra-${CASSANDRA_VERSION}-bin.tar.gz
+#CASSANDRA_VERSION=1.0.10
+#CASSANDRA_PKG=apache-cassandra-${CASSANDRA_VERSION}-bin.tar.gz
 THRIFT_VERSION=0.7.0
 THRIFT_PKG=thrift-${THRIFT_VERSION}.tar.gz
 
@@ -34,8 +34,8 @@
 cp ${DEPS}/${DJANGO_PKG} ${TOOLS}/
 unzip -q -d ${TOOLS}/.tmp ${DEPS}/${DJANGO_TOOLBOX_PKG}
 cp ${DEPS}/${DJANGO_TOOLBOX_PKG} ${TOOLS}/
-tar -z -x -C ${TOOLS} -f ${DEPS}/${CASSANDRA_PKG}
-mv ${TOOLS}/apache-cassandra-${CASSANDRA_VERSION} ${TOOLS}/cassandra
+#tar -z -x -C ${TOOLS} -f ${DEPS}/${CASSANDRA_PKG}
+#mv ${TOOLS}/apache-cassandra-${CASSANDRA_VERSION} ${TOOLS}/cassandra
 tar -z -x -C ${TOOLS} -f ${DEPS}/${THRIFT_PKG}
 mv ${TOOLS}/thrift-${THRIFT_VERSION} ${TOOLS}/thrift
 
@@ -63,28 +63,28 @@
   python setup.py -q sdist -f --dist-dir=${TOOLS}
   python setup.py -q install
 )
-(
-  cd ${TOOLS}/cassandra/interface
-  ${TOOLS}/thrift/compiler/cpp/thrift --gen py --gen java cassandra.thrift
-  cd gen-py
-  echo -e "import distutils.core\ndistutils.core.setup(name=\"cassandra-py\", version=\"${THRIFT_VERSION}\", packages=[\"cassandra\"])" >setup.py
-  python setup.py -q sdist -f --dist-dir=${TOOLS}
-  python setup.py -q install
-  cd ../gen-java
-  cp ${TOOLS}/thrift/lib/java/build/libthrift-${THRIFT_VERSION}.jar .
-  SLF4J_JAR=`ls -1 ${TOOLS}/thrift/lib/java/build/lib | grep slf4j-api`
-  cp ${TOOLS}/thrift/lib/java/build/lib/${SLF4J_JAR} .
-  mkdir -p build/classes
-  javac -d build/classes -cp "${SLF4J_JAR}:libthrift-${THRIFT_VERSION}.jar" org/apache/cassandra/thrift/*.java
-  cd build
-  jar cf cassandra-thrift-${CASSANDRA_VERSION}.jar -C classes org
-  #mkdir -p ${SOURCE}/sdnplatform/lib
-  #cp cassandra-thrift-${CASSANDRA_VERSION}.jar ${SOURCE}/sdnplatform/lib
-)
-sed -i.old 's#/var/lib/cassandra/#'${VIRTUALENV}'/cassandra/#;s#^rpc_address: .*#rpc_address: 0.0.0.0#;s#^partitioner: .*#partitioner: org.apache.cassandra.dht.OrderPreservingPartitioner#' ${TOOLS}/cassandra/conf/cassandra.yaml
-sed -i.old 's#/var/log/cassandra/system.log#'${VIRTUALENV}'/log/cassandra.log#' ${TOOLS}/cassandra/conf/log4j-server.properties
-sed -i.old 's#^JMX_PORT=.*#JMX_PORT="8085"#' ${TOOLS}/cassandra/conf/cassandra-env.sh
-echo 'JVM_OPTS="$JVM_OPTS -Xss160k"' >> ${TOOLS}/cassandra/conf/cassandra-env.sh
+#(
+#  cd ${TOOLS}/cassandra/interface
+#  ${TOOLS}/thrift/compiler/cpp/thrift --gen py --gen java cassandra.thrift
+#  cd gen-py
+#  echo -e "import distutils.core\ndistutils.core.setup(name=\"cassandra-py\", version=\"${THRIFT_VERSION}\", packages=[\"cassandra\"])" >setup.py
+#  python setup.py -q sdist -f --dist-dir=${TOOLS}
+#  python setup.py -q install
+#  cd ../gen-java
+#  cp ${TOOLS}/thrift/lib/java/build/libthrift-${THRIFT_VERSION}.jar .
+#  SLF4J_JAR=`ls -1 ${TOOLS}/thrift/lib/java/build/lib | grep slf4j-api`
+#  cp ${TOOLS}/thrift/lib/java/build/lib/${SLF4J_JAR} .
+#  mkdir -p build/classes
+#  javac -d build/classes -cp "${SLF4J_JAR}:libthrift-${THRIFT_VERSION}.jar" org/apache/cassandra/thrift/*.java
+#  cd build
+#  jar cf cassandra-thrift-${CASSANDRA_VERSION}.jar -C classes org
+#  #mkdir -p ${SOURCE}/sdnplatform/lib
+#  #cp cassandra-thrift-${CASSANDRA_VERSION}.jar ${SOURCE}/sdnplatform/lib
+#)
+#sed -i.old 's#/var/lib/cassandra/#'${VIRTUALENV}'/cassandra/#;s#^rpc_address: .*#rpc_address: 0.0.0.0#;s#^partitioner: .*#partitioner: org.apache.cassandra.dht.OrderPreservingPartitioner#' ${TOOLS}/cassandra/conf/cassandra.yaml
+#sed -i.old 's#/var/log/cassandra/system.log#'${VIRTUALENV}'/log/cassandra.log#' ${TOOLS}/cassandra/conf/log4j-server.properties
+#sed -i.old 's#^JMX_PORT=.*#JMX_PORT="8085"#' ${TOOLS}/cassandra/conf/cassandra-env.sh
+#echo 'JVM_OPTS="$JVM_OPTS -Xss160k"' >> ${TOOLS}/cassandra/conf/cassandra-env.sh
 
 make clean
 
