Merge latests ONOS codes
diff --git a/.gitignore b/.gitignore
index 9fbfd4e..88f7bb1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,4 @@
 onos.log
 repo
 logback.*.xml
+
diff --git a/README.md b/README.md
index cbe9097..e7efbe1 100644
--- a/README.md
+++ b/README.md
@@ -18,10 +18,6 @@
 Building ONOS
 -------------
 
-0. Install custom jars and dependencies (needs to be run only once)
-
-        $ ./setup-local-maven.sh
-
 1. Cleanly build ONOS
 
         $ mvn clean
@@ -30,8 +26,8 @@
     NOTE: installing maven for the first time may switch java version
     from 1.7 to 1.6. This might prevent Cassandra to run.
 
-Dependencies
-------------
+External Dependencies
+---------------------
 1. Zookeeper
 
     Download and install apache-zookeeper-3.4.5:
@@ -112,6 +108,20 @@
         $ ./start-rest.sh status
 
 
+Developping ONOS in offline environment (Optional)
+---------------------------------------------------------------------------
+
+Maven need the Internet connection to download required dependencies and plugins,
+when they're used for the first time.
+
+If you need to develop ONOS in an Internet unreachable environment
+you may want to run the following helper script before you go offline,
+so that required dependencies and plugins for frequently used maven target will be
+downloaded to your local environment.
+
+        $ ./prep-for-offline.sh
+
+
 Running in offline mode (Optional)
 ----------------------------------
 
diff --git a/pom.xml b/pom.xml
index d1cdc6e..ce582d0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,6 +11,12 @@
   <name>ONOS-RAMCloud</name>
   <url>http://onlab.us/</url>
   <repositories>
+    <!-- In Project repository -->
+    <repository>
+      <id>in-project</id>
+      <name>In Project Repo</name>
+      <url>file://${project.basedir}/repo</url>
+    </repository>
     <repository>
       <id>central</id>
       <name>Maven Central repository</name>
@@ -21,12 +27,6 @@
       <name>Public online Restlet repository</name>
       <url>http://maven.restlet.org</url>
     </repository>
-    <!-- In Project repository -->
-    <repository>
-      <id>in-project</id>
-      <name>In Project Repo</name>
-      <url>file://${project.basedir}/repo</url>
-    </repository>
   </repositories>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -267,6 +267,10 @@
     </plugins>
   </reporting>
   <dependencies>
+    <!-- Commenting out original kryo 2.X
+         and using shaded version (net.onrc.onos.kryo2)
+         to workaround conflict with kryo 1.X in titan's dependency.(#443)
+    -->
     <!--
     <dependency>
       <groupId>com.esotericsoftware.kryo</groupId>
