diff --git a/.gitignore b/.gitignore
index 88f7bb1..c9e6bc1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,5 @@
 target
 onos-logs
 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 f7bf388..39e9f30 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,6 +11,12 @@
   <name>ONOS</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>
@@ -265,6 +265,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 40f5044..932d422 100644
--- a/src/main/java/net/onrc/onos/graph/LocalTopologyEventListener.java
+++ b/src/main/java/net/onrc/onos/graph/LocalTopologyEventListener.java
@@ -38,7 +38,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 b084be6..ee08177 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
@@ -231,8 +231,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());
 			}
 		}      		 
 
@@ -333,8 +333,10 @@
 				onosDevice.getSwitchDPID()), onosDevice.getSwitchPort());
 
 		if ((portObject1 != null) && portObject1.getLinkedPorts().iterator().hasNext()) {
-			log.debug("stop adding OnosDevice: {} due to there is a link to: {}",
-					onosDevice, portObject1.getLinkedPorts().iterator().next().getPortId());
+			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 a9088de..5818462 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
@@ -477,7 +477,7 @@
 				vportSrc.setLinkPort(vportDst);
 				success = true;
 			} else {
-				log.debug("LinkStorageImpl:addLinkImpl failed link exists {} {} src {} dst {}", 
+				log.debug("LinkStorageImpl:addLinkImpl failed link exists {} {} src {} dst {}",
 						new Object[]{op, lt, vportSrc, vportDst});
 			}
 		}
@@ -500,13 +500,13 @@
 	 	vportDst = op.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 a92ab72..be015d3 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
@@ -169,7 +169,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;
@@ -202,7 +202,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;
@@ -253,7 +253,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;
@@ -407,7 +407,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 05ab39d..68c2b7c 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;
@@ -65,24 +65,26 @@
 	//protected IDeviceService deviceService;
 	protected IControllerRegistryService registryService;
 	protected GraphDBOperation op;
-	
+
 	protected static final String DBConfigFile = "dbconf";
 	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");
                 switchCleanup();
@@ -93,6 +95,7 @@
             	op.close();
                     cleanupTask.reschedule(CLEANUP_TASK_INTERVAL,
                                               TimeUnit.SECONDS);
+                Thread.currentThread().setName(old);
             }
         }
 
@@ -112,7 +115,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
@@ -142,14 +145,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) {
@@ -247,7 +250,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());
@@ -322,7 +325,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());
@@ -408,7 +411,7 @@
 	public void deviceVlanChanged(IDevice device) {
 		// TODO Auto-generated method stub
 	}
-	
+
 
 	@Override
 	public Collection<Class<? extends IFloodlightService>> getModuleServices() {
@@ -445,7 +448,7 @@
 		Map<String, String> configMap = context.getConfigParams(this);
 		String conf = configMap.get(DBConfigFile);
 		op = new GraphDBOperation(conf);
-		
+
 		floodlightProvider =
 	            context.getServiceImpl(IFloodlightProviderService.class);
 		//deviceService = context.getServiceImpl(IDeviceService.class);
@@ -453,18 +456,18 @@
 		threadPool = context.getServiceImpl(IThreadPoolService.class);
 		registryService = context.getServiceImpl(IControllerRegistryService.class);
 		datagridService = context.getServiceImpl(IDatagridService.class);
-		
+
 		devStore = new DeviceStorageImpl();
 		devStore.init(conf);
-		
+
 		swStore = new SwitchStorageImpl();
 		swStore.init(conf);
-		
+
 		linkStore = new LinkStorageImpl();
 		linkStore.init(conf);
-				
+
 		log.debug("Initializing NetworkGraphPublisher module with {}", conf);
-		
+
 	}
 
 	@Override
@@ -475,11 +478,11 @@
 		//deviceService.addListener(this);
 		floodlightProvider.addOFSwitchListener(this);
 		linkDiscovery.addListener(this);
-		
+
 		log.debug("Adding EventListener");
 		IDBConnection conn = op.getDBConnection();
 		conn.addEventListener(new LocalTopologyEventListener((GraphDBConnection) conn));
-	       // Setup the Cleanup task. 
+	       // Setup the Cleanup task.
 		if (cleanupNeeded == null || !cleanupNeeded.equals("False")) {
 				ScheduledExecutorService ses = threadPool.getScheduledExecutor();
 				cleanupTask = new SingletonTask(ses, new SwitchCleanup());
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 9969cfc..e075bad 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowDatabaseOperation.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowDatabaseOperation.java
@@ -49,13 +49,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;
 	}
@@ -205,12 +205,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;
 	}
 
@@ -344,7 +344,7 @@
 	    flowEntryObj = dbHandler.searchFlowEntry(flowEntry.flowEntryId());
 	} catch (Exception e) {
 	    log.error(":deleteFlowEntry FlowEntryId:{} failed",
-		      flowEntry.flowEntryId().toString());
+		      flowEntry.flowEntryId());
 	    return false;
 	}
 	//
@@ -354,7 +354,7 @@
 	/*
 	if (flowEntryObj == null) {
 	    log.error(":deleteFlowEntry FlowEntryId:{} failed: FlowEntry object not found",
-		      flowEntry.flowEntryId().toString());
+		      flowEntry.flowEntryId());
 	    return false;
 	}
 	*/
@@ -409,7 +409,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) {
@@ -446,7 +446,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 cc92ccd..02e3210 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java
@@ -89,6 +89,7 @@
     /**
      * Shutdown the Flow Manager operation.
      */
+    @Override
     public void finalize() {
     	close();
     }
@@ -110,7 +111,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;
@@ -122,7 +123,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 =
@@ -138,7 +139,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>>();
@@ -368,6 +369,7 @@
      *
      * @return the network topology.
      */
+    @Override
     public Topology getTopology() {
 	return flowEventHandler.getTopology();
     }
@@ -378,6 +380,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
@@ -406,6 +409,7 @@
      * @param entries the collection of <IOFSwitch, FlowEntry> pairs
      * that have been pushed.
      */
+    @Override
     public void flowEntriesPushedToSwitch(
 		Collection<Pair<IOFSwitch, FlowEntry>> entries) {
 
@@ -529,7 +533,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));
 	}
 
@@ -575,7 +579,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
@@ -612,6 +616,7 @@
 	    // The main loop
 	    //
 	    Collection<FlowPath> collection = new LinkedList<FlowPath>();
+	    this.setName("FlowDatabaseWriter " + this.getId() );
 	    try {
 		while (true) {
 		    FlowPath flowPath = blockingQueue.take();
@@ -688,8 +693,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 {
@@ -735,7 +739,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
@@ -745,9 +749,7 @@
 		retry = false;
 		try {
 		    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;
 		    }
 		} catch (TitanException te) {
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 6ef44be..740e782 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 2ea49a9..70533b0 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/proxyarp/ProxyArpManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/proxyarp/ProxyArpManager.java
@@ -231,7 +231,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();
@@ -358,10 +360,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/start-onos-embedded.sh b/start-onos-embedded.sh
index 0e9af68..c967419 100755
--- a/start-onos-embedded.sh
+++ b/start-onos-embedded.sh
@@ -103,7 +103,7 @@
 
   # XXX MVN has to run at the project top dir..
   cd ${ONOS_HOME}
-  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 &
+  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
