diff --git a/build.xml b/build.xml
index 0f97f63306fe1d76a459e998bbfa036f1fb75e5c..ab4bffc7d817b536c08df37fbfef4ccc36831185 100644
--- a/build.xml
+++ b/build.xml
@@ -26,7 +26,7 @@
     generated code.
 -->
 
-<project default="dist" name="Floodlight">
+<project default="dist" name="floodlight">
     <property name="target" location="target"/>
     <property name="build" location="${target}/bin"/>
     <property name="build-test" location="${target}/bin-test"/>
@@ -82,6 +82,15 @@
         </fileset>
     </path>
 
+    <patternset id="lib-package">
+        <include name="jdeb-1.0.1.jar"/>
+    </patternset>
+    <path id="package-classpath">
+        <fileset dir="${lib}">
+            <patternset refid="lib-package"/>
+        </fileset>
+    </path>
+
     <patternset id="lib-cobertura">
         <include name="cobertura-1.9.4.1.jar"/>
         <include name="asm-3.0.jar"/>
@@ -268,6 +277,46 @@
         </jar>
     </target>
 
+    <target name="package"> <!-- depends="dist" //-->
+      <taskdef name="deb" 
+	       classname="org.vafer.jdeb.ant.DebAntTask" 
+	       classpathref="package-classpath"/>
+
+      <copy todir="${target}/debian">
+	<fileset dir="debian"/>
+	<filterset begintoken="[[" endtoken="]]">
+	  <filter token="version" value="1.9.0"/>
+	  <filter token="name" value="${ant.project.name}"/>
+	</filterset>
+      </copy>
+
+      <deb destfile="${target}/floodlight-1.9.0.deb" 
+	   control="${target}/debian/control">
+	<data src="${floodlight-jar}" type="file">
+	  <mapper type="perm" prefix="/usr/share/floodlight/java"/>
+	</data>
+	<tarfileset dir="debian/misc/bin" prefix="/usr/bin" filemode="755"/>
+	<data src="debian/misc/logrotate/floodlight" type="file">
+	  <mapper type="perm" prefix="/etc/logrotate.d"/>
+	</data>
+	<data src="debian/misc/init/floodlight.conf" type="file">
+	  <mapper type="perm" prefix="/etc/init"/>
+	</data>
+	<data src="debian/misc/logback.xml" type="file">
+	  <mapper type="perm" prefix="/etc/floodlight"/>
+	</data>
+	<data src="debian/misc/rsyslog/10-floodlight.conf" type="file">
+	  <mapper type="perm" prefix="/etc/rsyslog.d"/>
+	</data>
+	<data src="debian/misc/default/floodlight" type="file">
+	  <mapper type="perm" prefix="/etc/default"/>
+	</data>
+	<data src="src/main/resources/floodlightdefault.properties" type="file">
+	  <mapper type="perm" prefix="/etc/floodlight"/>
+	</data>
+      </deb>
+    </target>
+
     <target name="javadoc">
         <javadoc access="protected"
             author="true"