diff --git a/prep-for-offline.sh b/prep-for-offline.sh
new file mode 100755
index 0000000..8be464f
--- /dev/null
+++ b/prep-for-offline.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+#
+# A helper script to download all the dependencies beforehand, rather than
+# Maven lazily downloading them when they're needed.
+#
+
+if [ -z "${MVN}" ]; then
+    MVN="mvn"
+fi
+
+# download package dependencies
+${MVN} -T 1C dependency:go-offline
+
+# run goals to download required plugins
+${MVN} -T 1C checkstyle:checkstyle
+${MVN} -q -T 1C clean test -Dtest=DoNotTest -DfailIfNoTests=false > /dev/null
+${MVN} -T 1C compile
diff --git a/rebuild-local-repo.sh b/rebuild-local-repo.sh
new file mode 100755
index 0000000..4ea1fbf
--- /dev/null
+++ b/rebuild-local-repo.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+#
+# A helper script to update the modified local copy of "curator" or the "kryo2"
+# version.
+#
+# NOTE: This script is useful only for developers.
+# Usage:
+#  1. Update the "curator" jar file or the "kryo2" pom.xml file as appropriate.
+#  2. Run this script.
+#  3. Push the modified repo/ directory to the source code repository.
+#
+
+if [ -z "${MVN}" ]; then
+    MVN="mvn"
+fi
+
+# Install Kryo2 workaround to local repo
+# - Shaded(rename package name to allow mixing 2 different Kryo version)
+# - Install created sharded jar to local repo
+${MVN} -f kryo2/pom.xml package exec:exec
+
+# Install modified curators to local repo
+${MVN} install:install-file -Dfile=./curator/curator-framework-1.3.5-SNAPSHOT.jar -DgroupId=com.netflix.curator -DartifactId=curator-framework -Dversion=1.3.5-SNAPSHOT -Dpackaging=jar -DgeneratePom=true -DlocalRepositoryPath=./repo -DcreateChecksum=true
+${MVN} install:install-file -Dfile=./curator/curator-client-1.3.5-SNAPSHOT.jar -DgroupId=com.netflix.curator -DartifactId=curator-client -Dversion=1.3.5-SNAPSHOT -Dpackaging=jar -DgeneratePom=true -DlocalRepositoryPath=./repo -DcreateChecksum=true
+${MVN} install:install-file -Dfile=./curator/curator-recipes-1.3.5-SNAPSHOT.jar -DgroupId=com.netflix.curator -DartifactId=curator-recipes -Dversion=1.3.5-SNAPSHOT -Dpackaging=jar -DgeneratePom=true -DlocalRepositoryPath=./repo -DcreateChecksum=true
+${MVN} install:install-file -Dfile=./curator/curator-x-discovery-1.3.5-SNAPSHOT.jar -DgroupId=com.netflix.curator -DartifactId=curator-x-discovery -Dversion=1.3.5-SNAPSHOT -Dpackaging=jar -DgeneratePom=true -DlocalRepositoryPath=./repo -DcreateChecksum=true
+
diff --git a/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/curator-client-1.3.5-SNAPSHOT.jar b/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/curator-client-1.3.5-SNAPSHOT.jar
new file mode 100644
index 0000000..c22d602
--- /dev/null
+++ b/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/curator-client-1.3.5-SNAPSHOT.jar
Binary files differ
diff --git a/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/curator-client-1.3.5-SNAPSHOT.jar.md5 b/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/curator-client-1.3.5-SNAPSHOT.jar.md5
new file mode 100644
index 0000000..2ace2a5
--- /dev/null
+++ b/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/curator-client-1.3.5-SNAPSHOT.jar.md5
@@ -0,0 +1 @@
+3746ec5212bdbb9140850c14f4451a0a
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/curator-client-1.3.5-SNAPSHOT.jar.sha1 b/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/curator-client-1.3.5-SNAPSHOT.jar.sha1
new file mode 100644
index 0000000..d05e228
--- /dev/null
+++ b/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/curator-client-1.3.5-SNAPSHOT.jar.sha1
@@ -0,0 +1 @@
+c59b35b37dc560ee16199d5dde2eac727d84df4f
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/curator-client-1.3.5-SNAPSHOT.pom b/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/curator-client-1.3.5-SNAPSHOT.pom
new file mode 100644
index 0000000..b5dcb31
--- /dev/null
+++ b/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/curator-client-1.3.5-SNAPSHOT.pom
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.netflix.curator</groupId>
+  <artifactId>curator-client</artifactId>
+  <version>1.3.5-SNAPSHOT</version>
+  <description>POM was created from install:install-file</description>
+</project>
diff --git a/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/curator-client-1.3.5-SNAPSHOT.pom.md5 b/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/curator-client-1.3.5-SNAPSHOT.pom.md5
new file mode 100644
index 0000000..eff6265
--- /dev/null
+++ b/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/curator-client-1.3.5-SNAPSHOT.pom.md5
@@ -0,0 +1 @@
+5fb6875fb1d6c621bece5d60ad23320c
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/curator-client-1.3.5-SNAPSHOT.pom.sha1 b/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/curator-client-1.3.5-SNAPSHOT.pom.sha1
new file mode 100644
index 0000000..1a61d7c
--- /dev/null
+++ b/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/curator-client-1.3.5-SNAPSHOT.pom.sha1
@@ -0,0 +1 @@
+a242a50033f0ccb0eaf3fe33d804d583d35242c3
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/maven-metadata-local.xml b/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/maven-metadata-local.xml
new file mode 100644
index 0000000..5c72507
--- /dev/null
+++ b/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/maven-metadata-local.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata modelVersion="1.1.0">
+  <groupId>com.netflix.curator</groupId>
+  <artifactId>curator-client</artifactId>
+  <version>1.3.5-SNAPSHOT</version>
+  <versioning>
+    <snapshot>
+      <localCopy>true</localCopy>
+    </snapshot>
+    <lastUpdated>20140102175421</lastUpdated>
+    <snapshotVersions>
+      <snapshotVersion>
+        <extension>jar</extension>
+        <value>1.3.5-SNAPSHOT</value>
+        <updated>20140102175421</updated>
+      </snapshotVersion>
+      <snapshotVersion>
+        <extension>pom</extension>
+        <value>1.3.5-SNAPSHOT</value>
+        <updated>20140102175421</updated>
+      </snapshotVersion>
+    </snapshotVersions>
+  </versioning>
+</metadata>
diff --git a/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/maven-metadata-local.xml.md5 b/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/maven-metadata-local.xml.md5
new file mode 100644
index 0000000..88e6b32
--- /dev/null
+++ b/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/maven-metadata-local.xml.md5
@@ -0,0 +1 @@
+c18e768aaa00a69df8707c52999ece23
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/maven-metadata-local.xml.sha1 b/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/maven-metadata-local.xml.sha1
new file mode 100644
index 0000000..f7bbb41
--- /dev/null
+++ b/repo/com/netflix/curator/curator-client/1.3.5-SNAPSHOT/maven-metadata-local.xml.sha1
@@ -0,0 +1 @@
+4c1a4c050f9dfa58e2c06357292a68cc4db6c153
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-client/maven-metadata-local.xml b/repo/com/netflix/curator/curator-client/maven-metadata-local.xml
new file mode 100644
index 0000000..601cdb2
--- /dev/null
+++ b/repo/com/netflix/curator/curator-client/maven-metadata-local.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+  <groupId>com.netflix.curator</groupId>
+  <artifactId>curator-client</artifactId>
+  <versioning>
+    <versions>
+      <version>1.3.5-SNAPSHOT</version>
+    </versions>
+    <lastUpdated>20140102175421</lastUpdated>
+  </versioning>
+</metadata>
diff --git a/repo/com/netflix/curator/curator-client/maven-metadata-local.xml.md5 b/repo/com/netflix/curator/curator-client/maven-metadata-local.xml.md5
new file mode 100644
index 0000000..e9772e0
--- /dev/null
+++ b/repo/com/netflix/curator/curator-client/maven-metadata-local.xml.md5
@@ -0,0 +1 @@
+81f0d8335cac788422454e1f404024b5
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-client/maven-metadata-local.xml.sha1 b/repo/com/netflix/curator/curator-client/maven-metadata-local.xml.sha1
new file mode 100644
index 0000000..015f48f
--- /dev/null
+++ b/repo/com/netflix/curator/curator-client/maven-metadata-local.xml.sha1
@@ -0,0 +1 @@
+d4b4e3e335da0916395576e68f60183a8c614bde
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/curator-framework-1.3.5-SNAPSHOT.jar b/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/curator-framework-1.3.5-SNAPSHOT.jar
new file mode 100644
index 0000000..1b89270
--- /dev/null
+++ b/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/curator-framework-1.3.5-SNAPSHOT.jar
Binary files differ
diff --git a/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/curator-framework-1.3.5-SNAPSHOT.jar.md5 b/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/curator-framework-1.3.5-SNAPSHOT.jar.md5
new file mode 100644
index 0000000..526cb88
--- /dev/null
+++ b/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/curator-framework-1.3.5-SNAPSHOT.jar.md5
@@ -0,0 +1 @@
+837ffcfa86d11a2049d05d710c07bb4e
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/curator-framework-1.3.5-SNAPSHOT.jar.sha1 b/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/curator-framework-1.3.5-SNAPSHOT.jar.sha1
new file mode 100644
index 0000000..aecf353
--- /dev/null
+++ b/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/curator-framework-1.3.5-SNAPSHOT.jar.sha1
@@ -0,0 +1 @@
+6ed887c7b72b142b72a8043218ba900673a3c83e
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/curator-framework-1.3.5-SNAPSHOT.pom b/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/curator-framework-1.3.5-SNAPSHOT.pom
new file mode 100644
index 0000000..84f098f
--- /dev/null
+++ b/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/curator-framework-1.3.5-SNAPSHOT.pom
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.netflix.curator</groupId>
+  <artifactId>curator-framework</artifactId>
+  <version>1.3.5-SNAPSHOT</version>
+  <description>POM was created from install:install-file</description>
+</project>
diff --git a/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/curator-framework-1.3.5-SNAPSHOT.pom.md5 b/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/curator-framework-1.3.5-SNAPSHOT.pom.md5
new file mode 100644
index 0000000..cf9798c
--- /dev/null
+++ b/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/curator-framework-1.3.5-SNAPSHOT.pom.md5
@@ -0,0 +1 @@
+f05dc58d60323b5b06c09d14dc435886
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/curator-framework-1.3.5-SNAPSHOT.pom.sha1 b/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/curator-framework-1.3.5-SNAPSHOT.pom.sha1
new file mode 100644
index 0000000..0895d5c
--- /dev/null
+++ b/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/curator-framework-1.3.5-SNAPSHOT.pom.sha1
@@ -0,0 +1 @@
+6750549cf7f567ed3d0a13d0e98d3c32f2c6860d
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/maven-metadata-local.xml b/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/maven-metadata-local.xml
new file mode 100644
index 0000000..575d4c6
--- /dev/null
+++ b/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/maven-metadata-local.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata modelVersion="1.1.0">
+  <groupId>com.netflix.curator</groupId>
+  <artifactId>curator-framework</artifactId>
+  <version>1.3.5-SNAPSHOT</version>
+  <versioning>
+    <snapshot>
+      <localCopy>true</localCopy>
+    </snapshot>
+    <lastUpdated>20140102175420</lastUpdated>
+    <snapshotVersions>
+      <snapshotVersion>
+        <extension>jar</extension>
+        <value>1.3.5-SNAPSHOT</value>
+        <updated>20140102175420</updated>
+      </snapshotVersion>
+      <snapshotVersion>
+        <extension>pom</extension>
+        <value>1.3.5-SNAPSHOT</value>
+        <updated>20140102175420</updated>
+      </snapshotVersion>
+    </snapshotVersions>
+  </versioning>
+</metadata>
diff --git a/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/maven-metadata-local.xml.md5 b/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/maven-metadata-local.xml.md5
new file mode 100644
index 0000000..91a0276
--- /dev/null
+++ b/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/maven-metadata-local.xml.md5
@@ -0,0 +1 @@
+ad227a30712055f5ce428b2698626e8c
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/maven-metadata-local.xml.sha1 b/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/maven-metadata-local.xml.sha1
new file mode 100644
index 0000000..e195786
--- /dev/null
+++ b/repo/com/netflix/curator/curator-framework/1.3.5-SNAPSHOT/maven-metadata-local.xml.sha1
@@ -0,0 +1 @@
+1094337510f3b3c0f4e7daebc584e00fea388570
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-framework/maven-metadata-local.xml b/repo/com/netflix/curator/curator-framework/maven-metadata-local.xml
new file mode 100644
index 0000000..c0850b6
--- /dev/null
+++ b/repo/com/netflix/curator/curator-framework/maven-metadata-local.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+  <groupId>com.netflix.curator</groupId>
+  <artifactId>curator-framework</artifactId>
+  <versioning>
+    <versions>
+      <version>1.3.5-SNAPSHOT</version>
+    </versions>
+    <lastUpdated>20140102175420</lastUpdated>
+  </versioning>
+</metadata>
diff --git a/repo/com/netflix/curator/curator-framework/maven-metadata-local.xml.md5 b/repo/com/netflix/curator/curator-framework/maven-metadata-local.xml.md5
new file mode 100644
index 0000000..e6e4b37
--- /dev/null
+++ b/repo/com/netflix/curator/curator-framework/maven-metadata-local.xml.md5
@@ -0,0 +1 @@
+1ffcf4d9101ad330411364ae043e014d
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-framework/maven-metadata-local.xml.sha1 b/repo/com/netflix/curator/curator-framework/maven-metadata-local.xml.sha1
new file mode 100644
index 0000000..11491ff
--- /dev/null
+++ b/repo/com/netflix/curator/curator-framework/maven-metadata-local.xml.sha1
@@ -0,0 +1 @@
+9d49a343907e558388584483f987d279714ffcc1
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/curator-recipes-1.3.5-SNAPSHOT.jar b/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/curator-recipes-1.3.5-SNAPSHOT.jar
new file mode 100644
index 0000000..30efe51
--- /dev/null
+++ b/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/curator-recipes-1.3.5-SNAPSHOT.jar
Binary files differ
diff --git a/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/curator-recipes-1.3.5-SNAPSHOT.jar.md5 b/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/curator-recipes-1.3.5-SNAPSHOT.jar.md5
new file mode 100644
index 0000000..2932cbd
--- /dev/null
+++ b/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/curator-recipes-1.3.5-SNAPSHOT.jar.md5
@@ -0,0 +1 @@
+a14fe0e16945c674b55c4e42635d1ae9
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/curator-recipes-1.3.5-SNAPSHOT.jar.sha1 b/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/curator-recipes-1.3.5-SNAPSHOT.jar.sha1
new file mode 100644
index 0000000..41613f9
--- /dev/null
+++ b/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/curator-recipes-1.3.5-SNAPSHOT.jar.sha1
@@ -0,0 +1 @@
+bd80a054cf18f037bd297b77566028e46c1056a9
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/curator-recipes-1.3.5-SNAPSHOT.pom b/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/curator-recipes-1.3.5-SNAPSHOT.pom
new file mode 100644
index 0000000..198deba
--- /dev/null
+++ b/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/curator-recipes-1.3.5-SNAPSHOT.pom
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.netflix.curator</groupId>
+  <artifactId>curator-recipes</artifactId>
+  <version>1.3.5-SNAPSHOT</version>
+  <description>POM was created from install:install-file</description>
+</project>
diff --git a/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/curator-recipes-1.3.5-SNAPSHOT.pom.md5 b/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/curator-recipes-1.3.5-SNAPSHOT.pom.md5
new file mode 100644
index 0000000..262bab7
--- /dev/null
+++ b/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/curator-recipes-1.3.5-SNAPSHOT.pom.md5
@@ -0,0 +1 @@
+b1ba9c9fb1147e4b8edafecd6c60954f
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/curator-recipes-1.3.5-SNAPSHOT.pom.sha1 b/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/curator-recipes-1.3.5-SNAPSHOT.pom.sha1
new file mode 100644
index 0000000..a75ea0c
--- /dev/null
+++ b/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/curator-recipes-1.3.5-SNAPSHOT.pom.sha1
@@ -0,0 +1 @@
+1729fd8fcb7a6252004eadc49aae0ddc436374c3
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/maven-metadata-local.xml b/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/maven-metadata-local.xml
new file mode 100644
index 0000000..982743d
--- /dev/null
+++ b/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/maven-metadata-local.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata modelVersion="1.1.0">
+  <groupId>com.netflix.curator</groupId>
+  <artifactId>curator-recipes</artifactId>
+  <version>1.3.5-SNAPSHOT</version>
+  <versioning>
+    <snapshot>
+      <localCopy>true</localCopy>
+    </snapshot>
+    <lastUpdated>20140102175423</lastUpdated>
+    <snapshotVersions>
+      <snapshotVersion>
+        <extension>jar</extension>
+        <value>1.3.5-SNAPSHOT</value>
+        <updated>20140102175423</updated>
+      </snapshotVersion>
+      <snapshotVersion>
+        <extension>pom</extension>
+        <value>1.3.5-SNAPSHOT</value>
+        <updated>20140102175423</updated>
+      </snapshotVersion>
+    </snapshotVersions>
+  </versioning>
+</metadata>
diff --git a/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/maven-metadata-local.xml.md5 b/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/maven-metadata-local.xml.md5
new file mode 100644
index 0000000..8eedc9b
--- /dev/null
+++ b/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/maven-metadata-local.xml.md5
@@ -0,0 +1 @@
+50c512f43275d8025c64db161237902f
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/maven-metadata-local.xml.sha1 b/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/maven-metadata-local.xml.sha1
new file mode 100644
index 0000000..4eb06cf
--- /dev/null
+++ b/repo/com/netflix/curator/curator-recipes/1.3.5-SNAPSHOT/maven-metadata-local.xml.sha1
@@ -0,0 +1 @@
+c43e204325a14bd04b1421c294e21ba3d4c844c7
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-recipes/maven-metadata-local.xml b/repo/com/netflix/curator/curator-recipes/maven-metadata-local.xml
new file mode 100644
index 0000000..c7018a0
--- /dev/null
+++ b/repo/com/netflix/curator/curator-recipes/maven-metadata-local.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+  <groupId>com.netflix.curator</groupId>
+  <artifactId>curator-recipes</artifactId>
+  <versioning>
+    <versions>
+      <version>1.3.5-SNAPSHOT</version>
+    </versions>
+    <lastUpdated>20140102175423</lastUpdated>
+  </versioning>
+</metadata>
diff --git a/repo/com/netflix/curator/curator-recipes/maven-metadata-local.xml.md5 b/repo/com/netflix/curator/curator-recipes/maven-metadata-local.xml.md5
new file mode 100644
index 0000000..88b4161
--- /dev/null
+++ b/repo/com/netflix/curator/curator-recipes/maven-metadata-local.xml.md5
@@ -0,0 +1 @@
+e21acd4765fda10d42252072e7b478f9
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-recipes/maven-metadata-local.xml.sha1 b/repo/com/netflix/curator/curator-recipes/maven-metadata-local.xml.sha1
new file mode 100644
index 0000000..393d68d
--- /dev/null
+++ b/repo/com/netflix/curator/curator-recipes/maven-metadata-local.xml.sha1
@@ -0,0 +1 @@
+77b6ed5d47f571d3ba252620fe14a76504eb85a5
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/curator-x-discovery-1.3.5-SNAPSHOT.jar b/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/curator-x-discovery-1.3.5-SNAPSHOT.jar
new file mode 100644
index 0000000..147417e
--- /dev/null
+++ b/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/curator-x-discovery-1.3.5-SNAPSHOT.jar
Binary files differ
diff --git a/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/curator-x-discovery-1.3.5-SNAPSHOT.jar.md5 b/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/curator-x-discovery-1.3.5-SNAPSHOT.jar.md5
new file mode 100644
index 0000000..3025108
--- /dev/null
+++ b/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/curator-x-discovery-1.3.5-SNAPSHOT.jar.md5
@@ -0,0 +1 @@
+f0aadef06641b7da6dab0f17a03c10b5
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/curator-x-discovery-1.3.5-SNAPSHOT.jar.sha1 b/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/curator-x-discovery-1.3.5-SNAPSHOT.jar.sha1
new file mode 100644
index 0000000..d08e236
--- /dev/null
+++ b/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/curator-x-discovery-1.3.5-SNAPSHOT.jar.sha1
@@ -0,0 +1 @@
+1d1e79e81ac6f042a647e50fef6730a91e9281af
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/curator-x-discovery-1.3.5-SNAPSHOT.pom b/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/curator-x-discovery-1.3.5-SNAPSHOT.pom
new file mode 100644
index 0000000..af57ce1
--- /dev/null
+++ b/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/curator-x-discovery-1.3.5-SNAPSHOT.pom
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.netflix.curator</groupId>
+  <artifactId>curator-x-discovery</artifactId>
+  <version>1.3.5-SNAPSHOT</version>
+  <description>POM was created from install:install-file</description>
+</project>
diff --git a/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/curator-x-discovery-1.3.5-SNAPSHOT.pom.md5 b/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/curator-x-discovery-1.3.5-SNAPSHOT.pom.md5
new file mode 100644
index 0000000..72e09b8
--- /dev/null
+++ b/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/curator-x-discovery-1.3.5-SNAPSHOT.pom.md5
@@ -0,0 +1 @@
+672c8a21ef3629f6910ed0077b112f1c
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/curator-x-discovery-1.3.5-SNAPSHOT.pom.sha1 b/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/curator-x-discovery-1.3.5-SNAPSHOT.pom.sha1
new file mode 100644
index 0000000..b8c733f
--- /dev/null
+++ b/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/curator-x-discovery-1.3.5-SNAPSHOT.pom.sha1
@@ -0,0 +1 @@
+2c939a080e7dd43af4022310d3fac75191a393f5
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/maven-metadata-local.xml b/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/maven-metadata-local.xml
new file mode 100644
index 0000000..c3766b7
--- /dev/null
+++ b/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/maven-metadata-local.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata modelVersion="1.1.0">
+  <groupId>com.netflix.curator</groupId>
+  <artifactId>curator-x-discovery</artifactId>
+  <version>1.3.5-SNAPSHOT</version>
+  <versioning>
+    <snapshot>
+      <localCopy>true</localCopy>
+    </snapshot>
+    <lastUpdated>20140102175425</lastUpdated>
+    <snapshotVersions>
+      <snapshotVersion>
+        <extension>jar</extension>
+        <value>1.3.5-SNAPSHOT</value>
+        <updated>20140102175425</updated>
+      </snapshotVersion>
+      <snapshotVersion>
+        <extension>pom</extension>
+        <value>1.3.5-SNAPSHOT</value>
+        <updated>20140102175425</updated>
+      </snapshotVersion>
+    </snapshotVersions>
+  </versioning>
+</metadata>
diff --git a/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/maven-metadata-local.xml.md5 b/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/maven-metadata-local.xml.md5
new file mode 100644
index 0000000..5efd07d
--- /dev/null
+++ b/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/maven-metadata-local.xml.md5
@@ -0,0 +1 @@
+bf828c8b78fcbf02d658c214a8146bd6
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/maven-metadata-local.xml.sha1 b/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/maven-metadata-local.xml.sha1
new file mode 100644
index 0000000..7a4e3bf
--- /dev/null
+++ b/repo/com/netflix/curator/curator-x-discovery/1.3.5-SNAPSHOT/maven-metadata-local.xml.sha1
@@ -0,0 +1 @@
+4a9f4761ac5f12f448f48bc8f08a2c098dd5435c
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-x-discovery/maven-metadata-local.xml b/repo/com/netflix/curator/curator-x-discovery/maven-metadata-local.xml
new file mode 100644
index 0000000..37c9551
--- /dev/null
+++ b/repo/com/netflix/curator/curator-x-discovery/maven-metadata-local.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+  <groupId>com.netflix.curator</groupId>
+  <artifactId>curator-x-discovery</artifactId>
+  <versioning>
+    <versions>
+      <version>1.3.5-SNAPSHOT</version>
+    </versions>
+    <lastUpdated>20140102175425</lastUpdated>
+  </versioning>
+</metadata>
diff --git a/repo/com/netflix/curator/curator-x-discovery/maven-metadata-local.xml.md5 b/repo/com/netflix/curator/curator-x-discovery/maven-metadata-local.xml.md5
new file mode 100644
index 0000000..247854b
--- /dev/null
+++ b/repo/com/netflix/curator/curator-x-discovery/maven-metadata-local.xml.md5
@@ -0,0 +1 @@
+a719466f9f7df932f5a0727156fec652
\ No newline at end of file
diff --git a/repo/com/netflix/curator/curator-x-discovery/maven-metadata-local.xml.sha1 b/repo/com/netflix/curator/curator-x-discovery/maven-metadata-local.xml.sha1
new file mode 100644
index 0000000..3bc27f7
--- /dev/null
+++ b/repo/com/netflix/curator/curator-x-discovery/maven-metadata-local.xml.sha1
@@ -0,0 +1 @@
+e4d0f45d5a5d60836ee6eea43e937995464c1b8a
\ No newline at end of file
diff --git a/setup-local-maven.sh b/setup-local-maven.sh
deleted file mode 100755
index f8e00f8..0000000
--- a/setup-local-maven.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-
-if [ -z "${MVN}" ]; then
-    MVN="mvn"
-fi
-
-# Kryo2 workaround
-${MVN} -f kryo2/pom.xml package exec:exec
-
-${MVN} install:install-file -Dfile=./curator/curator-framework-1.3.5-SNAPSHOT.jar -DgroupId=com.netflix.curator -DartifactId=curator-framework -Dversion=1.3.5-SNAPSHOT -Dpackaging=jar -DgeneratePom=true
-${MVN} install:install-file -Dfile=./curator/curator-client-1.3.5-SNAPSHOT.jar -DgroupId=com.netflix.curator -DartifactId=curator-client -Dversion=1.3.5-SNAPSHOT -Dpackaging=jar -DgeneratePom=true
-${MVN} install:install-file -Dfile=./curator/curator-recipes-1.3.5-SNAPSHOT.jar -DgroupId=com.netflix.curator -DartifactId=curator-recipes -Dversion=1.3.5-SNAPSHOT -Dpackaging=jar -DgeneratePom=true
-${MVN} install:install-file -Dfile=./curator/curator-x-discovery-1.3.5-SNAPSHOT.jar -DgroupId=com.netflix.curator -DartifactId=curator-x-discovery -Dversion=1.3.5-SNAPSHOT -Dpackaging=jar -DgeneratePom=true
-
-# download package dependencies
-${MVN} dependency:go-offline
-
-# run goals to download required plugins
-${MVN} -q test -Dtest=DoNotTest -DfailIfNoTests=false > /dev/null
-${MVN} clean compile
diff --git a/src/main/java/net/onrc/onos/datagrid/web/GetMapResource.java b/src/main/java/net/onrc/onos/datagrid/web/GetMapResource.java
index 8c8e1cd..6a56b2f 100644
--- a/src/main/java/net/onrc/onos/datagrid/web/GetMapResource.java
+++ b/src/main/java/net/onrc/onos/datagrid/web/GetMapResource.java
@@ -47,7 +47,7 @@
 	// Extract the arguments
 	String mapNameStr = (String)getRequestAttributes().get("map-name");
 
-	log.debug("Get Datagrid Map: " + mapNameStr);
+	log.debug("Get Datagrid Map: {}", mapNameStr);
 
 	//
 	// Get the Flows
diff --git a/src/main/java/net/onrc/onos/graph/GraphDBConnection.java b/src/main/java/net/onrc/onos/graph/GraphDBConnection.java
index bf30297..16869c5 100644
--- a/src/main/java/net/onrc/onos/graph/GraphDBConnection.java
+++ b/src/main/java/net/onrc/onos/graph/GraphDBConnection.java
@@ -33,6 +33,7 @@
 			.getLogger(GraphDBConnection.class);
 	private static GraphDBConnection singleton = new GraphDBConnection();
 	private static TitanGraph graph;
+	private static FramedGraph<TitanGraph> fg;
 	private static EventTransactionalGraph<TitanGraph> eg;
 	private static String configFile;
 
@@ -85,6 +86,7 @@
 				graph.createKeyIndex("ipv4_address", Vertex.class);
 			}
 			graph.commit();
+			fg = new FramedGraph<TitanGraph>(graph);
 			eg = new EventTransactionalGraph<TitanGraph>(graph);
 		}
 		return singleton;
@@ -95,13 +97,7 @@
 	 */
 	@Override
 	public FramedGraph<TitanGraph> getFramedGraph() {
-		if (isValid()) {
-			FramedGraph<TitanGraph> fg = new FramedGraph<TitanGraph>(graph);
-			return fg;
-		} else {
-			log.error("new FramedGraph failed");
-			return null;
-		}
+		return fg;
 	}
 
 	/**
@@ -136,11 +132,11 @@
 
 	/**
 	 * Commit changes for the graph operations.
-	 * @throws Exception 
+	 * @throws Exception
 	 */
 	@Override
 	public void commit() {
-//		// Should not catch exception here! 
+//		// Should not catch exception here!
 //		try {
 			graph.commit();
 //		}
@@ -154,7 +150,7 @@
 	 */
 	@Override
 	public void rollback() {
-		// Should not catch exception here! 
+		// Should not catch exception here!
 //		try {
 			graph.rollback();
 //		}
@@ -171,7 +167,7 @@
 		try {
 			commit();
 		} catch (Exception e) {
-			log.error("{}", e.toString());
+			log.error("close() failed with exception", e);
 		}
 	}
 }