diff --git a/debian/control/control b/debian/control/control
new file mode 100644
index 0000000000000000000000000000000000000000..088e7529f87c41b8c7cb9c81fdab10170f9b06e4
--- /dev/null
+++ b/debian/control/control
@@ -0,0 +1,14 @@
+Package: [[name]]
+Version: [[version]]
+Section: net
+Priority: low
+Maintainer: rob.adams@bigswitch.com
+Architecture: all
+Depends: adduser,
+ default-jre-headless | java6-runtime-headless
+Description: Floodlight is a high performance Java based OpenFlow controller originally
+ written by David Erickson at Stanford University.
+ .
+ Floodlight supports a broad range of virtual and physical OpenFlow switches
+ and has rich support for mixed OpenFlow and non-OpenFlow networks supporting
+ management of multiple islands of OpenFlow switches.
diff --git a/debian/control/dirs b/debian/control/dirs
new file mode 100644
index 0000000000000000000000000000000000000000..262b10f9a89f13c810736c90be22800af96bfdaa
--- /dev/null
+++ b/debian/control/dirs
@@ -0,0 +1,2 @@
+/var/log/floodlight
+/var/lib/floodlight
diff --git a/debian/control/floodlight.1 b/debian/control/floodlight.1
new file mode 100644
index 0000000000000000000000000000000000000000..80635073d7d13a860e182ac53853246ddeb9e188
--- /dev/null
+++ b/debian/control/floodlight.1
@@ -0,0 +1,40 @@
+.\"                                      Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH FLOODLIGHT 1 "May 14, 2012"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+floodlight \- An Apache licensed, Java based OpenFlow controller
+.SH SYNOPSIS
+.B floodlight
+.RI [ options ]
+.SH DESCRIPTION
+This manual page documents briefly the
+.B floodlight
+command.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" respectively.
+\fBfloodlight\fP is an Apache licensed, Java based OpenFlow controller.
+.SH OPTIONS
+.TP
+.B \-cf, \-\-configFile FILE
+Floodlight configuration file.
+.SH AUTHOR
+floodlight was written by David Erickson and Big Switch Networks.
+.PP
+This manual page was written by Rich Lane <rlane@bigswitch.com>,
+for the Debian project (and may be used by others).
diff --git a/debian/control/floodlight.upstart b/debian/control/floodlight.upstart
new file mode 100644
index 0000000000000000000000000000000000000000..cf06c8e1799046da37420d7c46297c9ae8421929
--- /dev/null
+++ b/debian/control/floodlight.upstart
@@ -0,0 +1,26 @@
+# floodlight - A Java-based OpenFlow controller
+#
+# The Floodlight program configures network switches using the OpenFlow protocol.
+# vim: set filetype=upstart :
+
+description	"Floodlight controller"
+
+start on filesystem or runlevel [2345]
+stop on runlevel [!2345]
+
+setuid floodlight
+setgid floodlight
+
+respawn
+
+pre-start script
+    [ -f /usr/share/floodlight/java/floodlight.jar ] || exit 0
+end script
+
+script
+    . /etc/default/floodlight
+    exec java ${JVM_OPTS} -Dpython.home=/usr/share/jython \
+        -Dlogback.configurationFile=/etc/floodlight/logback.xml \
+        -jar /usr/share/floodlight/java/floodlight.jar \
+        $DAEMON_OPTS 2>&1 >> /var/log/floodlight/floodlight.log
+end script
diff --git a/debian/control/manpages b/debian/control/manpages
new file mode 100644
index 0000000000000000000000000000000000000000..bec775d2741b6ae5db26abc89c80c7f41cd13f97
--- /dev/null
+++ b/debian/control/manpages
@@ -0,0 +1 @@
+debian/floodlight.1
diff --git a/debian/control/postinst b/debian/control/postinst
new file mode 100644
index 0000000000000000000000000000000000000000..a5f3176a54fdec4d2768d8df61872f5bf61003ea
--- /dev/null
+++ b/debian/control/postinst
@@ -0,0 +1,33 @@
+#!/bin/sh -e
+
+NAME=floodlight
+
+case "$1" in
+    configure)
+        if ! id $NAME > /dev/null 2>&1 ; then
+            adduser --quiet --group --system --disabled-password \
+                --no-create-home --home /dev/null $NAME
+        fi
+	mkdir -p /var/log/floodlight
+	mkdir -p /var/lib/floodlight
+        chown -R $NAME:$NAME /var/log/floodlight
+        chown -R $NAME:$NAME /var/lib/floodlight
+        if [ ! -f /etc/floodlight/auth_credentials.jceks ]; then
+            authtool -a CHALLENGE_RESPONSE \
+                -ks /etc/floodlight/auth_credentials.jceks \
+                -kp dcbc178a0a3a8674f048ac86372ac456
+        fi
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/control/postrm b/debian/control/postrm
new file mode 100644
index 0000000000000000000000000000000000000000..79466b46e9eae5232778991aa4ead511c5c4dca5
--- /dev/null
+++ b/debian/control/postrm
@@ -0,0 +1,24 @@
+#!/bin/sh -e
+
+NAME=floodlight
+
+case "$1" in
+    purge)
+        deluser --quiet --system $NAME || true
+        delgroup --quiet --system $NAME || true
+	rm -f /etc/floodlight/auth_credentials.jceks
+	rm -rf /var/lib/floodlight/SyncDB
+    ;;
+
+    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+    ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/misc/bin/authtool b/debian/misc/bin/authtool
new file mode 100644
index 0000000000000000000000000000000000000000..978f3d7899b1eaaf54173f014bff93cc15e18af8
--- /dev/null
+++ b/debian/misc/bin/authtool
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec java -cp /usr/share/floodlight/java/floodlight.jar org.sdnplatform.sync.client.AuthTool "$@"
diff --git a/debian/misc/bin/bootstraptool b/debian/misc/bin/bootstraptool
new file mode 100644
index 0000000000000000000000000000000000000000..2ea61c566795d094b6cd99a48f9b24b06f5c87b2
--- /dev/null
+++ b/debian/misc/bin/bootstraptool
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec java -cp /usr/share/floodlight/java/floodlight.jar org.sdnplatform.sync.client.BootstrapTool "$@"
diff --git a/debian/misc/bin/floodlight b/debian/misc/bin/floodlight
new file mode 100755
index 0000000000000000000000000000000000000000..c1fc4548b846bcb4c4caced408d0e05f310317be
--- /dev/null
+++ b/debian/misc/bin/floodlight
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec java -cp /usr/share/floodlight/java/floodlight.jar net.floodlightcontroller.core.Main "$@"
diff --git a/debian/misc/bin/syncclient b/debian/misc/bin/syncclient
new file mode 100644
index 0000000000000000000000000000000000000000..825cb268255544fdabb59c40c10b898674cefabb
--- /dev/null
+++ b/debian/misc/bin/syncclient
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec java -cp /usr/share/floodlight/java/floodlight.jar org.sdnplatform.sync.client.SyncClient "$@"
diff --git a/debian/misc/default/floodlight b/debian/misc/default/floodlight
new file mode 100644
index 0000000000000000000000000000000000000000..acac914e7d8843a842c2593010abba3abe80bc8c
--- /dev/null
+++ b/debian/misc/default/floodlight
@@ -0,0 +1,18 @@
+# Options to pass to Floodlight.
+DAEMON_OPTS="-cf /etc/floodlight/floodlightdefault.properties"
+# Additional options to pass to the JVM
+JVM_OPTS=""
+# Sample performance options taken from upstream
+JVM_OPTS="-server"
+JVM_OPTS="$JVM_OPTS -ea"
+JVM_OPTS="$JVM_OPTS -XX:MaxDirectMemorySize=128M"
+JVM_OPTS="$JVM_OPTS -XX:+UseParNewGC"
+JVM_OPTS="$JVM_OPTS -XX:+UseConcMarkSweepGC"
+JVM_OPTS="$JVM_OPTS -XX:+CMSParallelRemarkEnabled"
+JVM_OPTS="$JVM_OPTS -XX:OnError='kill -9 %p'"
+JVM_OPTS="$JVM_OPTS -XX:OnOutOfMemoryError='kill -9 %p'"
+JVM_OPTS="$JVM_OPTS -Dpython.security.respectJavaAccessibility=false"
+JVM_OPTS="$JVM_OPTS -Dnet.floodlightcontroller.packetstreamer.port=9090"
+JVM_OPTS="$JVM_OPTS -Dlogback.configurationFile=/etc/floodlight/logback.xml"
+JVM_OPTS="$JVM_OPTS -Dnet.floodlightcontroller.core.PTWarningThresholdInMilli=0"
+JVM_OPTS="$JVM_OPTS -Dcom.bigswitch.floodlight.addressspace.EnableNetworkService=0"
diff --git a/debian/misc/init/floodlight.conf b/debian/misc/init/floodlight.conf
new file mode 100644
index 0000000000000000000000000000000000000000..4b58aa2c58d926d8fb727ab866a0b15429862308
--- /dev/null
+++ b/debian/misc/init/floodlight.conf
@@ -0,0 +1,14 @@
+start on runlevel [2345]
+stop on runlevel [!2345]
+respawn
+kill timeout 30
+setuid floodlight
+setgid floodlight
+
+script
+    if [ -f /etc/default/floodlight ]; then
+	. /etc/default/floodlight
+    fi
+    COMMAND="java ${JVM_OPTS} -cp /usr/share/floodlight/java/floodlight.jar net.floodlightcontroller.core.Main ${DAEMON_OPTS}"
+    exec /bin/bash -c "${COMMAND} 2>&1 | /usr/bin/logger -t floodlight -p user.info"
+end script
diff --git a/debian/misc/logback.xml b/debian/misc/logback.xml
new file mode 100644
index 0000000000000000000000000000000000000000..18733bb71278dc76e60187eed8212b9438204b4b
--- /dev/null
+++ b/debian/misc/logback.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<configuration scan="true">
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <encoder>
+      <pattern>%level [%logger{20}:%thread] %msg%n</pattern>
+    </encoder>
+  </appender>
+  <root level="INFO">
+    <appender-ref ref="STDOUT"/>
+  </root>
+  <logger name="org" level="WARN"/>
+  <logger name="LogService" level="WARN"/> <!-- Restlet access logging -->
+  <logger name="net.floodlightcontroller" level="INFO"/>
+  <logger name="org.sdnplatform" level="INFO"/>
+</configuration>
diff --git a/debian/misc/logrotate/floodlight b/debian/misc/logrotate/floodlight
new file mode 100644
index 0000000000000000000000000000000000000000..9ce9078a85dcfb3c7dcba955c90573366b5bd326
--- /dev/null
+++ b/debian/misc/logrotate/floodlight
@@ -0,0 +1,9 @@
+/var/log/floodlight/floodlight.log {
+    daily 
+    copytruncate
+    missingok
+    rotate 7
+    compress
+    delaycompress
+    notifempty
+}
diff --git a/debian/misc/rsyslog/10-floodlight.conf b/debian/misc/rsyslog/10-floodlight.conf
new file mode 100644
index 0000000000000000000000000000000000000000..5bcc8f25fe6355a4328441f473e78a08e877c451
--- /dev/null
+++ b/debian/misc/rsyslog/10-floodlight.conf
@@ -0,0 +1,3 @@
+!floodlight
+*.* /var/log/floodlight.log
+!*
diff --git a/lib/jdeb-1.0.1.jar b/lib/jdeb-1.0.1.jar
new file mode 100644
index 0000000000000000000000000000000000000000..edef380c742c99178d03cd4ebd0cddc6aea5ab60
Binary files /dev/null and b/lib/jdeb-1.0.1.jar differ
diff --git a/src/main/resources/floodlightdefault.properties b/src/main/resources/floodlightdefault.properties
index c6c5afcf0ba9ea950f6e26143a366766ab9cf716..188e1b2c2757e38d32450fc3cec9433b93f24795 100644
--- a/src/main/resources/floodlightdefault.properties
+++ b/src/main/resources/floodlightdefault.properties
@@ -22,3 +22,7 @@ net.floodlightcontroller.core.internal.FloodlightProvider.openflowport = 6633
 net.floodlightcontroller.jython.JythonDebugInterface.port = 6655
 net.floodlightcontroller.forwarding.Forwarding.idletimeout = 5
 net.floodlightcontroller.forwarding.Forwarding.hardtimeout = 0
+org.sdnplatform.sync.internal.SyncManager.dbPath=/var/lib/floodlight/
+org.sdnplatform.sync.internal.SyncManager.authScheme=CHALLENGE_RESPONSE
+org.sdnplatform.sync.internal.SyncManager.keyStorePath=/etc/floodlight/auth_credentials.jceks
+org.sdnplatform.sync.internal.SyncManager.keyStorePassword=dcbc178a0a3a8674f048ac86372ac456