diff --git a/src/main/java/net/onrc/onos/graph/LocalTopologyEventListener.java b/src/main/java/net/onrc/onos/graph/LocalTopologyEventListener.java
index 2778b55..80a6338 100644
--- a/src/main/java/net/onrc/onos/graph/LocalTopologyEventListener.java
+++ b/src/main/java/net/onrc/onos/graph/LocalTopologyEventListener.java
@@ -39,7 +39,7 @@
 		// TODO Auto-generated method stub
 		// Fire NetMapEvents (LinkRemoved, FlowEntryRemoved, HostRemoved, PortRemoved)
 		TitanEdge edge = (TitanEdge) e;
-		log.debug("TopologyEvents: Received edge removed event: {}",edge.toString());
+		log.debug("TopologyEvents: Received edge removed event: {}",edge);
 		String label = edge.getLabel();
 		if (label.equals("link")) {
 			Vertex v = edge.getVertex(Direction.IN);
@@ -76,7 +76,7 @@
 		// TODO Auto-generated method stub
 		// Generate NetMapEvents 
 		String type = (String) vertex.getProperty("type");
-		log.debug("TopologyEvents: Received vertex removed event: {}",vertex.toString());
+		log.debug("TopologyEvents: Received vertex removed event: {}",vertex);
 		if (type.equals("port")) {
 			// port is removed...lets fire reconcile here directly for now
 			
diff --git a/src/main/java/net/onrc/onos/ofcontroller/bgproute/PatriciaTrie.java b/src/main/java/net/onrc/onos/ofcontroller/bgproute/PatriciaTrie.java
index 89dfb30..67458e3 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/bgproute/PatriciaTrie.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/bgproute/PatriciaTrie.java
@@ -17,16 +17,16 @@
 
 	@Override
 	public synchronized V put(Prefix prefix, V value) {
+		if (prefix == null || value == null) {
+			throw new NullPointerException();
+		}
+		
 		if (prefix.getPrefixLength() > maxPrefixLength) {
 			throw new IllegalArgumentException(String.format(
 					"Prefix length %d is greater than max prefix length %d", 
 					prefix.getPrefixLength(), maxPrefixLength));
 		}
 		
-		if (prefix == null || value == null) {
-			throw new NullPointerException();
-		}
-		
 		Node node = top;
 		Node match = null;
 		
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java
index e915614..6130218 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java
@@ -245,8 +245,8 @@
 					port.setDevice(obj);  
 				}
 
-				log.debug("port number is {}", port.getNumber().toString());
-				log.debug("port desc is {}", port.getDesc());  
+				log.debug("port number is {}", port.getNumber());
+				log.debug("port desc is {}", port.getDesc());
 			}
 		}      		 
 
@@ -345,9 +345,11 @@
 		IPortObject portObject1 = ope.searchPort(HexString.toHexString(
 				onosDevice.getSwitchDPID()), onosDevice.getSwitchPort());
 
-		if (portObject1.getLinkedPorts().iterator().hasNext()) {
-			log.debug("stop adding OnosDevice: {} due to there is a link to: {}",
-					onosDevice, portObject1.getLinkedPorts().iterator().next().getPortId());
+		if ((portObject1 != null) && portObject1.getLinkedPorts().iterator().hasNext()) {
+			if (log.isDebugEnabled()) {
+				log.debug("stop adding OnosDevice: {} due to there is a link to: {}",
+						onosDevice, portObject1.getLinkedPorts().iterator().next().getPortId());
+			}
 			return;
 		}
 		
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/LinkStorageImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/LinkStorageImpl.java
index 19098b9..f53a38b 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/internal/LinkStorageImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/LinkStorageImpl.java
@@ -511,13 +511,13 @@
 	 	vportDst = dbop.searchPort(dpid, port);
 	 	
 		// FIXME: This needs to remove all edges
-	 	if (vportSrc != null && vportDst != null) {
-	 		vportSrc.removeLink(vportDst);
-	    	log.debug("deleteLinkImpl(): deleted edges src {} dst {}", new Object[]{
-	    			lt, vportSrc, vportDst});
-	    	success = true;
-	    }
-	    
-	 	return success;
+		if (vportSrc != null && vportDst != null) {
+			vportSrc.removeLink(vportDst);
+			log.debug("deleteLinkImpl(): deleted edge {} src {} dst {}", new Object[]{
+				lt, vportSrc, vportDst});
+			success = true;
+		}
+
+		return success;
 	}
 }
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java
index 019637d..598b89b 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java
@@ -230,7 +230,7 @@
 			success = true;
 		} catch (Exception e) {
 			op.rollback();
-			log.error("SwitchStorage:addSwitch dpid:{} failed", dpid, e);
+			log.error("SwitchStorage:addSwitch dpid:"+dpid+" failed", e);
 		}
 
 		return success;
@@ -263,7 +263,7 @@
 		} catch (Exception e) {
 			op.rollback();
 			e.printStackTrace();
-			log.error("SwitchStorage:addSwitch dpid:{} failed", dpid, e);
+			log.error("SwitchStorage:addSwitch dpid:"+dpid+" failed", e);
 		}
 
 		return success;
@@ -314,7 +314,7 @@
 		} catch (Exception e) {
 			// TODO what type of exception is thrown when we can't commit?
 			op.rollback();
-			log.error("SwitchStorage:deactivateSwitch {} failed", dpid, e);
+			log.error("SwitchStorage:deactivateSwitch "+dpid+" failed", e);
 		}
 
 		return success;
@@ -468,7 +468,7 @@
 		if (sw != null && state != null) {
 			sw.setState(state.toString());
 			log.info("SwitchStorage:setSwitchStateImpl dpid:{} updated {}",
-					sw.getDPID(), state.toString());
+					sw.getDPID(), state);
 		}
 	}
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java b/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java
index 3337cf8..456b69c 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java
@@ -57,7 +57,7 @@
 					      ILinkDiscoveryListener,
 					      IFloodlightModule,
 					      INetworkGraphService {
-	
+
 	protected IDeviceStorage devStore;
 	protected ISwitchStorage swStore;
 	protected ILinkStorage linkStore;
@@ -71,19 +71,21 @@
 	protected static final String CleanupEnabled = "EnableCleanup";
 	protected IThreadPoolService threadPool;
 	protected IFloodlightProviderService floodlightProvider;
-	
+
 	protected final int CLEANUP_TASK_INTERVAL = 60; // 1 min
 	protected SingletonTask cleanupTask;
 	protected ILinkDiscoveryService linkDiscovery;
 
 	protected IDatagridService datagridService;
-	
-	/**
+
+    /**
      *  Cleanup and synch switch state from registry
      */
     protected class SwitchCleanup implements ControlChangeCallback, Runnable {
         @Override
         public void run() {
+            String old = Thread.currentThread().getName();
+            Thread.currentThread().setName("SwitchCleanup@" + old);
             try {
             	log.debug("Running cleanup thread");
 		op = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloudconf");
@@ -95,6 +97,7 @@
             	op.close();
                     cleanupTask.reschedule(CLEANUP_TASK_INTERVAL,
                                               TimeUnit.SECONDS);
+                Thread.currentThread().setName(old);
             }
         }
 
@@ -114,7 +117,7 @@
 					//if (swStore.updateSwitch(HexString.toHexString(dpid), SwitchState.INACTIVE, DM_OPERATION.UPDATE)) {
 					if (swStore.deactivateSwitch(HexString.toHexString(dpid))) {
 					    registryService.releaseControl(dpid);
-					    
+
 					    // TODO publish UPDATE_SWITCH event here
 					    //
 					    // NOTE: Here we explicitly send
@@ -144,14 +147,14 @@
 				} catch (Exception e) {
 	                log.error("Error in SwitchCleanup:controlChanged ", e);
 				}
-			}						
+			}
 		}
     }
 
     protected void switchCleanup() {
     	//op.close();
     	Iterable<ISwitchObject> switches = op.getActiveSwitches();
-    	
+
     	log.debug("Checking for inactive switches");
     	// For each switch check if a controller exists in controller registry
     	for (ISwitchObject sw: switches) {
@@ -249,7 +252,7 @@
 					TopologyElement topologyElementPort =
 					    new TopologyElement(sw.getId(), port.getPortNumber());
 					datagridService.notificationSendTopologyElementAdded(topologyElementPort);
-					
+
 					// Allow links to be discovered on this port now that it's
 					// in the database
 					linkDiscovery.RemoveFromSuppressLLDPs(sw.getId(), port.getPortNumber());
@@ -324,7 +327,7 @@
 			// Allow links to be discovered on this port now that it's
 			// in the database
 			linkDiscovery.RemoveFromSuppressLLDPs(switchId, port.getPortNumber());
-			
+
 		    // TODO publish ADD_PORT event here
 		    TopologyElement topologyElement =
 			new TopologyElement(switchId, port.getPortNumber());
@@ -409,7 +412,7 @@
 	public void deviceVlanChanged(IDevice device) {
 		// TODO Auto-generated method stub
 	}
-	
+
 
 	@Override
 	public Collection<Class<? extends IFloodlightService>> getModuleServices() {
@@ -460,7 +463,7 @@
 		threadPool = context.getServiceImpl(IThreadPoolService.class);
 		registryService = context.getServiceImpl(IControllerRegistryService.class);
 		datagridService = context.getServiceImpl(IDatagridService.class);
-		
+
 		devStore = new DeviceStorageImpl();
 		devStore.init(dbStore, conf);
 		
@@ -471,7 +474,7 @@
 		linkStore.init(dbStore, conf);
 				
 		log.debug("Initializing NetworkGraphPublisher module with {}", conf);
-		
+
 	}
 
 	@Override
@@ -482,7 +485,7 @@
 		//deviceService.addListener(this);
 		floodlightProvider.addOFSwitchListener(this);
 		linkDiscovery.addListener(this);
-		
+
 		log.debug("Adding EventListener");
 		System.out.println("start Up op " + op);
 		IDBConnection conn = op.getDBConnection();
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowDatabaseOperation.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowDatabaseOperation.java
index 905a9df..05c5ecb 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowDatabaseOperation.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowDatabaseOperation.java
@@ -78,13 +78,13 @@
 	    String stacktrace = sw.toString();
 
 	    log.error(":addFlow FlowId:{} failed: {}",
-		      flowPath.flowId().toString(),
+		      flowPath.flowId(),
 		      stacktrace);
 	    return false;
 	}
 	if (flowObj == null) {
 	    log.error(":addFlow FlowId:{} failed: Flow object not created",
-		      flowPath.flowId().toString());
+		      flowPath.flowId());
 	    dbHandler.rollback();
 	    return false;
 	}
@@ -399,12 +399,12 @@
 	    }
 	} catch (Exception e) {
 	    log.error(":addFlow FlowEntryId:{} failed",
-		      flowEntry.flowEntryId().toString());
+		      flowEntry.flowEntryId());
 	    return null;
 	}
 	if (flowEntryObj == null) {
 	    log.error(":addFlow FlowEntryId:{} failed: FlowEntry object not created",
-		      flowEntry.flowEntryId().toString());
+		      flowEntry.flowEntryId());
 	    return null;
 	}
 
@@ -673,7 +673,7 @@
 	    flowEntryObj = dbHandler.searchFlowEntry(flowEntry.flowEntryId());
 	} catch (Exception e) {
 	    log.error(":deleteFlowEntry FlowEntryId:{} failed",
-		      flowEntry.flowEntryId().toString());
+		      flowEntry.flowEntryId());
 	    return false;
 	}
 	//
@@ -683,7 +683,7 @@
 	/*
 	if (flowEntryObj == null) {
 	    log.error(":deleteFlowEntry FlowEntryId:{} failed: FlowEntry object not found",
-		      flowEntry.flowEntryId().toString());
+		      flowEntry.flowEntryId());
 	    return false;
 	}
 	*/
@@ -738,7 +738,7 @@
 	} catch (Exception e) {
 	    // TODO: handle exceptions
 	    dbHandler.rollback();
-	    log.error(":deleteFlow FlowId:{} failed", flowId.toString());
+	    log.error(":deleteFlow FlowId:{} failed", flowId);
 	    return false;
 	}
 	if (flowObj == null) {
@@ -775,7 +775,7 @@
 	} catch (Exception e) {
 	    // TODO: handle exceptions
 	    dbHandler.rollback();
-	    log.error(":getFlow FlowId:{} failed", flowId.toString());
+	    log.error(":getFlow FlowId:{} failed", flowId);
 	    return null;
 	}
 	if (flowObj == null) {
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEventHandler.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEventHandler.java
index b25634f..8b1f7c0 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEventHandler.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEventHandler.java
@@ -148,6 +148,7 @@
      */
     @Override
     public void run() {
+	this.setName("FlowEventHandler " + this.getId());
 	startup();
 
 	//
@@ -354,8 +355,7 @@
 	for (EventEntry<FlowPath> eventEntry : flowPathEvents) {
 	    FlowPath flowPath = eventEntry.eventData();
 
-	    log.debug("Flow Event: {} {}", eventEntry.eventType(),
-		      flowPath.toString());
+	    log.debug("Flow Event: {} {}", eventEntry.eventType(), flowPath);
 
 	    switch (eventEntry.eventType()) {
 	    case ENTRY_ADD: {
@@ -439,7 +439,7 @@
 	    TopologyElement topologyElement = eventEntry.eventData();
 
 	    log.debug("Topology Event: {} {}", eventEntry.eventType(),
-		      topologyElement.toString());
+		      topologyElement);
 
 	    switch (eventEntry.eventType()) {
 	    case ENTRY_ADD:
@@ -506,7 +506,7 @@
 	    FlowEntry flowEntry = eventEntry.eventData();
 
 	    log.debug("Flow Entry Event: {} {}", eventEntry.eventType(),
-		      flowEntry.toString());
+		      flowEntry);
 
 	    if ((! flowEntry.isValidFlowId()) ||
 		(! flowEntry.isValidFlowEntryId())) {
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java
index 3205d6a..611b5c9 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java
@@ -97,6 +97,7 @@
     /**
      * Shutdown the Flow Manager operation.
      */
+    @Override
     public void finalize() {
     	close();
     }
@@ -118,7 +119,7 @@
      */
     @Override
     public Collection<Class<? extends IFloodlightService>> getModuleServices() {
-        Collection<Class<? extends IFloodlightService>> l = 
+        Collection<Class<? extends IFloodlightService>> l =
             new ArrayList<Class<? extends IFloodlightService>>();
         l.add(IFlowService.class);
         return l;
@@ -130,7 +131,7 @@
      * @return the collection of implemented services.
      */
     @Override
-    public Map<Class<? extends IFloodlightService>, IFloodlightService> 
+    public Map<Class<? extends IFloodlightService>, IFloodlightService>
 			       getServiceImpls() {
         Map<Class<? extends IFloodlightService>,
 	    IFloodlightService> m =
@@ -146,7 +147,7 @@
      * @return the collection of modules this module depends on.
      */
     @Override
-    public Collection<Class<? extends IFloodlightService>> 
+    public Collection<Class<? extends IFloodlightService>>
 				      getModuleDependencies() {
 	Collection<Class<? extends IFloodlightService>> l =
 	    new ArrayList<Class<? extends IFloodlightService>>();
@@ -376,6 +377,7 @@
      *
      * @return the network topology.
      */
+    @Override
     public Topology getTopology() {
 	return flowEventHandler.getTopology();
     }
@@ -386,6 +388,7 @@
      * @param sw the switch the Flow Entry expired on.
      * @param flowEntryId the Flow Entry ID of the expired Flow Entry.
      */
+    @Override
     public void flowEntryOnSwitchExpired(IOFSwitch sw,
 					 FlowEntryId flowEntryId) {
 	// Find the Flow Entry
@@ -414,6 +417,7 @@
      * @param entries the collection of <IOFSwitch, FlowEntry> pairs
      * that have been pushed.
      */
+    @Override
     public void flowEntriesPushedToSwitch(
 		Collection<Pair<IOFSwitch, FlowEntry>> entries) {
 
@@ -537,7 +541,7 @@
 		flowEntry.setFlowEntryId(new FlowEntryId(id));
 	    }
 
-	    log.debug("Pushing Flow Entry To Switch: {}", flowEntry.toString());
+	    log.debug("Pushing Flow Entry To Switch: {}", flowEntry);
 	    entries.add(new Pair<IOFSwitch, FlowEntry>(mySwitch, flowEntry));
 	}
 
@@ -583,7 +587,7 @@
 	    if (mySwitch != null)
 		continue;
 
-	    log.debug("Pushing cleanup of Flow Entry To Datagrid: {}", flowEntry.toString());
+	    log.debug("Pushing cleanup of Flow Entry To Datagrid: {}", flowEntry);
 
 	    //
 	    // Write the Flow Entry to the Datagrid
@@ -620,6 +624,7 @@
 	    // The main loop
 	    //
 	    Collection<FlowPath> collection = new LinkedList<FlowPath>();
+	    this.setName("FlowDatabaseWriter " + this.getId() );
 	    try {
 		while (true) {
 		    FlowPath flowPath = blockingQueue.take();
@@ -696,8 +701,7 @@
 	    //
 	    if (flowPath.flowPathUserState() ==
 		FlowPathUserState.FP_USER_DELETE) {
-		log.debug("Deleting Flow Path From Database: {}",
-			  flowPath.toString());
+		log.debug("Deleting Flow Path From Database: {}", flowPath);
 
 		boolean retry = false;
 		do {
@@ -743,7 +747,7 @@
 	    if (! allValid)
 		continue;
 
-	    log.debug("Pushing Flow Path To Database: {}", flowPath.toString());
+	    log.debug("Pushing Flow Path To Database: {}", flowPath);
 
 	    //
 	    // Write the Flow Path to the Network Map
@@ -754,9 +758,7 @@
 		try {
                     long startTime = System.nanoTime();
 		    if (! FlowDatabaseOperation.addFlow(dbHandlerInner, flowPath)) {
-			String logMsg = "Cannot write to Network Map Flow Path " +
-			    flowPath.flowId();
-			log.error(logMsg);
+			log.error("Cannot write to Network Map Flow Path {}", flowPath.flowId());
 			retry = true;
 		    }
  		    // FIXME Flag to turn ON logging
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/AddFlowResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/AddFlowResource.java
index 2a7574b..4f4c1e4 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/AddFlowResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/AddFlowResource.java
@@ -51,7 +51,7 @@
 	ObjectMapper mapper = new ObjectMapper();
 	String flowPathStr = flowJson;
 	FlowPath flowPath = null;
-	log.debug("Add Flow Path: " + flowPathStr);
+	log.debug("Add Flow Path: {}", flowPathStr);
 	try {
 	    flowPath = mapper.readValue(flowPathStr, FlowPath.class);
 	} catch (JsonGenerationException e) {
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/DeleteFlowResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/DeleteFlowResource.java
index d0991e8..ab68584 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/DeleteFlowResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/DeleteFlowResource.java
@@ -46,7 +46,7 @@
 	    result = flowService.deleteAllFlows();
 	} else {
 	    FlowId flowId = new FlowId(flowIdStr);
-	    log.debug("Delete Flow Id: " + flowIdStr);
+	    log.debug("Delete Flow Id: {}", flowIdStr);
 	    result = flowService.deleteFlow(flowId);
 	}
 	return result;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetFlowByIdResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetFlowByIdResource.java
index 1bfb6a3..1cbeece 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetFlowByIdResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetFlowByIdResource.java
@@ -41,7 +41,7 @@
 	String flowIdStr = (String) getRequestAttributes().get("flow-id");
 	FlowId flowId = new FlowId(flowIdStr);
 
-	log.debug("Get Flow Id: " + flowIdStr);
+	log.debug("Get Flow Id: {}", flowIdStr);
 
 	result = flowService.getFlow(flowId);
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetSummaryFlowsResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetSummaryFlowsResource.java
index 9cffb56..aa31abd 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetSummaryFlowsResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/web/GetSummaryFlowsResource.java
@@ -47,8 +47,8 @@
         // Extract the arguments
     	String flowIdStr = (String) getRequestAttributes().get("flow-id");
     	String maxFlowStr = (String) getRequestAttributes().get("max-flows");
-    	log.debug("Get Summary Flows starting flow-id: " + flowIdStr + " max-flows: " + maxFlowStr);
-    	
+    	log.debug("Get Summary Flows starting flow-id: {} max-flows: {}" ,flowIdStr, maxFlowStr);
+
     	flowId = new FlowId(flowIdStr);
     	maxFlows = Integer.parseInt(maxFlowStr);
     	if (maxFlows < 0) maxFlows = 0;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowProgrammer.java b/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowProgrammer.java
index 641faaf..e94d948 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowProgrammer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowProgrammer.java
@@ -140,7 +140,7 @@
 	case FLOW_REMOVED:
 	    OFFlowRemoved flowMsg = (OFFlowRemoved) msg;
 	    FlowEntryId id = new FlowEntryId(flowMsg.getCookie());
-	    log.debug("Got flow entry removed from " + sw.getId() + ": " + id);
+	    log.debug("Got flow entry removed from {}: {}",sw.getId(), id);
 	    flowManager.flowEntryOnSwitchExpired(sw, id);
 	    break;
 	default:
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowPusher.java b/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowPusher.java
index 6485c5e..f2a1828 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowPusher.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowPusher.java
@@ -152,6 +152,7 @@
 		
 		@Override
 		public void run() {
+			this.setName("FlowPusherThread " + this.getId() );
 			while (true) {
 				try {
 					// wait for message pushed to queue
@@ -504,7 +505,7 @@
 			// Unknown user state. Ignore the entry
 			log.debug(
 					"Flow Entry ignored (FlowEntryId = {}): unknown user state {}",
-					flowEntry.flowEntryId().toString(),
+					flowEntry.flowEntryId(),
 					flowEntry.flowEntryUserState());
 			return false;
 		}
@@ -746,13 +747,16 @@
 		//
 		// Write the message to the switch
 		//
-		log.debug("Installing flow entry "
-				+ flowEntry.flowEntryUserState() + " into switch DPID: "
-				+ sw.getStringId() + " flowEntryId: "
-				+ flowEntry.flowEntryId().toString() + " srcMac: "
-				+ matchSrcMac + " dstMac: " + matchDstMac + " inPort: "
-				+ matchInPort + " outPort: " + actionOutputPort);
-		
+		log.debug("Installing flow entry {} into switch DPID: {} flowEntryId: {} srcMac: {} dstMac: {} inPort: {} outPort: {}"
+			, flowEntry.flowEntryUserState()
+			, sw.getStringId()
+			, flowEntry.flowEntryId()
+			, matchSrcMac
+			, matchDstMac
+			, matchInPort
+			, actionOutputPort
+			);
+
 		return add(sw, fm);
 	}
 	
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowSynchronizer.java b/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowSynchronizer.java
index 04d3bbc..98fe262 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowSynchronizer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowSynchronizer.java
@@ -124,14 +124,14 @@
 	    extractTime /= div;
 	    pushTime /= div;
 	    totalTime /= div;
-	    log.debug("Sync time (ms):" +
-	    		  graphIDTime + "," +
-	     		  switchTime + "," + 
-	    		  compareTime + "," +
-	     		  graphEntryTime + "," +
-	    		  extractTime + "," + 
-	     		  pushTime + "," +
-	              totalTime);
+	    log.debug("Sync time (ms):{},{},{},{},{},{},{}"
+	              , graphIDTime
+	              , switchTime
+	              , compareTime
+	              , graphEntryTime
+	              , extractTime
+	              , pushTime
+	              , totalTime);
 	}
 
 	/**
@@ -161,11 +161,14 @@
 		extractTime += entry.extractTime;
 		pushTime += entry.pushTime;
 		added++;
-	    }	  
-	    log.debug("Flow entries added "+ added + ", " +
-		      "Flow entries removed "+ removed + ", " +
-		      "Flow entries skipped " + skipped);
-	    
+	    }
+	    log.debug("Flow entries added {}, " +
+		      "Flow entries removed {}, " +
+		      "Flow entries skipped {}"
+		      , added
+		      , removed
+		      , skipped );
+
 	    return new SyncResult(added, removed, skipped);
 	}
 
@@ -258,7 +261,7 @@
 	double dbTime, extractTime, pushTime;
 	public void addToSwitch(IOFSwitch sw) {
 	    if (statisticsReply != null) {
-		log.error("Error adding existing flow entry {} to sw {}", 
+		log.error("Error adding existing flow entry {} to sw {}",
 			  statisticsReply.getCookie(), sw.getId());
 		return;
 	    }
@@ -289,19 +292,19 @@
 		return;
 	    }
 	    extractTime = System.nanoTime() - startExtract;
-	    
+
 	    double startPush = System.nanoTime();
 	    pusher.pushFlowEntry(sw, flowEntry);
 	    pushTime = System.nanoTime() - startPush;
 	}
-	
+
 	/**
 	 * Remove this FlowEntry from a switch via FlowPusher.
 	 * @param sw Switch from which flow will be removed.
 	 */
 	public void removeFromSwitch(IOFSwitch sw) {
 	    if (statisticsReply == null) {
-		log.error("Error removing non-existent flow entry {} from sw {}", 
+		log.error("Error removing non-existent flow entry {} from sw {}",
 			  flowEntryId, sw.getId());
 		return;
 	    }
diff --git a/src/main/java/net/onrc/onos/ofcontroller/linkdiscovery/internal/LinkDiscoveryManager.java b/src/main/java/net/onrc/onos/ofcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
index 8077201..1dbfdcb 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
@@ -664,8 +664,7 @@
             iofSwitch.write(po, null);
             iofSwitch.flush();
         } catch (IOException e) {
-            log.error("Failure sending LLDP out port {} on switch {}",
-                      new Object[]{ port, iofSwitch.getStringId() }, e);
+            log.error("Failure sending LLDP out port "+port+" on switch "+iofSwitch.getStringId(), e);
         }
 
     }
@@ -675,7 +674,7 @@
      */
     protected void discoverOnAllPorts() {
         if (log.isTraceEnabled()) {
-            log.trace("Sending LLDP packets out of all the enabled ports on switch {}");
+            log.trace("Sending LLDP packets out of all the enabled ports on switch");
         }
         Set<Long> switches = floodlightProvider.getSwitches().keySet();
         // Send standard LLDPs
diff --git a/src/main/java/net/onrc/onos/ofcontroller/proxyarp/ProxyArpManager.java b/src/main/java/net/onrc/onos/ofcontroller/proxyarp/ProxyArpManager.java
index 9d9e36d..2b4b0b1 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/proxyarp/ProxyArpManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/proxyarp/ProxyArpManager.java
@@ -226,7 +226,9 @@
 					
 					if (targetDevice != null) {
 						deviceStorage.removeDevice(targetDevice);
-						log.debug("RemoveDevice: {} due to no have not recieve the ARP reply", targetDevice.toString());
+						if (log.isDebugEnabled()) {
+							log.debug("RemoveDevice: {} due to no have not recieve the ARP reply", targetDevice);
+						}
 					}
 					
 					it.remove();
@@ -351,10 +353,10 @@
 			MACAddress macAddress = MACAddress.valueOf(targetDevice.getMACAddress());
 
 			if (log.isTraceEnabled()) {
-				log.trace("The target Device Record in DB is: {} => {} from ARP request host at {}/{}", 
+				log.trace("The target Device Record in DB is: {} => {} from ARP request host at {}/{}",
 						new Object [] {
 						inetAddressToString(arp.getTargetProtocolAddress()),
-						macAddress.toString(),
+						macAddress,
 						HexString.toHexString(sw.getId()), pi.getInPort()});
 			}
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/topology/web/RouteResource.java b/src/main/java/net/onrc/onos/ofcontroller/topology/web/RouteResource.java
index d8997dc..540c47d 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/topology/web/RouteResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/topology/web/RouteResource.java
@@ -40,7 +40,7 @@
         String dstDpidStr = (String) getRequestAttributes().get("dst-dpid");
         String dstPortStr = (String) getRequestAttributes().get("dst-port");
 
-        log.debug( srcDpidStr + "--" + srcPortStr + "--" + dstDpidStr + "--" + dstPortStr);
+        log.debug( "{}--{}--{}--{}", srcDpidStr, srcPortStr, dstDpidStr, dstPortStr);
 
 	Dpid srcDpid = new Dpid(srcDpidStr);
 	Port srcPort = new Port(Short.parseShort(srcPortStr));
diff --git a/src/main/java/net/onrc/onos/ofcontroller/util/FlowEntryId.java b/src/main/java/net/onrc/onos/ofcontroller/util/FlowEntryId.java
index f5728b0..0ecaebe 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/util/FlowEntryId.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/FlowEntryId.java
@@ -86,7 +86,7 @@
      */
     @Override
     public boolean equals(Object obj){
-	if(obj.getClass() == this.getClass()) {
+	if(obj != null && obj.getClass() == this.getClass()) {
 	    FlowEntryId entry = (FlowEntryId) obj;
 	    return this.value() == entry.value();
 	}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/util/serializers/DpidDeserializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/DpidDeserializer.java
index fe93245..695bb1a 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/util/serializers/DpidDeserializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/DpidDeserializer.java
@@ -31,7 +31,7 @@
 	    String fieldname = jp.getCurrentName();
 	    if ("value".equals(fieldname)) {
 		String value = jp.getText();
-		log.debug("Fieldname: " + fieldname + " Value: " + value);
+		log.debug("Fieldname: {} Value: {}", fieldname, value);
 		dpid = new Dpid(value);
 	    }
 	}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/util/serializers/FlowIdDeserializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/FlowIdDeserializer.java
index f341027..e6c46aa 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/util/serializers/FlowIdDeserializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/FlowIdDeserializer.java
@@ -31,7 +31,7 @@
 	    String fieldname = jp.getCurrentName();
 	    if ("value".equals(fieldname)) {
 		String value = jp.getText();
-		log.debug("Fieldname: " + fieldname + " Value: " + value);
+		log.debug("Fieldname: {} Value: {}", fieldname, value);
 		flowId = new FlowId(value);
 	    }
 	}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv4Deserializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv4Deserializer.java
index 2969e60..ff2238a 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv4Deserializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv4Deserializer.java
@@ -31,7 +31,7 @@
 	    String fieldname = jp.getCurrentName();
 	    if ("value".equals(fieldname)) {
 		String value = jp.getText();
-		log.debug("Fieldname: " + fieldname + " Value: " + value);
+		log.debug("Fieldname: {} Value: {}", fieldname, value);
 		ipv4 = new IPv4(value);
 	    }
 	}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv4NetDeserializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv4NetDeserializer.java
index b2592af..edec8ad 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv4NetDeserializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv4NetDeserializer.java
@@ -31,7 +31,7 @@
 	    String fieldname = jp.getCurrentName();
 	    if ("value".equals(fieldname)) {
 		String value = jp.getText();
-		log.debug("Fieldname: " + fieldname + " Value: " + value);
+		log.debug("Fieldname: {} Value: {}", fieldname, value);
 		ipv4Net = new IPv4Net(value);
 	    }
 	}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv6Deserializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv6Deserializer.java
index c825377..6689024 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv6Deserializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv6Deserializer.java
@@ -31,7 +31,7 @@
 	    String fieldname = jp.getCurrentName();
 	    if ("value".equals(fieldname)) {
 		String value = jp.getText();
-		log.debug("Fieldname: " + fieldname + " Value: " + value);
+		log.debug("Fieldname: {} Value: {}", fieldname, value);
 		ipv6 = new IPv6(value);
 	    }
 	}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv6NetDeserializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv6NetDeserializer.java
index 7191fa9..0d41c21 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv6NetDeserializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv6NetDeserializer.java
@@ -31,7 +31,7 @@
 	    String fieldname = jp.getCurrentName();
 	    if ("value".equals(fieldname)) {
 		String value = jp.getText();
-		log.debug("Fieldname: " + fieldname + " Value: " + value);
+		log.debug("Fieldname: {} Value: {}", fieldname, value);
 		ipv6Net = new IPv6Net(value);
 	    }
 	}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/util/serializers/MACAddressDeserializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/MACAddressDeserializer.java
index 5253dce..1436f28 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/util/serializers/MACAddressDeserializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/MACAddressDeserializer.java
@@ -31,7 +31,7 @@
 	    String fieldname = jp.getCurrentName();
 	    if ("value".equals(fieldname)) {
 		String value = jp.getText();
-		log.debug("Fieldname: " + fieldname + " Value: " + value);
+		log.debug("Fieldname: {} Value: {}", fieldname, value);
 		mac = MACAddress.valueOf(value);
 	    }
 	}
diff --git a/src/main/java/net/onrc/onos/registry/controller/StandaloneRegistry.java b/src/main/java/net/onrc/onos/registry/controller/StandaloneRegistry.java
index 82af20c..319ea48 100644
--- a/src/main/java/net/onrc/onos/registry/controller/StandaloneRegistry.java
+++ b/src/main/java/net/onrc/onos/registry/controller/StandaloneRegistry.java
@@ -101,7 +101,7 @@
 				new HashMap<String, List<ControllerRegistryEntry>>();
 		
 		for (String strSwitch : switchCallbacks.keySet()){
-			log.debug("Swtich _{}", strSwitch);
+			log.debug("Switch _{}", strSwitch);
 			List<ControllerRegistryEntry> list = new ArrayList<ControllerRegistryEntry>();
 			list.add(new ControllerRegistryEntry(controllerId, 0));
 			
diff --git a/src/main/java/net/onrc/onos/registry/controller/ZookeeperRegistry.java b/src/main/java/net/onrc/onos/registry/controller/ZookeeperRegistry.java
index b03aea2..3e4d5bf 100644
--- a/src/main/java/net/onrc/onos/registry/controller/ZookeeperRegistry.java
+++ b/src/main/java/net/onrc/onos/registry/controller/ZookeeperRegistry.java
@@ -99,7 +99,12 @@
 			//may have since released the request or even begun another request
 			//(this is why we use == to check the object instance is the same)
 			SwitchLeadershipData swData = switches.get(dpid);
-			if (swData != null && swData.getLatch() == latch){
+			if (swData == null) {
+				log.debug("Leadership data {} not found", dpid);
+				return;
+			}
+			
+			if (swData.getLatch() == latch){
 				swData.getCallback().controlChanged(
 						HexString.toLong(dpid), latch.hasLeadership());
 			}
diff --git a/src/main/java/org/openflow/protocol/vendor/OFBasicVendorId.java b/src/main/java/org/openflow/protocol/vendor/OFBasicVendorId.java
index 09365d7..33bb0bd 100644
--- a/src/main/java/org/openflow/protocol/vendor/OFBasicVendorId.java
+++ b/src/main/java/org/openflow/protocol/vendor/OFBasicVendorId.java
@@ -87,7 +87,7 @@
      * @return
      */
     public OFVendorDataType lookupVendorDataType(int vendorDataType) {
-        return dataTypeMap.get(vendorDataType);
+        return dataTypeMap.get((long)vendorDataType);
     }
 
     /**
diff --git a/src/main/java/org/openflow/util/HexString.java b/src/main/java/org/openflow/util/HexString.java
index 07cc1f7..9a656dd 100644
--- a/src/main/java/org/openflow/util/HexString.java
+++ b/src/main/java/org/openflow/util/HexString.java
@@ -47,12 +47,12 @@
         int i = 0;
         for (; i < (padTo * 2 - arr.length); i++) {
             ret.append('0');
-            if ((i % 2) == 1)
+            if ((i & 1) == 1)
                 ret.append(':');
         }
         for (int j = 0; j < arr.length; j++) {
             ret.append(arr[j]);
-            if ((((i + j) % 2) == 1) && (j < (arr.length - 1)))
+            if ((((i + j) & 1) == 1) && (j < (arr.length - 1)))
                 ret.append(':');
         }
         return ret.toString();
diff --git a/src/test/java/net/floodlightcontroller/util/MACAddressTest.java b/src/test/java/net/floodlightcontroller/util/MACAddressTest.java
index 5669614..f19eedb 100644
--- a/src/test/java/net/floodlightcontroller/util/MACAddressTest.java
+++ b/src/test/java/net/floodlightcontroller/util/MACAddressTest.java
@@ -18,7 +18,7 @@
         address = MACAddress.valueOf("FF:FE:FD:10:20:30");
         assertEquals(address,
                 MACAddress.valueOf(new byte[]{(byte) 0xFF, (byte) 0xFE, (byte) 0xFD, 0x10, 0x20, 0x30}));
-        assertEquals("FF:FE:FD:10:20:30", address.toString());
+        assertEquals("ff:fe:fd:10:20:30", address.toString());
         
         address = MACAddress.valueOf("00:11:22:aa:bb:cc");
         assertEquals(address,
diff --git a/start-onos-embedded.sh b/start-onos-embedded.sh
index 6fc9362..c967419 100755
--- a/start-onos-embedded.sh
+++ b/start-onos-embedded.sh
@@ -36,6 +36,13 @@
 if [ -z "${MVN}" ]; then
     MVN="mvn"
 fi
+
+if [ ! -f ${ONOS_HOME}/.javacp ]; then
+  ${MVN} -f ${ONOS_HOME}/pom.xml compile
+fi
+JAVA_CP=`cat ${ONOS_HOME}/.javacp`
+JAVA_CP="${JAVA_CP}:${ONOS_HOME}/target/classes"
+
 #<logger name="net.floodlightcontroller.linkdiscovery.internal" level="TRACE"/>
 #<appender-ref ref="STDOUT" />
 
@@ -96,8 +103,7 @@
 
   # XXX MVN has to run at the project top dir..
   cd ${ONOS_HOME}
-  echo "${MVN} exec:exec -Dexec.executable=\"java\" -Dexec.args=\"${JVM_OPTS} -Dlogback.configurationFile=${ONOS_LOGBACK} -cp %classpath ${MAIN_CLASS} -cf ${ONOS_HOME}/conf/onos-embedded.properties\""
-  ${MVN} exec:exec -Dexec.executable="java" -Dexec.args="${JVM_OPTS} -Dlogback.configurationFile=${ONOS_LOGBACK} -cp %classpath ${MAIN_CLASS} -cf ${ONOS_HOME}/conf/onos-embedded.properties" > ${LOGDIR}/onos.stdout 2>${LOGDIR}/onos.stderr &
+  java ${JVM_OPTS} -Dlogback.configurationFile=${ONOS_LOGBACK} -cp ${JAVA_CP} ${MAIN_CLASS} -cf ${ONOS_HOME}/conf/onos-embedded.properties > ${LOGDIR}/onos.`hostname`.stdout 2>${LOGDIR}/onos.`hostname`.stderr &
 
   echo "Waiting for ONOS to start..."
   COUNT=0
@@ -160,6 +166,6 @@
     echo "$n instance of onos running"
     ;;
   *)
-    echo "Usage: $0 {start|stop|restart|status|startifdown}"
+    echo "Usage: $0 {start|stop|status|startifdown}"
     exit 1
 esac
diff --git a/start-onos-jacoco.sh b/start-onos-jacoco.sh
index 2e04216..2d1adf4 100755
--- a/start-onos-jacoco.sh
+++ b/start-onos-jacoco.sh
@@ -43,6 +43,12 @@
     MVN="mvn -o"
 fi
 
+if [ ! -f ${ONOS_HOME}/.javacp ]; then
+  ${MVN} -f ${ONOS_HOME}/pom.xml compile
+fi
+JAVA_CP=`cat ${ONOS_HOME}/.javacp`
+JAVA_CP="${JAVA_CP}:${ONOS_HOME}/target/classes"
+
 #<logger name="net.floodlightcontroller.linkdiscovery.internal" level="TRACE"/>
 #<appender-ref ref="STDOUT" />
 
@@ -106,10 +112,7 @@
   # XXX : MVN has to run at the project top dir 
   echo $ONOS_HOME
   cd ${ONOS_HOME}
-  pwd 
-  echo "${MVN} exec:exec -Dexec.executable=\"java\" -Dexec.args=\"${JVM_OPTS} -Dlogback.configurationFile=${ONOS_LOGBACK} -cp %classpath ${MAIN_CLASS} -cf ./conf/onos.properties\""
-
-  ${MVN} exec:exec -Dexec.executable="java" -Dexec.args="${JVM_OPTS} -Dlogback.configurationFile=${ONOS_LOGBACK} -cp %classpath ${MAIN_CLASS} -cf ./conf/onos.properties" > ${LOGDIR}/onos.`hostname`.stdout 2>${LOGDIR}/onos.`hostname`.stderr &
+  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
@@ -179,6 +182,6 @@
     echo "$n instance of onos running"
     ;;
   *)
-    echo "Usage: $0 {start|stop|restart|status|startifdown}"
+    echo "Usage: $0 {start|stop|status|startifdown}"
     exit 1
 esac
diff --git a/start-onos.sh b/start-onos.sh
index e2294fe..f4ebc7b 100755
--- a/start-onos.sh
+++ b/start-onos.sh
@@ -54,7 +54,6 @@
 JAVA_CP=`cat ${ONOS_HOME}/.javacp`
 JAVA_CP="${JAVA_CP}:${ONOS_HOME}/target/classes"
 
-
 #<logger name="net.floodlightcontroller.linkdiscovery.internal" level="TRACE"/>
 #<appender-ref ref="STDOUT" />
 
@@ -196,6 +195,6 @@
     echo "$n instance of onos running"
     ;;
   *)
-    echo "Usage: $0 {start|stop|restart|status|startifdown}"
+    echo "Usage: $0 {start|stop|status|startifdown}"
     exit 1
 esac
diff --git a/start-rest.sh b/start-rest.sh
index 01e7638..910eb41 100755
--- a/start-rest.sh
+++ b/start-rest.sh
@@ -73,6 +73,6 @@
     status
     ;;
   *)
-    echo "Usage: $0 {start|stop|restart|status}"
+    echo "Usage: $0 {start|stop|status}"
     exit 1
 esac
diff --git a/titan/gremlin.sh b/titan/gremlin.sh
index d5d5da4..b13264c 100755
--- a/titan/gremlin.sh
+++ b/titan/gremlin.sh
@@ -6,8 +6,6 @@
 
 BASE_DIR=`dirname $0`
 ONOS_DIR="`dirname $0`/.."
-#CP=$( echo `dirname $0`/../lib/*.jar `dirname $0`/../lib/titan/*.jar . | sed 's/ /:/g')
-#CP=`${MVN} -f ${ONOS_DIR}/pom.xml dependency:build-classpath -Dmdep.outputFile=/dev/stdout -l /dev/stderr`
 
 # Use a python script to parse the classpath out of the .classpath file
 if [ ! -f ${BASE_DIR}/../.javacp ]; then
diff --git a/web/floodlight/js/controller-status.js b/web/js/controller-status.js
similarity index 100%
rename from web/floodlight/js/controller-status.js
rename to web/js/controller-status.js
diff --git a/web/floodlight/js/jquery-1.7.2.min.js b/web/js/jquery-1.7.2.min.js
similarity index 100%
rename from web/floodlight/js/jquery-1.7.2.min.js
rename to web/js/jquery-1.7.2.min.js
diff --git a/web/floodlight/js/onos-topology-route.js b/web/js/onos-topology-route.js
similarity index 100%
rename from web/floodlight/js/onos-topology-route.js
rename to web/js/onos-topology-route.js
diff --git a/web/floodlight/js/onos-topology.js b/web/js/onos-topology.js
similarity index 100%
rename from web/floodlight/js/onos-topology.js
rename to web/js/onos-topology.js
diff --git a/web/onos-topology.html b/web/onos-topology.html
index d72c0e1..5834521 100644
--- a/web/onos-topology.html
+++ b/web/onos-topology.html
@@ -24,7 +24,7 @@
 <button id="more">more</button>
 <button id="less">less</button>
 --!>
-<svg width="4in" height="2in" 
+<svg width="0.1in" height="0.1in" 
      viewBox="0 0 4000 2000" version="1.1"
      xmlns="http://www.w3.org/2000/svg">
   <defs>