diff --git a/src/ext/floodlight/build.xml b/build.xml
similarity index 100%
rename from src/ext/floodlight/build.xml
rename to build.xml
diff --git a/doc/readme b/doc/readme
deleted file mode 100644
index e69de29..0000000
--- a/doc/readme
+++ /dev/null
diff --git a/lib/gen-java/net/floodlightcontroller/packetstreamer/thrift/Constants.java b/lib/gen-java/net/floodlightcontroller/packetstreamer/thrift/Constants.java
new file mode 100644
index 0000000..d1ef80b
--- /dev/null
+++ b/lib/gen-java/net/floodlightcontroller/packetstreamer/thrift/Constants.java
@@ -0,0 +1,27 @@
+/**
+ * Autogenerated by Thrift Compiler (0.7.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ */
+package net.floodlightcontroller.packetstreamer.thrift;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings("all") public class Constants {
+
+  public static final String VERSION = "0.1.0";
+
+}
diff --git a/lib/gen-java/net/floodlightcontroller/packetstreamer/thrift/Message.java b/lib/gen-java/net/floodlightcontroller/packetstreamer/thrift/Message.java
new file mode 100644
index 0000000..8e4d989
--- /dev/null
+++ b/lib/gen-java/net/floodlightcontroller/packetstreamer/thrift/Message.java
@@ -0,0 +1,446 @@
+/**
+ * Autogenerated by Thrift Compiler (0.7.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ */
+package net.floodlightcontroller.packetstreamer.thrift;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings("all") public class Message implements org.apache.thrift.TBase<Message, Message._Fields>, java.io.Serializable, Cloneable {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Message");
+
+  private static final org.apache.thrift.protocol.TField SESSION_IDS_FIELD_DESC = new org.apache.thrift.protocol.TField("sessionIDs", org.apache.thrift.protocol.TType.LIST, (short)1);
+  private static final org.apache.thrift.protocol.TField PACKET_FIELD_DESC = new org.apache.thrift.protocol.TField("packet", org.apache.thrift.protocol.TType.STRUCT, (short)2);
+
+  public List<String> sessionIDs; // required
+  public Packet packet; // required
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    SESSION_IDS((short)1, "sessionIDs"),
+    PACKET((short)2, "packet");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // SESSION_IDS
+          return SESSION_IDS;
+        case 2: // PACKET
+          return PACKET;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.SESSION_IDS, new org.apache.thrift.meta_data.FieldMetaData("sessionIDs", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
+    tmpMap.put(_Fields.PACKET, new org.apache.thrift.meta_data.FieldMetaData("packet", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Packet.class)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(Message.class, metaDataMap);
+  }
+
+  public Message() {
+  }
+
+  public Message(
+    List<String> sessionIDs,
+    Packet packet)
+  {
+    this();
+    this.sessionIDs = sessionIDs;
+    this.packet = packet;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public Message(Message other) {
+    if (other.isSetSessionIDs()) {
+      List<String> __this__sessionIDs = new ArrayList<String>();
+      for (String other_element : other.sessionIDs) {
+        __this__sessionIDs.add(other_element);
+      }
+      this.sessionIDs = __this__sessionIDs;
+    }
+    if (other.isSetPacket()) {
+      this.packet = new Packet(other.packet);
+    }
+  }
+
+  public Message deepCopy() {
+    return new Message(this);
+  }
+
+  @Override
+  public void clear() {
+    this.sessionIDs = null;
+    this.packet = null;
+  }
+
+  public int getSessionIDsSize() {
+    return (this.sessionIDs == null) ? 0 : this.sessionIDs.size();
+  }
+
+  public java.util.Iterator<String> getSessionIDsIterator() {
+    return (this.sessionIDs == null) ? null : this.sessionIDs.iterator();
+  }
+
+  public void addToSessionIDs(String elem) {
+    if (this.sessionIDs == null) {
+      this.sessionIDs = new ArrayList<String>();
+    }
+    this.sessionIDs.add(elem);
+  }
+
+  public List<String> getSessionIDs() {
+    return this.sessionIDs;
+  }
+
+  public Message setSessionIDs(List<String> sessionIDs) {
+    this.sessionIDs = sessionIDs;
+    return this;
+  }
+
+  public void unsetSessionIDs() {
+    this.sessionIDs = null;
+  }
+
+  /** Returns true if field sessionIDs is set (has been assigned a value) and false otherwise */
+  public boolean isSetSessionIDs() {
+    return this.sessionIDs != null;
+  }
+
+  public void setSessionIDsIsSet(boolean value) {
+    if (!value) {
+      this.sessionIDs = null;
+    }
+  }
+
+  public Packet getPacket() {
+    return this.packet;
+  }
+
+  public Message setPacket(Packet packet) {
+    this.packet = packet;
+    return this;
+  }
+
+  public void unsetPacket() {
+    this.packet = null;
+  }
+
+  /** Returns true if field packet is set (has been assigned a value) and false otherwise */
+  public boolean isSetPacket() {
+    return this.packet != null;
+  }
+
+  public void setPacketIsSet(boolean value) {
+    if (!value) {
+      this.packet = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case SESSION_IDS:
+      if (value == null) {
+        unsetSessionIDs();
+      } else {
+        setSessionIDs((List<String>)value);
+      }
+      break;
+
+    case PACKET:
+      if (value == null) {
+        unsetPacket();
+      } else {
+        setPacket((Packet)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case SESSION_IDS:
+      return getSessionIDs();
+
+    case PACKET:
+      return getPacket();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case SESSION_IDS:
+      return isSetSessionIDs();
+    case PACKET:
+      return isSetPacket();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof Message)
+      return this.equals((Message)that);
+    return false;
+  }
+
+  public boolean equals(Message that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_sessionIDs = true && this.isSetSessionIDs();
+    boolean that_present_sessionIDs = true && that.isSetSessionIDs();
+    if (this_present_sessionIDs || that_present_sessionIDs) {
+      if (!(this_present_sessionIDs && that_present_sessionIDs))
+        return false;
+      if (!this.sessionIDs.equals(that.sessionIDs))
+        return false;
+    }
+
+    boolean this_present_packet = true && this.isSetPacket();
+    boolean that_present_packet = true && that.isSetPacket();
+    if (this_present_packet || that_present_packet) {
+      if (!(this_present_packet && that_present_packet))
+        return false;
+      if (!this.packet.equals(that.packet))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    return 0;
+  }
+
+  public int compareTo(Message other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+    Message typedOther = (Message)other;
+
+    lastComparison = Boolean.valueOf(isSetSessionIDs()).compareTo(typedOther.isSetSessionIDs());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetSessionIDs()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.sessionIDs, typedOther.sessionIDs);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetPacket()).compareTo(typedOther.isSetPacket());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetPacket()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.packet, typedOther.packet);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    org.apache.thrift.protocol.TField field;
+    iprot.readStructBegin();
+    while (true)
+    {
+      field = iprot.readFieldBegin();
+      if (field.type == org.apache.thrift.protocol.TType.STOP) { 
+        break;
+      }
+      switch (field.id) {
+        case 1: // SESSION_IDS
+          if (field.type == org.apache.thrift.protocol.TType.LIST) {
+            {
+              org.apache.thrift.protocol.TList _list0 = iprot.readListBegin();
+              this.sessionIDs = new ArrayList<String>(_list0.size);
+              for (int _i1 = 0; _i1 < _list0.size; ++_i1)
+              {
+                String _elem2; // required
+                _elem2 = iprot.readString();
+                this.sessionIDs.add(_elem2);
+              }
+              iprot.readListEnd();
+            }
+          } else { 
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+          }
+          break;
+        case 2: // PACKET
+          if (field.type == org.apache.thrift.protocol.TType.STRUCT) {
+            this.packet = new Packet();
+            this.packet.read(iprot);
+          } else { 
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+          }
+          break;
+        default:
+          org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+      }
+      iprot.readFieldEnd();
+    }
+    iprot.readStructEnd();
+
+    // check for required fields of primitive type, which can't be checked in the validate method
+    validate();
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    validate();
+
+    oprot.writeStructBegin(STRUCT_DESC);
+    if (this.sessionIDs != null) {
+      oprot.writeFieldBegin(SESSION_IDS_FIELD_DESC);
+      {
+        oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, this.sessionIDs.size()));
+        for (String _iter3 : this.sessionIDs)
+        {
+          oprot.writeString(_iter3);
+        }
+        oprot.writeListEnd();
+      }
+      oprot.writeFieldEnd();
+    }
+    if (this.packet != null) {
+      oprot.writeFieldBegin(PACKET_FIELD_DESC);
+      this.packet.write(oprot);
+      oprot.writeFieldEnd();
+    }
+    oprot.writeFieldStop();
+    oprot.writeStructEnd();
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("Message(");
+    boolean first = true;
+
+    sb.append("sessionIDs:");
+    if (this.sessionIDs == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.sessionIDs);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("packet:");
+    if (this.packet == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.packet);
+    }
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+}
+
diff --git a/lib/gen-java/net/floodlightcontroller/packetstreamer/thrift/OFMessageType.java b/lib/gen-java/net/floodlightcontroller/packetstreamer/thrift/OFMessageType.java
new file mode 100644
index 0000000..b9b2843
--- /dev/null
+++ b/lib/gen-java/net/floodlightcontroller/packetstreamer/thrift/OFMessageType.java
@@ -0,0 +1,102 @@
+/**
+ * Autogenerated by Thrift Compiler (0.7.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ */
+package net.floodlightcontroller.packetstreamer.thrift;
+
+
+import java.util.Map;
+import java.util.HashMap;
+import org.apache.thrift.TEnum;
+
+/**
+ * OFMessage type
+ * 
+ */
+@SuppressWarnings("all") public enum OFMessageType implements org.apache.thrift.TEnum {
+  HELLO(0),
+  ERROR(1),
+  ECHO_REQUEST(2),
+  ECHO_REPLY(3),
+  VENDOR(4),
+  FEATURES_REQUEST(5),
+  FEATURES_REPLY(6),
+  GET_CONFIG_REQUEST(7),
+  GET_CONFIG_REPLY(8),
+  SET_CONFIG(9),
+  PACKET_IN(10),
+  FLOW_REMOVED(11),
+  PORT_STATUS(12),
+  PACKET_OUT(13),
+  FLOW_MOD(14),
+  PORT_MOD(15),
+  STATS_REQUEST(16),
+  STATS_REPLY(17),
+  BARRIER_REQUEST(18),
+  BARRIER_REPLY(19);
+
+  private final int value;
+
+  private OFMessageType(int value) {
+    this.value = value;
+  }
+
+  /**
+   * Get the integer value of this enum value, as defined in the Thrift IDL.
+   */
+  public int getValue() {
+    return value;
+  }
+
+  /**
+   * Find a the enum type by its integer value, as defined in the Thrift IDL.
+   * @return null if the value is not found.
+   */
+  public static OFMessageType findByValue(int value) { 
+    switch (value) {
+      case 0:
+        return HELLO;
+      case 1:
+        return ERROR;
+      case 2:
+        return ECHO_REQUEST;
+      case 3:
+        return ECHO_REPLY;
+      case 4:
+        return VENDOR;
+      case 5:
+        return FEATURES_REQUEST;
+      case 6:
+        return FEATURES_REPLY;
+      case 7:
+        return GET_CONFIG_REQUEST;
+      case 8:
+        return GET_CONFIG_REPLY;
+      case 9:
+        return SET_CONFIG;
+      case 10:
+        return PACKET_IN;
+      case 11:
+        return FLOW_REMOVED;
+      case 12:
+        return PORT_STATUS;
+      case 13:
+        return PACKET_OUT;
+      case 14:
+        return FLOW_MOD;
+      case 15:
+        return PORT_MOD;
+      case 16:
+        return STATS_REQUEST;
+      case 17:
+        return STATS_REPLY;
+      case 18:
+        return BARRIER_REQUEST;
+      case 19:
+        return BARRIER_REPLY;
+      default:
+        return null;
+    }
+  }
+}
diff --git a/lib/gen-java/net/floodlightcontroller/packetstreamer/thrift/Packet.java b/lib/gen-java/net/floodlightcontroller/packetstreamer/thrift/Packet.java
new file mode 100644
index 0000000..65c140f
--- /dev/null
+++ b/lib/gen-java/net/floodlightcontroller/packetstreamer/thrift/Packet.java
@@ -0,0 +1,525 @@
+/**
+ * Autogenerated by Thrift Compiler (0.7.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ */
+package net.floodlightcontroller.packetstreamer.thrift;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings("all") public class Packet implements org.apache.thrift.TBase<Packet, Packet._Fields>, java.io.Serializable, Cloneable {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Packet");
+
+  private static final org.apache.thrift.protocol.TField MESSAGE_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("messageType", org.apache.thrift.protocol.TType.I32, (short)1);
+  private static final org.apache.thrift.protocol.TField SW_PORT_TUPLE_FIELD_DESC = new org.apache.thrift.protocol.TField("swPortTuple", org.apache.thrift.protocol.TType.STRUCT, (short)2);
+  private static final org.apache.thrift.protocol.TField DATA_FIELD_DESC = new org.apache.thrift.protocol.TField("data", org.apache.thrift.protocol.TType.STRING, (short)3);
+
+  /**
+   * 
+   * @see OFMessageType
+   */
+  public OFMessageType messageType; // required
+  public SwitchPortTuple swPortTuple; // required
+  public ByteBuffer data; // required
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    /**
+     * 
+     * @see OFMessageType
+     */
+    MESSAGE_TYPE((short)1, "messageType"),
+    SW_PORT_TUPLE((short)2, "swPortTuple"),
+    DATA((short)3, "data");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // MESSAGE_TYPE
+          return MESSAGE_TYPE;
+        case 2: // SW_PORT_TUPLE
+          return SW_PORT_TUPLE;
+        case 3: // DATA
+          return DATA;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.MESSAGE_TYPE, new org.apache.thrift.meta_data.FieldMetaData("messageType", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, OFMessageType.class)));
+    tmpMap.put(_Fields.SW_PORT_TUPLE, new org.apache.thrift.meta_data.FieldMetaData("swPortTuple", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, SwitchPortTuple.class)));
+    tmpMap.put(_Fields.DATA, new org.apache.thrift.meta_data.FieldMetaData("data", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING        , true)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(Packet.class, metaDataMap);
+  }
+
+  public Packet() {
+  }
+
+  public Packet(
+    OFMessageType messageType,
+    SwitchPortTuple swPortTuple,
+    ByteBuffer data)
+  {
+    this();
+    this.messageType = messageType;
+    this.swPortTuple = swPortTuple;
+    this.data = data;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public Packet(Packet other) {
+    if (other.isSetMessageType()) {
+      this.messageType = other.messageType;
+    }
+    if (other.isSetSwPortTuple()) {
+      this.swPortTuple = new SwitchPortTuple(other.swPortTuple);
+    }
+    if (other.isSetData()) {
+      this.data = org.apache.thrift.TBaseHelper.copyBinary(other.data);
+;
+    }
+  }
+
+  public Packet deepCopy() {
+    return new Packet(this);
+  }
+
+  @Override
+  public void clear() {
+    this.messageType = null;
+    this.swPortTuple = null;
+    this.data = null;
+  }
+
+  /**
+   * 
+   * @see OFMessageType
+   */
+  public OFMessageType getMessageType() {
+    return this.messageType;
+  }
+
+  /**
+   * 
+   * @see OFMessageType
+   */
+  public Packet setMessageType(OFMessageType messageType) {
+    this.messageType = messageType;
+    return this;
+  }
+
+  public void unsetMessageType() {
+    this.messageType = null;
+  }
+
+  /** Returns true if field messageType is set (has been assigned a value) and false otherwise */
+  public boolean isSetMessageType() {
+    return this.messageType != null;
+  }
+
+  public void setMessageTypeIsSet(boolean value) {
+    if (!value) {
+      this.messageType = null;
+    }
+  }
+
+  public SwitchPortTuple getSwPortTuple() {
+    return this.swPortTuple;
+  }
+
+  public Packet setSwPortTuple(SwitchPortTuple swPortTuple) {
+    this.swPortTuple = swPortTuple;
+    return this;
+  }
+
+  public void unsetSwPortTuple() {
+    this.swPortTuple = null;
+  }
+
+  /** Returns true if field swPortTuple is set (has been assigned a value) and false otherwise */
+  public boolean isSetSwPortTuple() {
+    return this.swPortTuple != null;
+  }
+
+  public void setSwPortTupleIsSet(boolean value) {
+    if (!value) {
+      this.swPortTuple = null;
+    }
+  }
+
+  public byte[] getData() {
+    setData(org.apache.thrift.TBaseHelper.rightSize(data));
+    return data == null ? null : data.array();
+  }
+
+  public ByteBuffer bufferForData() {
+    return data;
+  }
+
+  public Packet setData(byte[] data) {
+    setData(data == null ? (ByteBuffer)null : ByteBuffer.wrap(data));
+    return this;
+  }
+
+  public Packet setData(ByteBuffer data) {
+    this.data = data;
+    return this;
+  }
+
+  public void unsetData() {
+    this.data = null;
+  }
+
+  /** Returns true if field data is set (has been assigned a value) and false otherwise */
+  public boolean isSetData() {
+    return this.data != null;
+  }
+
+  public void setDataIsSet(boolean value) {
+    if (!value) {
+      this.data = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case MESSAGE_TYPE:
+      if (value == null) {
+        unsetMessageType();
+      } else {
+        setMessageType((OFMessageType)value);
+      }
+      break;
+
+    case SW_PORT_TUPLE:
+      if (value == null) {
+        unsetSwPortTuple();
+      } else {
+        setSwPortTuple((SwitchPortTuple)value);
+      }
+      break;
+
+    case DATA:
+      if (value == null) {
+        unsetData();
+      } else {
+        setData((ByteBuffer)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case MESSAGE_TYPE:
+      return getMessageType();
+
+    case SW_PORT_TUPLE:
+      return getSwPortTuple();
+
+    case DATA:
+      return getData();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case MESSAGE_TYPE:
+      return isSetMessageType();
+    case SW_PORT_TUPLE:
+      return isSetSwPortTuple();
+    case DATA:
+      return isSetData();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof Packet)
+      return this.equals((Packet)that);
+    return false;
+  }
+
+  public boolean equals(Packet that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_messageType = true && this.isSetMessageType();
+    boolean that_present_messageType = true && that.isSetMessageType();
+    if (this_present_messageType || that_present_messageType) {
+      if (!(this_present_messageType && that_present_messageType))
+        return false;
+      if (!this.messageType.equals(that.messageType))
+        return false;
+    }
+
+    boolean this_present_swPortTuple = true && this.isSetSwPortTuple();
+    boolean that_present_swPortTuple = true && that.isSetSwPortTuple();
+    if (this_present_swPortTuple || that_present_swPortTuple) {
+      if (!(this_present_swPortTuple && that_present_swPortTuple))
+        return false;
+      if (!this.swPortTuple.equals(that.swPortTuple))
+        return false;
+    }
+
+    boolean this_present_data = true && this.isSetData();
+    boolean that_present_data = true && that.isSetData();
+    if (this_present_data || that_present_data) {
+      if (!(this_present_data && that_present_data))
+        return false;
+      if (!this.data.equals(that.data))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    return 0;
+  }
+
+  public int compareTo(Packet other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+    Packet typedOther = (Packet)other;
+
+    lastComparison = Boolean.valueOf(isSetMessageType()).compareTo(typedOther.isSetMessageType());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetMessageType()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.messageType, typedOther.messageType);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetSwPortTuple()).compareTo(typedOther.isSetSwPortTuple());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetSwPortTuple()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.swPortTuple, typedOther.swPortTuple);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetData()).compareTo(typedOther.isSetData());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetData()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.data, typedOther.data);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    org.apache.thrift.protocol.TField field;
+    iprot.readStructBegin();
+    while (true)
+    {
+      field = iprot.readFieldBegin();
+      if (field.type == org.apache.thrift.protocol.TType.STOP) { 
+        break;
+      }
+      switch (field.id) {
+        case 1: // MESSAGE_TYPE
+          if (field.type == org.apache.thrift.protocol.TType.I32) {
+            this.messageType = OFMessageType.findByValue(iprot.readI32());
+          } else { 
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+          }
+          break;
+        case 2: // SW_PORT_TUPLE
+          if (field.type == org.apache.thrift.protocol.TType.STRUCT) {
+            this.swPortTuple = new SwitchPortTuple();
+            this.swPortTuple.read(iprot);
+          } else { 
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+          }
+          break;
+        case 3: // DATA
+          if (field.type == org.apache.thrift.protocol.TType.STRING) {
+            this.data = iprot.readBinary();
+          } else { 
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+          }
+          break;
+        default:
+          org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+      }
+      iprot.readFieldEnd();
+    }
+    iprot.readStructEnd();
+
+    // check for required fields of primitive type, which can't be checked in the validate method
+    validate();
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    validate();
+
+    oprot.writeStructBegin(STRUCT_DESC);
+    if (this.messageType != null) {
+      oprot.writeFieldBegin(MESSAGE_TYPE_FIELD_DESC);
+      oprot.writeI32(this.messageType.getValue());
+      oprot.writeFieldEnd();
+    }
+    if (this.swPortTuple != null) {
+      oprot.writeFieldBegin(SW_PORT_TUPLE_FIELD_DESC);
+      this.swPortTuple.write(oprot);
+      oprot.writeFieldEnd();
+    }
+    if (this.data != null) {
+      oprot.writeFieldBegin(DATA_FIELD_DESC);
+      oprot.writeBinary(this.data);
+      oprot.writeFieldEnd();
+    }
+    oprot.writeFieldStop();
+    oprot.writeStructEnd();
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("Packet(");
+    boolean first = true;
+
+    sb.append("messageType:");
+    if (this.messageType == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.messageType);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("swPortTuple:");
+    if (this.swPortTuple == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.swPortTuple);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("data:");
+    if (this.data == null) {
+      sb.append("null");
+    } else {
+      org.apache.thrift.TBaseHelper.toString(this.data, sb);
+    }
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+}
+
diff --git a/lib/gen-java/net/floodlightcontroller/packetstreamer/thrift/PacketStreamer.java b/lib/gen-java/net/floodlightcontroller/packetstreamer/thrift/PacketStreamer.java
new file mode 100644
index 0000000..f4e8ae5
--- /dev/null
+++ b/lib/gen-java/net/floodlightcontroller/packetstreamer/thrift/PacketStreamer.java
@@ -0,0 +1,2427 @@
+/**
+ * Autogenerated by Thrift Compiler (0.7.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ */
+package net.floodlightcontroller.packetstreamer.thrift;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings("all") public class PacketStreamer {
+
+  /**
+   * Packetstreamer API
+   */
+  public interface Iface {
+
+    /**
+     * Synchronous method to get packets for a given sessionid
+     * 
+     * @param sessionid
+     */
+    public List<ByteBuffer> getPackets(String sessionid) throws org.apache.thrift.TException;
+
+    /**
+     * Synchronous method to publish a packet.
+     * It ensure the order that the packets are pushed
+     * 
+     * @param packet
+     */
+    public int pushMessageSync(Message packet) throws org.apache.thrift.TException;
+
+    /**
+     * Asynchronous method to publish a packet.
+     * Order is not guaranteed.
+     * 
+     * @param packet
+     */
+    public void pushMessageAsync(Message packet) throws org.apache.thrift.TException;
+
+    /**
+     * Terminate a session
+     * 
+     * @param sessionid
+     */
+    public void terminateSession(String sessionid) throws org.apache.thrift.TException;
+
+  }
+
+  public interface AsyncIface {
+
+    public void getPackets(String sessionid, org.apache.thrift.async.AsyncMethodCallback<AsyncClient.getPackets_call> resultHandler) throws org.apache.thrift.TException;
+
+    public void pushMessageSync(Message packet, org.apache.thrift.async.AsyncMethodCallback<AsyncClient.pushMessageSync_call> resultHandler) throws org.apache.thrift.TException;
+
+    public void pushMessageAsync(Message packet, org.apache.thrift.async.AsyncMethodCallback<AsyncClient.pushMessageAsync_call> resultHandler) throws org.apache.thrift.TException;
+
+    public void terminateSession(String sessionid, org.apache.thrift.async.AsyncMethodCallback<AsyncClient.terminateSession_call> resultHandler) throws org.apache.thrift.TException;
+
+  }
+
+  public static class Client extends org.apache.thrift.TServiceClient implements Iface {
+    public static class Factory implements org.apache.thrift.TServiceClientFactory<Client> {
+      public Factory() {}
+      public Client getClient(org.apache.thrift.protocol.TProtocol prot) {
+        return new Client(prot);
+      }
+      public Client getClient(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) {
+        return new Client(iprot, oprot);
+      }
+    }
+
+    public Client(org.apache.thrift.protocol.TProtocol prot)
+    {
+      super(prot, prot);
+    }
+
+    public Client(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) {
+      super(iprot, oprot);
+    }
+
+    public List<ByteBuffer> getPackets(String sessionid) throws org.apache.thrift.TException
+    {
+      send_getPackets(sessionid);
+      return recv_getPackets();
+    }
+
+    public void send_getPackets(String sessionid) throws org.apache.thrift.TException
+    {
+      getPackets_args args = new getPackets_args();
+      args.setSessionid(sessionid);
+      sendBase("getPackets", args);
+    }
+
+    public List<ByteBuffer> recv_getPackets() throws org.apache.thrift.TException
+    {
+      getPackets_result result = new getPackets_result();
+      receiveBase(result, "getPackets");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getPackets failed: unknown result");
+    }
+
+    public int pushMessageSync(Message packet) throws org.apache.thrift.TException
+    {
+      send_pushMessageSync(packet);
+      return recv_pushMessageSync();
+    }
+
+    public void send_pushMessageSync(Message packet) throws org.apache.thrift.TException
+    {
+      pushMessageSync_args args = new pushMessageSync_args();
+      args.setPacket(packet);
+      sendBase("pushMessageSync", args);
+    }
+
+    public int recv_pushMessageSync() throws org.apache.thrift.TException
+    {
+      pushMessageSync_result result = new pushMessageSync_result();
+      receiveBase(result, "pushMessageSync");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "pushMessageSync failed: unknown result");
+    }
+
+    public void pushMessageAsync(Message packet) throws org.apache.thrift.TException
+    {
+      send_pushMessageAsync(packet);
+    }
+
+    public void send_pushMessageAsync(Message packet) throws org.apache.thrift.TException
+    {
+      pushMessageAsync_args args = new pushMessageAsync_args();
+      args.setPacket(packet);
+      sendBase("pushMessageAsync", args);
+    }
+
+    public void terminateSession(String sessionid) throws org.apache.thrift.TException
+    {
+      send_terminateSession(sessionid);
+      recv_terminateSession();
+    }
+
+    public void send_terminateSession(String sessionid) throws org.apache.thrift.TException
+    {
+      terminateSession_args args = new terminateSession_args();
+      args.setSessionid(sessionid);
+      sendBase("terminateSession", args);
+    }
+
+    public void recv_terminateSession() throws org.apache.thrift.TException
+    {
+      terminateSession_result result = new terminateSession_result();
+      receiveBase(result, "terminateSession");
+      return;
+    }
+
+  }
+  public static class AsyncClient extends org.apache.thrift.async.TAsyncClient implements AsyncIface {
+    public static class Factory implements org.apache.thrift.async.TAsyncClientFactory<AsyncClient> {
+      private org.apache.thrift.async.TAsyncClientManager clientManager;
+      private org.apache.thrift.protocol.TProtocolFactory protocolFactory;
+      public Factory(org.apache.thrift.async.TAsyncClientManager clientManager, org.apache.thrift.protocol.TProtocolFactory protocolFactory) {
+        this.clientManager = clientManager;
+        this.protocolFactory = protocolFactory;
+      }
+      public AsyncClient getAsyncClient(org.apache.thrift.transport.TNonblockingTransport transport) {
+        return new AsyncClient(protocolFactory, clientManager, transport);
+      }
+    }
+
+    public AsyncClient(org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.async.TAsyncClientManager clientManager, org.apache.thrift.transport.TNonblockingTransport transport) {
+      super(protocolFactory, clientManager, transport);
+    }
+
+    public void getPackets(String sessionid, org.apache.thrift.async.AsyncMethodCallback<getPackets_call> resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      getPackets_call method_call = new getPackets_call(sessionid, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class getPackets_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String sessionid;
+      public getPackets_call(String sessionid, org.apache.thrift.async.AsyncMethodCallback<getPackets_call> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.sessionid = sessionid;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getPackets", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        getPackets_args args = new getPackets_args();
+        args.setSessionid(sessionid);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public List<ByteBuffer> getResult() throws org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_getPackets();
+      }
+    }
+
+    public void pushMessageSync(Message packet, org.apache.thrift.async.AsyncMethodCallback<pushMessageSync_call> resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      pushMessageSync_call method_call = new pushMessageSync_call(packet, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class pushMessageSync_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private Message packet;
+      public pushMessageSync_call(Message packet, org.apache.thrift.async.AsyncMethodCallback<pushMessageSync_call> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.packet = packet;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("pushMessageSync", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        pushMessageSync_args args = new pushMessageSync_args();
+        args.setPacket(packet);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public int getResult() throws org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_pushMessageSync();
+      }
+    }
+
+    public void pushMessageAsync(Message packet, org.apache.thrift.async.AsyncMethodCallback<pushMessageAsync_call> resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      pushMessageAsync_call method_call = new pushMessageAsync_call(packet, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class pushMessageAsync_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private Message packet;
+      public pushMessageAsync_call(Message packet, org.apache.thrift.async.AsyncMethodCallback<pushMessageAsync_call> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, true);
+        this.packet = packet;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("pushMessageAsync", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        pushMessageAsync_args args = new pushMessageAsync_args();
+        args.setPacket(packet);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public void getResult() throws org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+      }
+    }
+
+    public void terminateSession(String sessionid, org.apache.thrift.async.AsyncMethodCallback<terminateSession_call> resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      terminateSession_call method_call = new terminateSession_call(sessionid, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class terminateSession_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private String sessionid;
+      public terminateSession_call(String sessionid, org.apache.thrift.async.AsyncMethodCallback<terminateSession_call> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.sessionid = sessionid;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("terminateSession", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        terminateSession_args args = new terminateSession_args();
+        args.setSessionid(sessionid);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public void getResult() throws org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        (new Client(prot)).recv_terminateSession();
+      }
+    }
+
+  }
+
+  public static class Processor<I extends Iface> extends org.apache.thrift.TBaseProcessor implements org.apache.thrift.TProcessor {
+    private static final Logger LOGGER = LoggerFactory.getLogger(Processor.class.getName());
+    public Processor(I iface) {
+      super(iface, getProcessMap(new HashMap<String, org.apache.thrift.ProcessFunction<I, ? extends org.apache.thrift.TBase>>()));
+    }
+
+    protected Processor(I iface, Map<String,  org.apache.thrift.ProcessFunction<I, ? extends  org.apache.thrift.TBase>> processMap) {
+      super(iface, getProcessMap(processMap));
+    }
+
+    private static <I extends Iface> Map<String,  org.apache.thrift.ProcessFunction<I, ? extends  org.apache.thrift.TBase>> getProcessMap(Map<String,  org.apache.thrift.ProcessFunction<I, ? extends  org.apache.thrift.TBase>> processMap) {
+      processMap.put("getPackets", new getPackets());
+      processMap.put("pushMessageSync", new pushMessageSync());
+      processMap.put("pushMessageAsync", new pushMessageAsync());
+      processMap.put("terminateSession", new terminateSession());
+      return processMap;
+    }
+
+    private static class getPackets<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getPackets_args> {
+      public getPackets() {
+        super("getPackets");
+      }
+
+      protected getPackets_args getEmptyArgsInstance() {
+        return new getPackets_args();
+      }
+
+      protected getPackets_result getResult(I iface, getPackets_args args) throws org.apache.thrift.TException {
+        getPackets_result result = new getPackets_result();
+        result.success = iface.getPackets(args.sessionid);
+        return result;
+      }
+    }
+
+    private static class pushMessageSync<I extends Iface> extends org.apache.thrift.ProcessFunction<I, pushMessageSync_args> {
+      public pushMessageSync() {
+        super("pushMessageSync");
+      }
+
+      protected pushMessageSync_args getEmptyArgsInstance() {
+        return new pushMessageSync_args();
+      }
+
+      protected pushMessageSync_result getResult(I iface, pushMessageSync_args args) throws org.apache.thrift.TException {
+        pushMessageSync_result result = new pushMessageSync_result();
+        result.success = iface.pushMessageSync(args.packet);
+        result.setSuccessIsSet(true);
+        return result;
+      }
+    }
+
+    private static class pushMessageAsync<I extends Iface> extends org.apache.thrift.ProcessFunction<I, pushMessageAsync_args> {
+      public pushMessageAsync() {
+        super("pushMessageAsync");
+      }
+
+      protected pushMessageAsync_args getEmptyArgsInstance() {
+        return new pushMessageAsync_args();
+      }
+
+      protected org.apache.thrift.TBase getResult(I iface, pushMessageAsync_args args) throws org.apache.thrift.TException {
+        iface.pushMessageAsync(args.packet);
+        return null;
+      }
+    }
+
+    private static class terminateSession<I extends Iface> extends org.apache.thrift.ProcessFunction<I, terminateSession_args> {
+      public terminateSession() {
+        super("terminateSession");
+      }
+
+      protected terminateSession_args getEmptyArgsInstance() {
+        return new terminateSession_args();
+      }
+
+      protected terminateSession_result getResult(I iface, terminateSession_args args) throws org.apache.thrift.TException {
+        terminateSession_result result = new terminateSession_result();
+        iface.terminateSession(args.sessionid);
+        return result;
+      }
+    }
+
+  }
+
+  public static class getPackets_args implements org.apache.thrift.TBase<getPackets_args, getPackets_args._Fields>, java.io.Serializable, Cloneable   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getPackets_args");
+
+    private static final org.apache.thrift.protocol.TField SESSIONID_FIELD_DESC = new org.apache.thrift.protocol.TField("sessionid", org.apache.thrift.protocol.TType.STRING, (short)1);
+
+    public String sessionid; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      SESSIONID((short)1, "sessionid");
+
+      private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+      static {
+        for (_Fields field : EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          case 1: // SESSIONID
+            return SESSIONID;
+          default:
+            return null;
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, throwing an exception
+       * if it is not found.
+       */
+      public static _Fields findByThriftIdOrThrow(int fieldId) {
+        _Fields fields = findByThriftId(fieldId);
+        if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+        return fields;
+      }
+
+      /**
+       * Find the _Fields constant that matches name, or null if its not found.
+       */
+      public static _Fields findByName(String name) {
+        return byName.get(name);
+      }
+
+      private final short _thriftId;
+      private final String _fieldName;
+
+      _Fields(short thriftId, String fieldName) {
+        _thriftId = thriftId;
+        _fieldName = fieldName;
+      }
+
+      public short getThriftFieldId() {
+        return _thriftId;
+      }
+
+      public String getFieldName() {
+        return _fieldName;
+      }
+    }
+
+    // isset id assignments
+
+    public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+    static {
+      Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.SESSIONID, new org.apache.thrift.meta_data.FieldMetaData("sessionid", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getPackets_args.class, metaDataMap);
+    }
+
+    public getPackets_args() {
+    }
+
+    public getPackets_args(
+      String sessionid)
+    {
+      this();
+      this.sessionid = sessionid;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public getPackets_args(getPackets_args other) {
+      if (other.isSetSessionid()) {
+        this.sessionid = other.sessionid;
+      }
+    }
+
+    public getPackets_args deepCopy() {
+      return new getPackets_args(this);
+    }
+
+    @Override
+    public void clear() {
+      this.sessionid = null;
+    }
+
+    public String getSessionid() {
+      return this.sessionid;
+    }
+
+    public getPackets_args setSessionid(String sessionid) {
+      this.sessionid = sessionid;
+      return this;
+    }
+
+    public void unsetSessionid() {
+      this.sessionid = null;
+    }
+
+    /** Returns true if field sessionid is set (has been assigned a value) and false otherwise */
+    public boolean isSetSessionid() {
+      return this.sessionid != null;
+    }
+
+    public void setSessionidIsSet(boolean value) {
+      if (!value) {
+        this.sessionid = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case SESSIONID:
+        if (value == null) {
+          unsetSessionid();
+        } else {
+          setSessionid((String)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case SESSIONID:
+        return getSessionid();
+
+      }
+      throw new IllegalStateException();
+    }
+
+    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+    public boolean isSet(_Fields field) {
+      if (field == null) {
+        throw new IllegalArgumentException();
+      }
+
+      switch (field) {
+      case SESSIONID:
+        return isSetSessionid();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof getPackets_args)
+        return this.equals((getPackets_args)that);
+      return false;
+    }
+
+    public boolean equals(getPackets_args that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_sessionid = true && this.isSetSessionid();
+      boolean that_present_sessionid = true && that.isSetSessionid();
+      if (this_present_sessionid || that_present_sessionid) {
+        if (!(this_present_sessionid && that_present_sessionid))
+          return false;
+        if (!this.sessionid.equals(that.sessionid))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      return 0;
+    }
+
+    public int compareTo(getPackets_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+      getPackets_args typedOther = (getPackets_args)other;
+
+      lastComparison = Boolean.valueOf(isSetSessionid()).compareTo(typedOther.isSetSessionid());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetSessionid()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.sessionid, typedOther.sessionid);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      return 0;
+    }
+
+    public _Fields fieldForId(int fieldId) {
+      return _Fields.findByThriftId(fieldId);
+    }
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField field;
+      iprot.readStructBegin();
+      while (true)
+      {
+        field = iprot.readFieldBegin();
+        if (field.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (field.id) {
+          case 1: // SESSIONID
+            if (field.type == org.apache.thrift.protocol.TType.STRING) {
+              this.sessionid = iprot.readString();
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+
+      // check for required fields of primitive type, which can't be checked in the validate method
+      validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+      validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (this.sessionid != null) {
+        oprot.writeFieldBegin(SESSIONID_FIELD_DESC);
+        oprot.writeString(this.sessionid);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+    @Override
+    public String toString() {
+      StringBuilder sb = new StringBuilder("getPackets_args(");
+      boolean first = true;
+
+      sb.append("sessionid:");
+      if (this.sessionid == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.sessionid);
+      }
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+      try {
+        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+  }
+
+  public static class getPackets_result implements org.apache.thrift.TBase<getPackets_result, getPackets_result._Fields>, java.io.Serializable, Cloneable   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getPackets_result");
+
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.LIST, (short)0);
+
+    public List<ByteBuffer> success; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      SUCCESS((short)0, "success");
+
+      private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+      static {
+        for (_Fields field : EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          case 0: // SUCCESS
+            return SUCCESS;
+          default:
+            return null;
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, throwing an exception
+       * if it is not found.
+       */
+      public static _Fields findByThriftIdOrThrow(int fieldId) {
+        _Fields fields = findByThriftId(fieldId);
+        if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+        return fields;
+      }
+
+      /**
+       * Find the _Fields constant that matches name, or null if its not found.
+       */
+      public static _Fields findByName(String name) {
+        return byName.get(name);
+      }
+
+      private final short _thriftId;
+      private final String _fieldName;
+
+      _Fields(short thriftId, String fieldName) {
+        _thriftId = thriftId;
+        _fieldName = fieldName;
+      }
+
+      public short getThriftFieldId() {
+        return _thriftId;
+      }
+
+      public String getFieldName() {
+        return _fieldName;
+      }
+    }
+
+    // isset id assignments
+
+    public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+    static {
+      Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+              new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING              , true))));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getPackets_result.class, metaDataMap);
+    }
+
+    public getPackets_result() {
+    }
+
+    public getPackets_result(
+      List<ByteBuffer> success)
+    {
+      this();
+      this.success = success;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public getPackets_result(getPackets_result other) {
+      if (other.isSetSuccess()) {
+        List<ByteBuffer> __this__success = new ArrayList<ByteBuffer>();
+        for (ByteBuffer other_element : other.success) {
+          ByteBuffer temp_binary_element = org.apache.thrift.TBaseHelper.copyBinary(other_element);
+;
+          __this__success.add(temp_binary_element);
+        }
+        this.success = __this__success;
+      }
+    }
+
+    public getPackets_result deepCopy() {
+      return new getPackets_result(this);
+    }
+
+    @Override
+    public void clear() {
+      this.success = null;
+    }
+
+    public int getSuccessSize() {
+      return (this.success == null) ? 0 : this.success.size();
+    }
+
+    public java.util.Iterator<ByteBuffer> getSuccessIterator() {
+      return (this.success == null) ? null : this.success.iterator();
+    }
+
+    public void addToSuccess(ByteBuffer elem) {
+      if (this.success == null) {
+        this.success = new ArrayList<ByteBuffer>();
+      }
+      this.success.add(elem);
+    }
+
+    public List<ByteBuffer> getSuccess() {
+      return this.success;
+    }
+
+    public getPackets_result setSuccess(List<ByteBuffer> success) {
+      this.success = success;
+      return this;
+    }
+
+    public void unsetSuccess() {
+      this.success = null;
+    }
+
+    /** Returns true if field success is set (has been assigned a value) and false otherwise */
+    public boolean isSetSuccess() {
+      return this.success != null;
+    }
+
+    public void setSuccessIsSet(boolean value) {
+      if (!value) {
+        this.success = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case SUCCESS:
+        if (value == null) {
+          unsetSuccess();
+        } else {
+          setSuccess((List<ByteBuffer>)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case SUCCESS:
+        return getSuccess();
+
+      }
+      throw new IllegalStateException();
+    }
+
+    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+    public boolean isSet(_Fields field) {
+      if (field == null) {
+        throw new IllegalArgumentException();
+      }
+
+      switch (field) {
+      case SUCCESS:
+        return isSetSuccess();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof getPackets_result)
+        return this.equals((getPackets_result)that);
+      return false;
+    }
+
+    public boolean equals(getPackets_result that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_success = true && this.isSetSuccess();
+      boolean that_present_success = true && that.isSetSuccess();
+      if (this_present_success || that_present_success) {
+        if (!(this_present_success && that_present_success))
+          return false;
+        if (!this.success.equals(that.success))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      return 0;
+    }
+
+    public int compareTo(getPackets_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+      getPackets_result typedOther = (getPackets_result)other;
+
+      lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(typedOther.isSetSuccess());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetSuccess()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, typedOther.success);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      return 0;
+    }
+
+    public _Fields fieldForId(int fieldId) {
+      return _Fields.findByThriftId(fieldId);
+    }
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField field;
+      iprot.readStructBegin();
+      while (true)
+      {
+        field = iprot.readFieldBegin();
+        if (field.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (field.id) {
+          case 0: // SUCCESS
+            if (field.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list4 = iprot.readListBegin();
+                this.success = new ArrayList<ByteBuffer>(_list4.size);
+                for (int _i5 = 0; _i5 < _list4.size; ++_i5)
+                {
+                  ByteBuffer _elem6; // required
+                  _elem6 = iprot.readBinary();
+                  this.success.add(_elem6);
+                }
+                iprot.readListEnd();
+              }
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+
+      // check for required fields of primitive type, which can't be checked in the validate method
+      validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+      oprot.writeStructBegin(STRUCT_DESC);
+
+      if (this.isSetSuccess()) {
+        oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+        {
+          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, this.success.size()));
+          for (ByteBuffer _iter7 : this.success)
+          {
+            oprot.writeBinary(_iter7);
+          }
+          oprot.writeListEnd();
+        }
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+    @Override
+    public String toString() {
+      StringBuilder sb = new StringBuilder("getPackets_result(");
+      boolean first = true;
+
+      sb.append("success:");
+      if (this.success == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.success);
+      }
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+      try {
+        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+  }
+
+  public static class pushMessageSync_args implements org.apache.thrift.TBase<pushMessageSync_args, pushMessageSync_args._Fields>, java.io.Serializable, Cloneable   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("pushMessageSync_args");
+
+    private static final org.apache.thrift.protocol.TField PACKET_FIELD_DESC = new org.apache.thrift.protocol.TField("packet", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+
+    public Message packet; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      PACKET((short)1, "packet");
+
+      private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+      static {
+        for (_Fields field : EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          case 1: // PACKET
+            return PACKET;
+          default:
+            return null;
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, throwing an exception
+       * if it is not found.
+       */
+      public static _Fields findByThriftIdOrThrow(int fieldId) {
+        _Fields fields = findByThriftId(fieldId);
+        if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+        return fields;
+      }
+
+      /**
+       * Find the _Fields constant that matches name, or null if its not found.
+       */
+      public static _Fields findByName(String name) {
+        return byName.get(name);
+      }
+
+      private final short _thriftId;
+      private final String _fieldName;
+
+      _Fields(short thriftId, String fieldName) {
+        _thriftId = thriftId;
+        _fieldName = fieldName;
+      }
+
+      public short getThriftFieldId() {
+        return _thriftId;
+      }
+
+      public String getFieldName() {
+        return _fieldName;
+      }
+    }
+
+    // isset id assignments
+
+    public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+    static {
+      Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.PACKET, new org.apache.thrift.meta_data.FieldMetaData("packet", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Message.class)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(pushMessageSync_args.class, metaDataMap);
+    }
+
+    public pushMessageSync_args() {
+    }
+
+    public pushMessageSync_args(
+      Message packet)
+    {
+      this();
+      this.packet = packet;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public pushMessageSync_args(pushMessageSync_args other) {
+      if (other.isSetPacket()) {
+        this.packet = new Message(other.packet);
+      }
+    }
+
+    public pushMessageSync_args deepCopy() {
+      return new pushMessageSync_args(this);
+    }
+
+    @Override
+    public void clear() {
+      this.packet = null;
+    }
+
+    public Message getPacket() {
+      return this.packet;
+    }
+
+    public pushMessageSync_args setPacket(Message packet) {
+      this.packet = packet;
+      return this;
+    }
+
+    public void unsetPacket() {
+      this.packet = null;
+    }
+
+    /** Returns true if field packet is set (has been assigned a value) and false otherwise */
+    public boolean isSetPacket() {
+      return this.packet != null;
+    }
+
+    public void setPacketIsSet(boolean value) {
+      if (!value) {
+        this.packet = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case PACKET:
+        if (value == null) {
+          unsetPacket();
+        } else {
+          setPacket((Message)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case PACKET:
+        return getPacket();
+
+      }
+      throw new IllegalStateException();
+    }
+
+    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+    public boolean isSet(_Fields field) {
+      if (field == null) {
+        throw new IllegalArgumentException();
+      }
+
+      switch (field) {
+      case PACKET:
+        return isSetPacket();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof pushMessageSync_args)
+        return this.equals((pushMessageSync_args)that);
+      return false;
+    }
+
+    public boolean equals(pushMessageSync_args that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_packet = true && this.isSetPacket();
+      boolean that_present_packet = true && that.isSetPacket();
+      if (this_present_packet || that_present_packet) {
+        if (!(this_present_packet && that_present_packet))
+          return false;
+        if (!this.packet.equals(that.packet))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      return 0;
+    }
+
+    public int compareTo(pushMessageSync_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+      pushMessageSync_args typedOther = (pushMessageSync_args)other;
+
+      lastComparison = Boolean.valueOf(isSetPacket()).compareTo(typedOther.isSetPacket());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetPacket()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.packet, typedOther.packet);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      return 0;
+    }
+
+    public _Fields fieldForId(int fieldId) {
+      return _Fields.findByThriftId(fieldId);
+    }
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField field;
+      iprot.readStructBegin();
+      while (true)
+      {
+        field = iprot.readFieldBegin();
+        if (field.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (field.id) {
+          case 1: // PACKET
+            if (field.type == org.apache.thrift.protocol.TType.STRUCT) {
+              this.packet = new Message();
+              this.packet.read(iprot);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+
+      // check for required fields of primitive type, which can't be checked in the validate method
+      validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+      validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (this.packet != null) {
+        oprot.writeFieldBegin(PACKET_FIELD_DESC);
+        this.packet.write(oprot);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+    @Override
+    public String toString() {
+      StringBuilder sb = new StringBuilder("pushMessageSync_args(");
+      boolean first = true;
+
+      sb.append("packet:");
+      if (this.packet == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.packet);
+      }
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+      try {
+        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+  }
+
+  public static class pushMessageSync_result implements org.apache.thrift.TBase<pushMessageSync_result, pushMessageSync_result._Fields>, java.io.Serializable, Cloneable   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("pushMessageSync_result");
+
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.I32, (short)0);
+
+    public int success; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      SUCCESS((short)0, "success");
+
+      private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+      static {
+        for (_Fields field : EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          case 0: // SUCCESS
+            return SUCCESS;
+          default:
+            return null;
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, throwing an exception
+       * if it is not found.
+       */
+      public static _Fields findByThriftIdOrThrow(int fieldId) {
+        _Fields fields = findByThriftId(fieldId);
+        if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+        return fields;
+      }
+
+      /**
+       * Find the _Fields constant that matches name, or null if its not found.
+       */
+      public static _Fields findByName(String name) {
+        return byName.get(name);
+      }
+
+      private final short _thriftId;
+      private final String _fieldName;
+
+      _Fields(short thriftId, String fieldName) {
+        _thriftId = thriftId;
+        _fieldName = fieldName;
+      }
+
+      public short getThriftFieldId() {
+        return _thriftId;
+      }
+
+      public String getFieldName() {
+        return _fieldName;
+      }
+    }
+
+    // isset id assignments
+    private static final int __SUCCESS_ISSET_ID = 0;
+    private BitSet __isset_bit_vector = new BitSet(1);
+
+    public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+    static {
+      Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(pushMessageSync_result.class, metaDataMap);
+    }
+
+    public pushMessageSync_result() {
+    }
+
+    public pushMessageSync_result(
+      int success)
+    {
+      this();
+      this.success = success;
+      setSuccessIsSet(true);
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public pushMessageSync_result(pushMessageSync_result other) {
+      __isset_bit_vector.clear();
+      __isset_bit_vector.or(other.__isset_bit_vector);
+      this.success = other.success;
+    }
+
+    public pushMessageSync_result deepCopy() {
+      return new pushMessageSync_result(this);
+    }
+
+    @Override
+    public void clear() {
+      setSuccessIsSet(false);
+      this.success = 0;
+    }
+
+    public int getSuccess() {
+      return this.success;
+    }
+
+    public pushMessageSync_result setSuccess(int success) {
+      this.success = success;
+      setSuccessIsSet(true);
+      return this;
+    }
+
+    public void unsetSuccess() {
+      __isset_bit_vector.clear(__SUCCESS_ISSET_ID);
+    }
+
+    /** Returns true if field success is set (has been assigned a value) and false otherwise */
+    public boolean isSetSuccess() {
+      return __isset_bit_vector.get(__SUCCESS_ISSET_ID);
+    }
+
+    public void setSuccessIsSet(boolean value) {
+      __isset_bit_vector.set(__SUCCESS_ISSET_ID, value);
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case SUCCESS:
+        if (value == null) {
+          unsetSuccess();
+        } else {
+          setSuccess((Integer)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case SUCCESS:
+        return Integer.valueOf(getSuccess());
+
+      }
+      throw new IllegalStateException();
+    }
+
+    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+    public boolean isSet(_Fields field) {
+      if (field == null) {
+        throw new IllegalArgumentException();
+      }
+
+      switch (field) {
+      case SUCCESS:
+        return isSetSuccess();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof pushMessageSync_result)
+        return this.equals((pushMessageSync_result)that);
+      return false;
+    }
+
+    public boolean equals(pushMessageSync_result that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_success = true;
+      boolean that_present_success = true;
+      if (this_present_success || that_present_success) {
+        if (!(this_present_success && that_present_success))
+          return false;
+        if (this.success != that.success)
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      return 0;
+    }
+
+    public int compareTo(pushMessageSync_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+      pushMessageSync_result typedOther = (pushMessageSync_result)other;
+
+      lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(typedOther.isSetSuccess());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetSuccess()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, typedOther.success);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      return 0;
+    }
+
+    public _Fields fieldForId(int fieldId) {
+      return _Fields.findByThriftId(fieldId);
+    }
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField field;
+      iprot.readStructBegin();
+      while (true)
+      {
+        field = iprot.readFieldBegin();
+        if (field.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (field.id) {
+          case 0: // SUCCESS
+            if (field.type == org.apache.thrift.protocol.TType.I32) {
+              this.success = iprot.readI32();
+              setSuccessIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+
+      // check for required fields of primitive type, which can't be checked in the validate method
+      validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+      oprot.writeStructBegin(STRUCT_DESC);
+
+      if (this.isSetSuccess()) {
+        oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+        oprot.writeI32(this.success);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+    @Override
+    public String toString() {
+      StringBuilder sb = new StringBuilder("pushMessageSync_result(");
+      boolean first = true;
+
+      sb.append("success:");
+      sb.append(this.success);
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+      try {
+        // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+        __isset_bit_vector = new BitSet(1);
+        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+  }
+
+  public static class pushMessageAsync_args implements org.apache.thrift.TBase<pushMessageAsync_args, pushMessageAsync_args._Fields>, java.io.Serializable, Cloneable   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("pushMessageAsync_args");
+
+    private static final org.apache.thrift.protocol.TField PACKET_FIELD_DESC = new org.apache.thrift.protocol.TField("packet", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+
+    public Message packet; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      PACKET((short)1, "packet");
+
+      private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+      static {
+        for (_Fields field : EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          case 1: // PACKET
+            return PACKET;
+          default:
+            return null;
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, throwing an exception
+       * if it is not found.
+       */
+      public static _Fields findByThriftIdOrThrow(int fieldId) {
+        _Fields fields = findByThriftId(fieldId);
+        if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+        return fields;
+      }
+
+      /**
+       * Find the _Fields constant that matches name, or null if its not found.
+       */
+      public static _Fields findByName(String name) {
+        return byName.get(name);
+      }
+
+      private final short _thriftId;
+      private final String _fieldName;
+
+      _Fields(short thriftId, String fieldName) {
+        _thriftId = thriftId;
+        _fieldName = fieldName;
+      }
+
+      public short getThriftFieldId() {
+        return _thriftId;
+      }
+
+      public String getFieldName() {
+        return _fieldName;
+      }
+    }
+
+    // isset id assignments
+
+    public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+    static {
+      Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.PACKET, new org.apache.thrift.meta_data.FieldMetaData("packet", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Message.class)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(pushMessageAsync_args.class, metaDataMap);
+    }
+
+    public pushMessageAsync_args() {
+    }
+
+    public pushMessageAsync_args(
+      Message packet)
+    {
+      this();
+      this.packet = packet;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public pushMessageAsync_args(pushMessageAsync_args other) {
+      if (other.isSetPacket()) {
+        this.packet = new Message(other.packet);
+      }
+    }
+
+    public pushMessageAsync_args deepCopy() {
+      return new pushMessageAsync_args(this);
+    }
+
+    @Override
+    public void clear() {
+      this.packet = null;
+    }
+
+    public Message getPacket() {
+      return this.packet;
+    }
+
+    public pushMessageAsync_args setPacket(Message packet) {
+      this.packet = packet;
+      return this;
+    }
+
+    public void unsetPacket() {
+      this.packet = null;
+    }
+
+    /** Returns true if field packet is set (has been assigned a value) and false otherwise */
+    public boolean isSetPacket() {
+      return this.packet != null;
+    }
+
+    public void setPacketIsSet(boolean value) {
+      if (!value) {
+        this.packet = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case PACKET:
+        if (value == null) {
+          unsetPacket();
+        } else {
+          setPacket((Message)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case PACKET:
+        return getPacket();
+
+      }
+      throw new IllegalStateException();
+    }
+
+    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+    public boolean isSet(_Fields field) {
+      if (field == null) {
+        throw new IllegalArgumentException();
+      }
+
+      switch (field) {
+      case PACKET:
+        return isSetPacket();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof pushMessageAsync_args)
+        return this.equals((pushMessageAsync_args)that);
+      return false;
+    }
+
+    public boolean equals(pushMessageAsync_args that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_packet = true && this.isSetPacket();
+      boolean that_present_packet = true && that.isSetPacket();
+      if (this_present_packet || that_present_packet) {
+        if (!(this_present_packet && that_present_packet))
+          return false;
+        if (!this.packet.equals(that.packet))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      return 0;
+    }
+
+    public int compareTo(pushMessageAsync_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+      pushMessageAsync_args typedOther = (pushMessageAsync_args)other;
+
+      lastComparison = Boolean.valueOf(isSetPacket()).compareTo(typedOther.isSetPacket());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetPacket()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.packet, typedOther.packet);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      return 0;
+    }
+
+    public _Fields fieldForId(int fieldId) {
+      return _Fields.findByThriftId(fieldId);
+    }
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField field;
+      iprot.readStructBegin();
+      while (true)
+      {
+        field = iprot.readFieldBegin();
+        if (field.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (field.id) {
+          case 1: // PACKET
+            if (field.type == org.apache.thrift.protocol.TType.STRUCT) {
+              this.packet = new Message();
+              this.packet.read(iprot);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+
+      // check for required fields of primitive type, which can't be checked in the validate method
+      validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+      validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (this.packet != null) {
+        oprot.writeFieldBegin(PACKET_FIELD_DESC);
+        this.packet.write(oprot);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+    @Override
+    public String toString() {
+      StringBuilder sb = new StringBuilder("pushMessageAsync_args(");
+      boolean first = true;
+
+      sb.append("packet:");
+      if (this.packet == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.packet);
+      }
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+      try {
+        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+  }
+
+  public static class terminateSession_args implements org.apache.thrift.TBase<terminateSession_args, terminateSession_args._Fields>, java.io.Serializable, Cloneable   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("terminateSession_args");
+
+    private static final org.apache.thrift.protocol.TField SESSIONID_FIELD_DESC = new org.apache.thrift.protocol.TField("sessionid", org.apache.thrift.protocol.TType.STRING, (short)1);
+
+    public String sessionid; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      SESSIONID((short)1, "sessionid");
+
+      private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+      static {
+        for (_Fields field : EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          case 1: // SESSIONID
+            return SESSIONID;
+          default:
+            return null;
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, throwing an exception
+       * if it is not found.
+       */
+      public static _Fields findByThriftIdOrThrow(int fieldId) {
+        _Fields fields = findByThriftId(fieldId);
+        if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+        return fields;
+      }
+
+      /**
+       * Find the _Fields constant that matches name, or null if its not found.
+       */
+      public static _Fields findByName(String name) {
+        return byName.get(name);
+      }
+
+      private final short _thriftId;
+      private final String _fieldName;
+
+      _Fields(short thriftId, String fieldName) {
+        _thriftId = thriftId;
+        _fieldName = fieldName;
+      }
+
+      public short getThriftFieldId() {
+        return _thriftId;
+      }
+
+      public String getFieldName() {
+        return _fieldName;
+      }
+    }
+
+    // isset id assignments
+
+    public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+    static {
+      Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      tmpMap.put(_Fields.SESSIONID, new org.apache.thrift.meta_data.FieldMetaData("sessionid", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(terminateSession_args.class, metaDataMap);
+    }
+
+    public terminateSession_args() {
+    }
+
+    public terminateSession_args(
+      String sessionid)
+    {
+      this();
+      this.sessionid = sessionid;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public terminateSession_args(terminateSession_args other) {
+      if (other.isSetSessionid()) {
+        this.sessionid = other.sessionid;
+      }
+    }
+
+    public terminateSession_args deepCopy() {
+      return new terminateSession_args(this);
+    }
+
+    @Override
+    public void clear() {
+      this.sessionid = null;
+    }
+
+    public String getSessionid() {
+      return this.sessionid;
+    }
+
+    public terminateSession_args setSessionid(String sessionid) {
+      this.sessionid = sessionid;
+      return this;
+    }
+
+    public void unsetSessionid() {
+      this.sessionid = null;
+    }
+
+    /** Returns true if field sessionid is set (has been assigned a value) and false otherwise */
+    public boolean isSetSessionid() {
+      return this.sessionid != null;
+    }
+
+    public void setSessionidIsSet(boolean value) {
+      if (!value) {
+        this.sessionid = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case SESSIONID:
+        if (value == null) {
+          unsetSessionid();
+        } else {
+          setSessionid((String)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case SESSIONID:
+        return getSessionid();
+
+      }
+      throw new IllegalStateException();
+    }
+
+    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+    public boolean isSet(_Fields field) {
+      if (field == null) {
+        throw new IllegalArgumentException();
+      }
+
+      switch (field) {
+      case SESSIONID:
+        return isSetSessionid();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof terminateSession_args)
+        return this.equals((terminateSession_args)that);
+      return false;
+    }
+
+    public boolean equals(terminateSession_args that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_sessionid = true && this.isSetSessionid();
+      boolean that_present_sessionid = true && that.isSetSessionid();
+      if (this_present_sessionid || that_present_sessionid) {
+        if (!(this_present_sessionid && that_present_sessionid))
+          return false;
+        if (!this.sessionid.equals(that.sessionid))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      return 0;
+    }
+
+    public int compareTo(terminateSession_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+      terminateSession_args typedOther = (terminateSession_args)other;
+
+      lastComparison = Boolean.valueOf(isSetSessionid()).compareTo(typedOther.isSetSessionid());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetSessionid()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.sessionid, typedOther.sessionid);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      return 0;
+    }
+
+    public _Fields fieldForId(int fieldId) {
+      return _Fields.findByThriftId(fieldId);
+    }
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField field;
+      iprot.readStructBegin();
+      while (true)
+      {
+        field = iprot.readFieldBegin();
+        if (field.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (field.id) {
+          case 1: // SESSIONID
+            if (field.type == org.apache.thrift.protocol.TType.STRING) {
+              this.sessionid = iprot.readString();
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+            }
+            break;
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+
+      // check for required fields of primitive type, which can't be checked in the validate method
+      validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+      validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (this.sessionid != null) {
+        oprot.writeFieldBegin(SESSIONID_FIELD_DESC);
+        oprot.writeString(this.sessionid);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+    @Override
+    public String toString() {
+      StringBuilder sb = new StringBuilder("terminateSession_args(");
+      boolean first = true;
+
+      sb.append("sessionid:");
+      if (this.sessionid == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.sessionid);
+      }
+      first = false;
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+      try {
+        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+  }
+
+  public static class terminateSession_result implements org.apache.thrift.TBase<terminateSession_result, terminateSession_result._Fields>, java.io.Serializable, Cloneable   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("terminateSession_result");
+
+
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+;
+
+      private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+      static {
+        for (_Fields field : EnumSet.allOf(_Fields.class)) {
+          byName.put(field.getFieldName(), field);
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, or null if its not found.
+       */
+      public static _Fields findByThriftId(int fieldId) {
+        switch(fieldId) {
+          default:
+            return null;
+        }
+      }
+
+      /**
+       * Find the _Fields constant that matches fieldId, throwing an exception
+       * if it is not found.
+       */
+      public static _Fields findByThriftIdOrThrow(int fieldId) {
+        _Fields fields = findByThriftId(fieldId);
+        if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+        return fields;
+      }
+
+      /**
+       * Find the _Fields constant that matches name, or null if its not found.
+       */
+      public static _Fields findByName(String name) {
+        return byName.get(name);
+      }
+
+      private final short _thriftId;
+      private final String _fieldName;
+
+      _Fields(short thriftId, String fieldName) {
+        _thriftId = thriftId;
+        _fieldName = fieldName;
+      }
+
+      public short getThriftFieldId() {
+        return _thriftId;
+      }
+
+      public String getFieldName() {
+        return _fieldName;
+      }
+    }
+    public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+    static {
+      Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(terminateSession_result.class, metaDataMap);
+    }
+
+    public terminateSession_result() {
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public terminateSession_result(terminateSession_result other) {
+    }
+
+    public terminateSession_result deepCopy() {
+      return new terminateSession_result(this);
+    }
+
+    @Override
+    public void clear() {
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      }
+      throw new IllegalStateException();
+    }
+
+    /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+    public boolean isSet(_Fields field) {
+      if (field == null) {
+        throw new IllegalArgumentException();
+      }
+
+      switch (field) {
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof terminateSession_result)
+        return this.equals((terminateSession_result)that);
+      return false;
+    }
+
+    public boolean equals(terminateSession_result that) {
+      if (that == null)
+        return false;
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      return 0;
+    }
+
+    public int compareTo(terminateSession_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+      terminateSession_result typedOther = (terminateSession_result)other;
+
+      return 0;
+    }
+
+    public _Fields fieldForId(int fieldId) {
+      return _Fields.findByThriftId(fieldId);
+    }
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TField field;
+      iprot.readStructBegin();
+      while (true)
+      {
+        field = iprot.readFieldBegin();
+        if (field.type == org.apache.thrift.protocol.TType.STOP) { 
+          break;
+        }
+        switch (field.id) {
+          default:
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+        }
+        iprot.readFieldEnd();
+      }
+      iprot.readStructEnd();
+
+      // check for required fields of primitive type, which can't be checked in the validate method
+      validate();
+    }
+
+    public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+      oprot.writeStructBegin(STRUCT_DESC);
+
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+    @Override
+    public String toString() {
+      StringBuilder sb = new StringBuilder("terminateSession_result(");
+      boolean first = true;
+
+      sb.append(")");
+      return sb.toString();
+    }
+
+    public void validate() throws org.apache.thrift.TException {
+      // check for required fields
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+      try {
+        write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+      try {
+        read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+      } catch (org.apache.thrift.TException te) {
+        throw new java.io.IOException(te);
+      }
+    }
+
+  }
+
+}
diff --git a/lib/gen-java/net/floodlightcontroller/packetstreamer/thrift/SwitchPortTuple.java b/lib/gen-java/net/floodlightcontroller/packetstreamer/thrift/SwitchPortTuple.java
new file mode 100644
index 0000000..8fe8191
--- /dev/null
+++ b/lib/gen-java/net/floodlightcontroller/packetstreamer/thrift/SwitchPortTuple.java
@@ -0,0 +1,406 @@
+/**
+ * Autogenerated by Thrift Compiler (0.7.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ */
+package net.floodlightcontroller.packetstreamer.thrift;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A struct that defines switch port tuple
+ */
+@SuppressWarnings("all") public class SwitchPortTuple implements org.apache.thrift.TBase<SwitchPortTuple, SwitchPortTuple._Fields>, java.io.Serializable, Cloneable {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("SwitchPortTuple");
+
+  private static final org.apache.thrift.protocol.TField DPID_FIELD_DESC = new org.apache.thrift.protocol.TField("dpid", org.apache.thrift.protocol.TType.I64, (short)1);
+  private static final org.apache.thrift.protocol.TField PORT_FIELD_DESC = new org.apache.thrift.protocol.TField("port", org.apache.thrift.protocol.TType.I16, (short)2);
+
+  public long dpid; // required
+  public short port; // required
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    DPID((short)1, "dpid"),
+    PORT((short)2, "port");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // DPID
+          return DPID;
+        case 2: // PORT
+          return PORT;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  private static final int __DPID_ISSET_ID = 0;
+  private static final int __PORT_ISSET_ID = 1;
+  private BitSet __isset_bit_vector = new BitSet(2);
+
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.DPID, new org.apache.thrift.meta_data.FieldMetaData("dpid", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+    tmpMap.put(_Fields.PORT, new org.apache.thrift.meta_data.FieldMetaData("port", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I16)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(SwitchPortTuple.class, metaDataMap);
+  }
+
+  public SwitchPortTuple() {
+  }
+
+  public SwitchPortTuple(
+    long dpid,
+    short port)
+  {
+    this();
+    this.dpid = dpid;
+    setDpidIsSet(true);
+    this.port = port;
+    setPortIsSet(true);
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public SwitchPortTuple(SwitchPortTuple other) {
+    __isset_bit_vector.clear();
+    __isset_bit_vector.or(other.__isset_bit_vector);
+    this.dpid = other.dpid;
+    this.port = other.port;
+  }
+
+  public SwitchPortTuple deepCopy() {
+    return new SwitchPortTuple(this);
+  }
+
+  @Override
+  public void clear() {
+    setDpidIsSet(false);
+    this.dpid = 0;
+    setPortIsSet(false);
+    this.port = 0;
+  }
+
+  public long getDpid() {
+    return this.dpid;
+  }
+
+  public SwitchPortTuple setDpid(long dpid) {
+    this.dpid = dpid;
+    setDpidIsSet(true);
+    return this;
+  }
+
+  public void unsetDpid() {
+    __isset_bit_vector.clear(__DPID_ISSET_ID);
+  }
+
+  /** Returns true if field dpid is set (has been assigned a value) and false otherwise */
+  public boolean isSetDpid() {
+    return __isset_bit_vector.get(__DPID_ISSET_ID);
+  }
+
+  public void setDpidIsSet(boolean value) {
+    __isset_bit_vector.set(__DPID_ISSET_ID, value);
+  }
+
+  public short getPort() {
+    return this.port;
+  }
+
+  public SwitchPortTuple setPort(short port) {
+    this.port = port;
+    setPortIsSet(true);
+    return this;
+  }
+
+  public void unsetPort() {
+    __isset_bit_vector.clear(__PORT_ISSET_ID);
+  }
+
+  /** Returns true if field port is set (has been assigned a value) and false otherwise */
+  public boolean isSetPort() {
+    return __isset_bit_vector.get(__PORT_ISSET_ID);
+  }
+
+  public void setPortIsSet(boolean value) {
+    __isset_bit_vector.set(__PORT_ISSET_ID, value);
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case DPID:
+      if (value == null) {
+        unsetDpid();
+      } else {
+        setDpid((Long)value);
+      }
+      break;
+
+    case PORT:
+      if (value == null) {
+        unsetPort();
+      } else {
+        setPort((Short)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case DPID:
+      return Long.valueOf(getDpid());
+
+    case PORT:
+      return Short.valueOf(getPort());
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case DPID:
+      return isSetDpid();
+    case PORT:
+      return isSetPort();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof SwitchPortTuple)
+      return this.equals((SwitchPortTuple)that);
+    return false;
+  }
+
+  public boolean equals(SwitchPortTuple that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_dpid = true;
+    boolean that_present_dpid = true;
+    if (this_present_dpid || that_present_dpid) {
+      if (!(this_present_dpid && that_present_dpid))
+        return false;
+      if (this.dpid != that.dpid)
+        return false;
+    }
+
+    boolean this_present_port = true;
+    boolean that_present_port = true;
+    if (this_present_port || that_present_port) {
+      if (!(this_present_port && that_present_port))
+        return false;
+      if (this.port != that.port)
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    return 0;
+  }
+
+  public int compareTo(SwitchPortTuple other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+    SwitchPortTuple typedOther = (SwitchPortTuple)other;
+
+    lastComparison = Boolean.valueOf(isSetDpid()).compareTo(typedOther.isSetDpid());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetDpid()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dpid, typedOther.dpid);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetPort()).compareTo(typedOther.isSetPort());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetPort()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.port, typedOther.port);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    org.apache.thrift.protocol.TField field;
+    iprot.readStructBegin();
+    while (true)
+    {
+      field = iprot.readFieldBegin();
+      if (field.type == org.apache.thrift.protocol.TType.STOP) { 
+        break;
+      }
+      switch (field.id) {
+        case 1: // DPID
+          if (field.type == org.apache.thrift.protocol.TType.I64) {
+            this.dpid = iprot.readI64();
+            setDpidIsSet(true);
+          } else { 
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+          }
+          break;
+        case 2: // PORT
+          if (field.type == org.apache.thrift.protocol.TType.I16) {
+            this.port = iprot.readI16();
+            setPortIsSet(true);
+          } else { 
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+          }
+          break;
+        default:
+          org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+      }
+      iprot.readFieldEnd();
+    }
+    iprot.readStructEnd();
+
+    // check for required fields of primitive type, which can't be checked in the validate method
+    validate();
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    validate();
+
+    oprot.writeStructBegin(STRUCT_DESC);
+    oprot.writeFieldBegin(DPID_FIELD_DESC);
+    oprot.writeI64(this.dpid);
+    oprot.writeFieldEnd();
+    oprot.writeFieldBegin(PORT_FIELD_DESC);
+    oprot.writeI16(this.port);
+    oprot.writeFieldEnd();
+    oprot.writeFieldStop();
+    oprot.writeStructEnd();
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("SwitchPortTuple(");
+    boolean first = true;
+
+    sb.append("dpid:");
+    sb.append(this.dpid);
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("port:");
+    sb.append(this.port);
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+      __isset_bit_vector = new BitSet(1);
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+}
+
diff --git a/src/ext/floodlight/LICENSE.txt b/src/ext/floodlight/LICENSE.txt
deleted file mode 100644
index d645695..0000000
--- a/src/ext/floodlight/LICENSE.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/src/ext/floodlight/Makefile b/src/ext/floodlight/Makefile
deleted file mode 100644
index 63c4dd0..0000000
--- a/src/ext/floodlight/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-# Because I am old and crotchety and my fingers can't stop from running 
-#	`make` commands
-
-.PHONY: docs doc all test tests count install clean
-
-all:
-	ant
-
-init:
-	ant init
-
-docs:
-	ant javadoc
-
-doc:
-	ant javadoc
-
-javadoc:
-	ant javadoc
-
-check: tests
-test: tests
-
-tests: all unit-tests
-
-unit-tests:
-	ant tests
-
-regression-tests:
-	make -C regress tests
-
-count: 
-	@find src -name \*.java | xargs wc -l | sort -n
-
-clean:
-	ant clean
diff --git a/src/ext/floodlight/NOTICE.txt b/src/ext/floodlight/NOTICE.txt
deleted file mode 100644
index 98945cb..0000000
--- a/src/ext/floodlight/NOTICE.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-INDEMNITY AND DISCLAIMER OF WARRANTIES
-
-SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 
-OR 27973/00100/SF/5339045.1 BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/src/ext/floodlight/README.txt b/src/ext/floodlight/README.txt
deleted file mode 100644
index 44f509d..0000000
--- a/src/ext/floodlight/README.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-  
-  Floodlight
-  An Apache licensed, Java based OpenFlow controller
-
-Floodlight is a Java based OpenFlow controller originally written by David Erickson at Stanford
-University. It is available under the Apache 2.0 license.
-
-For documentation, forums, issue tracking and more visit:
-
-      http://www.openflowhub.org/display/Floodlight/Floodlight+Home
diff --git a/src/ext/floodlight/apps/circuitpusher/circuitpusher.py b/src/ext/floodlight/apps/circuitpusher/circuitpusher.py
deleted file mode 100755
index 68c5df5..0000000
--- a/src/ext/floodlight/apps/circuitpusher/circuitpusher.py
+++ /dev/null
@@ -1,201 +0,0 @@
-#! /usr/bin/python
-"""
-circuitpusher utilizes floodlight rest APIs to create a bidirectional circuit, 
-i.e., permanent flow entry, on all switches in route between two devices based 
-on IP addresses with specified priority.
- 
-Notes:
- 1. The circuit pusher currently only creates circuit with two IP end points 
- 2. Prior to sending restAPI requests to the circuit pusher, the specified end
-    points must already been known to the controller (i.e., already have sent
-    packets on the network, easy way to assure this is to do a ping (to any
-    target) from the two hosts.
- 3. The current supported command syntax format is:
-    a) circuitpusher.py --controller={IP}:{rest port} --type ip --src {IP} --dst {IP} --add --name {circuit-name}
- 
-       adds a new circuit between src and dst devices Currently ip circuit is supported. ARP is automatically supported.
-    
-       Currently a simple circuit record storage is provided in a text file circuits.json in the working directory.
-       The file is not protected and does not clean itself between controller restarts.  The file is needed for correct operation
-       and the user should make sure deleting the file when floodlight controller is restarted.
-
-    b) circuitpusher.py --controller={IP}:{rest port} --delete --name {circuit-name}
-
-       deletes a created circuit (as recorded in circuits.json) using the previously given name
-
-@author kcwang
-"""
-
-import os
-import sys
-import subprocess
-import json
-import argparse
-import io
-import time
-
-# parse circuit options.  Currently supports add and delete actions.
-# Syntax:
-#   circuitpusher --controller {IP:REST_PORT} --add --name {CIRCUIT_NAME} --type ip --src {IP} --dst {IP} 
-#   circuitpusher --controller {IP:REST_PORT} --delete --name {CIRCUIT_NAME}
-
-parser = argparse.ArgumentParser(description='Circuit Pusher')
-parser.add_argument('--controller', dest='controllerRestIp', action='store', default='localhost:8080', help='controller IP:RESTport, e.g., localhost:8080 or A.B.C.D:8080')
-parser.add_argument('--add', dest='action', action='store_const', const='add', default='add', help='action: add, delete')
-parser.add_argument('--delete', dest='action', action='store_const', const='delete', default='add', help='action: add, delete')
-parser.add_argument('--type', dest='type', action='store', default='ip', help='valid types: ip')
-parser.add_argument('--src', dest='srcAddress', action='store', default='0.0.0.0', help='source address: if type=ip, A.B.C.D')
-parser.add_argument('--dst', dest='dstAddress', action='store', default='0.0.0.0', help='destination address: if type=ip, A.B.C.D')
-parser.add_argument('--name', dest='circuitName', action='store', default='circuit-1', help='name for circuit, e.g., circuit-1')
-
-args = parser.parse_args()
-print args
-
-controllerRestIp = args.controllerRestIp
-
-# first check if a local file exists, which needs to be updated after add/delete
-if os.path.exists('./circuits.json'):
-    circuitDb = open('./circuits.json','r')
-    lines = circuitDb.readlines()
-    circuitDb.close()
-else:
-    lines={}
-
-if args.action=='add':
-
-    circuitDb = open('./circuits.json','a')
-    
-    for line in lines:
-        data = json.loads(line)
-        if data['name']==(args.circuitName):
-            print "Circuit %s exists already. Use new name to create." % args.circuitName
-            sys.exit()
-        else:
-            circuitExists = False
-    
-    # retrieve source and destination device attachment points
-    # using DeviceManager rest API 
-    
-    command = "curl -s http://%s/wm/device/?ipv4=%s" % (args.controllerRestIp, args.srcAddress)
-    result = os.popen(command).read()
-    parsedResult = json.loads(result)
-    print command+"\n"
-    sourceSwitch = parsedResult[0]['attachmentPoint'][0]['switchDPID']
-    sourcePort = parsedResult[0]['attachmentPoint'][0]['port']
-    
-    command = "curl -s http://%s/wm/device/?ipv4=%s" % (args.controllerRestIp, args.dstAddress)
-    result = os.popen(command).read()
-    parsedResult = json.loads(result)
-    print command+"\n"
-    destSwitch = parsedResult[0]['attachmentPoint'][0]['switchDPID']
-    destPort = parsedResult[0]['attachmentPoint'][0]['port']
-    
-    print "Creating circuit:"
-    print "from source device at switch %s port %s" % (sourceSwitch,sourcePort)
-    print "to destination device at switch %s port %s"% (destSwitch,destPort)
-    
-    # retrieving route from source to destination
-    # using Routing rest API
-    
-    command = "curl -s http://%s/wm/topology/route/%s/%s/%s/%s/json" % (controllerRestIp, sourceSwitch, sourcePort, destSwitch, destPort)
-    
-    result = os.popen(command).read()
-    parsedResult = json.loads(result)
-
-    print command+"\n"
-    print result+"\n"
-
-    for i in range(len(parsedResult)):
-        if i % 2 == 0:
-            ap1Dpid = parsedResult[i]['switch']
-            ap1Port = parsedResult[i]['port']
-            print ap1Dpid, ap1Port
-            
-        else:
-            ap2Dpid = parsedResult[i]['switch']
-            ap2Port = parsedResult[i]['port']
-            print ap2Dpid, ap2Port
-            
-            # send one flow mod per pair of APs in route
-            # using StaticFlowPusher rest API
-
-            # IMPORTANT NOTE: current Floodlight StaticflowEntryPusher
-            # assumes all flow entries to have unique name across all switches
-            # this will most possibly be relaxed later, but for now we
-            # encode each flow entry's name with both switch dpid, user
-            # specified name, and flow type (f: forward, r: reverse, farp/rarp: arp)
-
-            command = "curl -s -d '{\"switch\": \"%s\", \"name\":\"%s\", \"src-ip\":\"%s\", \"dst-ip\":\"%s\", \"ether-type\":\"%s\", \"cookie\":\"0\", \"priority\":\"32768\", \"ingress-port\":\"%s\",\"active\":\"true\", \"actions\":\"output=%s\"}' http://%s/wm/staticflowentrypusher/json" % (ap1Dpid, ap1Dpid+"."+args.circuitName+".f", args.srcAddress, args.dstAddress, "0x800", ap1Port, ap2Port, controllerRestIp)
-            result = os.popen(command).read()
-            print command
-
-            command = "curl -s -d '{\"switch\": \"%s\", \"name\":\"%s\", \"ether-type\":\"%s\", \"cookie\":\"0\", \"priority\":\"32768\", \"ingress-port\":\"%s\",\"active\":\"true\", \"actions\":\"output=%s\"}' http://%s/wm/staticflowentrypusher/json" % (ap1Dpid, ap1Dpid+"."+args.circuitName+".farp", "0x806", ap1Port, ap2Port, controllerRestIp)
-            result = os.popen(command).read()
-            print command
-
-
-            command = "curl -s -d '{\"switch\": \"%s\", \"name\":\"%s\", \"src-ip\":\"%s\", \"dst-ip\":\"%s\", \"ether-type\":\"%s\", \"cookie\":\"0\", \"priority\":\"32768\", \"ingress-port\":\"%s\",\"active\":\"true\", \"actions\":\"output=%s\"}' http://%s/wm/staticflowentrypusher/json" % (ap1Dpid, ap1Dpid+"."+args.circuitName+".r", args.dstAddress, args.srcAddress, "0x800", ap2Port, ap1Port, controllerRestIp)
-            result = os.popen(command).read()
-            print command
-
-            command = "curl -s -d '{\"switch\": \"%s\", \"name\":\"%s\", \"ether-type\":\"%s\", \"cookie\":\"0\", \"priority\":\"32768\", \"ingress-port\":\"%s\",\"active\":\"true\", \"actions\":\"output=%s\"}' http://%s/wm/staticflowentrypusher/json" % (ap1Dpid, ap1Dpid+"."+args.circuitName+".rarp", "0x806", ap2Port, ap1Port, controllerRestIp)
-            result = os.popen(command).read()
-            print command
-            
-            # store created circuit attributes in local ./circuits.json
-            datetime = time.asctime()
-            circuitParams = {'name':args.circuitName, 'Dpid':ap1Dpid, 'inPort':ap1Port, 'outPort':ap2Port, 'datetime':datetime}
-            str = json.dumps(circuitParams)
-            circuitDb.write(str+"\n")
-
-        # confirm successful circuit creation
-        # using controller rest API
-            
-        command="curl -s http://%s/wm/core/switch/all/flow/json| python -mjson.tool" % (controllerRestIp)
-        result = os.popen(command).read()
-        print command + "\n" + result
-
-elif args.action=='delete':
-    
-    circuitDb = open('./circuits.json','w')
-
-    # removing previously created flow from switches
-    # using StaticFlowPusher rest API       
-    # currently, circuitpusher records created circuits in local file ./circuits.db 
-    # with circuit name and list of switches                                  
-
-    circuitExists = False
-
-    for line in lines:
-        data = json.loads(line)
-        if data['name']==(args.circuitName):
-            circuitExists = True
-
-            sw = data['Dpid']
-            print data, sw
-
-            command = "curl -X DELETE -d '{\"name\":\"%s\", \"switch\":\"%s\"}' http://%s/wm/staticflowentrypusher/json" % (sw+"."+args.circuitName+".f", sw, controllerRestIp)
-            result = os.popen(command).read()
-            print command, result
-
-            command = "curl -X DELETE -d '{\"name\":\"%s\", \"switch\":\"%s\"}' http://%s/wm/staticflowentrypusher/json" % (sw+"."+args.circuitName+".farp", sw, controllerRestIp)
-            result = os.popen(command).read()
-            print command, result
-
-            command = "curl -X DELETE -d '{\"name\":\"%s\", \"switch\":\"%s\"}' http://%s/wm/staticflowentrypusher/json" % (sw+"."+args.circuitName+".r", sw, controllerRestIp)
-            result = os.popen(command).read()
-            print command, result
-
-            command = "curl -X DELETE -d '{\"name\":\"%s\", \"switch\":\"%s\"}' http://%s/wm/staticflowentrypusher/json" % (sw+"."+args.circuitName+".rarp", sw, controllerRestIp)
-            result = os.popen(command).read()
-            print command, result            
-            
-        else:
-            circuitDb.write(line)
-
-    circuitDb.close()
-
-    if not circuitExists:
-        print "specified circuit does not exist"
-        sys.exit()
-
diff --git a/src/ext/floodlight/example/README b/src/ext/floodlight/example/README
deleted file mode 100644
index e3e8179..0000000
--- a/src/ext/floodlight/example/README
+++ /dev/null
@@ -1,28 +0,0 @@
-One of Floodlight's main goals is extensibility and flexibility.
-
-To prove that point, this directory includes a number of useful
-utilities as examples of what can do with this extensibility.
-
-UTILITIES:
---------------------------
-
-graphDeps.py and graphTopo.py
-
-    Read the module dependencies (graphDeps.py) or the topology
-    from the REST API and output it in the 'dot' format used by the
-    popular graphviz (www.graphviz.org) package so that they can
-    be visualized.
-
-    Example usage:
-        ./graphTopo.py $hostname                    # generate .dot file
-        dot -Tpdf -o $hostname.pdf $hostname.dot    # convert to PDF
-        open $hostname.pdf                          # open to view topology
-        
-
-
-packetStreamerClientExample.py
-
-    Example client for the packet streamer server in floodlight.
-    Allows you to intercept packets from floodlight's packet_in
-    processing chain and read them.
-
diff --git a/src/ext/floodlight/example/cli.py b/src/ext/floodlight/example/cli.py
deleted file mode 100755
index ca8b443..0000000
--- a/src/ext/floodlight/example/cli.py
+++ /dev/null
@@ -1,115 +0,0 @@
-#!/usr/bin/python
-
-import sys
-import argparse
-import json
-import httplib
-import urllib2
-
-class RestApi(object):
-
-    def __init__(self, server,port):
-        self.server = server
-        self.port = port
-
-    def get(self, path):
-        #ret = self.rest_call(path, {}, 'GET')
-        #return ret[2]
-        f = urllib2.urlopen('http://'+self.server+':'+str(self.port)+path)
-        ret = f.read()
-        return json.loads(ret)
-
-    def set(self, path, data):
-        ret = self.rest_call(path, data, 'POST')
-        return ret[0] == 200
-
-    def remove(self, objtype, data):
-        #ret = self.rest_call(data, 'DELETE')
-        return ret[0] == 200
-
-    def rest_call(self, path, data, action):
-        headers = {
-            'Content-type': 'application/json',
-            'Accept': 'application/json',
-            }
-        body = json.dumps(data)
-        conn = httplib.HTTPConnection(self.server, self.port)
-        conn.request(action, path, body, headers)
-        response = conn.getresponse()
-        ret = (response.status, response.reason, response.read())
-        conn.close()
-        print str(ret[2])
-        return ret
-
-
-    
-usage_desc =  """
-Command descriptions: 
-
-    host [debug]
-    link [tunnellinks]
-    port <blocked | broadcast>
-    memory
-    switch
-    switchclusters
-    counter [DPID] <name>
-    switch_stats [DPID] <port | queue | flow | aggregate | desc | table | features | host>
-"""
-
-def lookupPath(cmd):
-    path = ''
-
-    numargs = len(args.otherargs)
-
-    if args.cmd == 'switch_stats':
-        if numargs == 1:
-            path = '/wm/core/switch/all/'+args.otherargs[0]+'/json'
-        elif numargs == 2:
-            path = '/wm/core/switch/'+args.otherargs[0]+'/'+args.otherargs[1]+'/json'
-    elif args.cmd == 'switch':
-        path = '/wm/core/controller/switches/json'
-    elif args.cmd == 'counter':
-        if numargs == 1:
-            path = '/wm/core/counter/'+args.otherargs[0]+'/json'
-        elif numargs == 2:
-            path = '/wm/core/counter/'+args.otherargs[0]+'/'+args.otherargs[1]+'/json'
-    elif args.cmd == 'memory':
-        path = '/wm/core/memory/json'
-    elif args.cmd == 'link':
-        if numargs == 0:
-            path = '/wm/topology/links/json'
-        elif numargs == 1:
-            path = '/wm/topology/'+args.otherargs[0]+'/json'
-    elif args.cmd == 'port' and numargs == 1:
-        if args.otherargs[0] == "blocked":
-            path = '/wm/topology/blockedports/json'
-        elif args.otherargs[0] == "broadcast":
-            path = '/wm/topology/broadcastdomainports/json'
-    elif args.cmd == 'switchclusters':
-        path = '/wm/topology/switchclusters/json'
-    elif args.cmd == 'host':
-        path = '/wm/device/'
-        if len(args.otherargs) == 1 and args.otherargs[0] == 'debug':
-            path = '/wm/device/debug'
-    else:
-        print usage_desc
-        path = ''
-        exit(0)
-    return path
-
-parser = argparse.ArgumentParser(description='process args', usage=usage_desc, epilog='foo bar help')
-parser.add_argument('--ip', default='localhost')
-parser.add_argument('--port', default=8080)
-parser.add_argument('cmd')
-parser.add_argument('otherargs', nargs='*')
-args = parser.parse_args()
-
-#print args
-
-rest = RestApi(args.ip, args.port)
-path = lookupPath(args.cmd)
-
-out = rest.get(path)
-print json.dumps(out,sort_keys=True, indent=4)
-print "Number of items: " + str(len(out))
-
diff --git a/src/ext/floodlight/example/graphDeps.py b/src/ext/floodlight/example/graphDeps.py
deleted file mode 100755
index 505d516..0000000
--- a/src/ext/floodlight/example/graphDeps.py
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/python
-
-import urllib2
-import json
-import sys
-
-
-def simple_json_get(url):
-    return json.loads(urllib2.urlopen(url).read())
-
-
-def shorten(s):
-    return  s.replace('net.floodlightcontroller','n.f'
-            ).replace('com.bigswitch','c.b')
-
-def usage(s):
-    sys.stderr.write("Usage:\ngrahDeps.py hostname [port]\n%s" % s)
-    sys.stderr.write("\n\n\n\n    writes data to 'hostname.dot' for use with graphviz\n")
-    sys.exit(1)
-
-
-if __name__ == '__main__':
-
-    host='localhost'
-    port=8080
-
-    if len(sys.argv) == 1 or sys.argv[1] == '-h' or sys.argv[1] == '--help':
-        usage("need to specify hostname")
-
-    host = sys.argv[1]
-    if len(sys.argv) > 2:
-        port = int(sys.argv[2])
-
-    sys.stderr.write("Connecting to %s:%d ..." % (host,port))
-    URL="http://%s:%d/wm/core/module/loaded/json" % (host,port)
-
-    deps = simple_json_get(URL)
-    serviceMap = {}
-    nodeMap = {}
-    nodeCount = 0
-
-    sys.stderr.write("Writing to %s.dot ..." % (host))
-    f = open("%s.dot" % host, 'w')
-
-    f.write( "digraph Deps {\n")
-
-    for mod, info in deps.iteritems():
-        # sys.stderr.write("Discovered module %s\n" % mod)
-        nodeMap[mod] = "n%d" % nodeCount
-        nodeCount += 1
-        label = shorten(mod) + "\\n"
-        for service, serviceImpl in info['provides'].iteritems():
-            # sys.stderr.write("     Discovered service %s implemented with %s\n" % (service,serviceImpl))
-            label += "\\nService=%s" % shorten(service)
-            serviceMap[serviceImpl] = mod
-        f.write("     %s [ label=\"%s\", color=\"blue\"];\n" % (nodeMap[mod], label))
-
-    f.write("\n")      # for readability
-
-    for mod, info in deps.iteritems():
-        for dep, serviceImpl in info['depends'].iteritems():
-            f.write("     %s -> %s [ label=\"%s\"];\n" % (
-                    nodeMap[mod],
-                    shorten(nodeMap[serviceMap[serviceImpl]]),
-                    shorten(dep)))
-        
-
-    f.write("}\n")
-    f.close();
-    sys.stderr.write("Now type\ndot -Tpdf -o %s.pdf %s.dot\n" % (
-        host, host))
-        
diff --git a/src/ext/floodlight/example/graphTopo.py b/src/ext/floodlight/example/graphTopo.py
deleted file mode 100755
index b89a763..0000000
--- a/src/ext/floodlight/example/graphTopo.py
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/usr/bin/python
-
-import urllib2
-import json
-import sys
-
-
-def simple_json_get(url):
-    return json.loads(urllib2.urlopen(url).read())
-
-
-def shorten(s):
-    return  s.replace('net.floodlightcontroller','n.f'
-            ).replace('com.bigswitch','c.b')
-
-def usage(s):
-    sys.stderr.write("Usage:\ngrahTopo.py hostname [port]\n%s" % s)
-    sys.stderr.write("\n\n\n\n    writes data to 'hostname.dot' for use with graphviz\n")
-    sys.exit(1)
-
-
-if __name__ == '__main__':
-
-    host='localhost'
-    port=8080
-
-    if len(sys.argv) == 1 or sys.argv[1] == '-h' or sys.argv[1] == '--help':
-        usage("need to specify hostname")
-
-    host = sys.argv[1]
-    if len(sys.argv) > 2:
-        port = int(sys.argv[2])
-
-    sys.stderr.write("Connecting to %s:%d ..." % (host,port))
-    URL="http://%s:%d/wm/topology/links/json" % (host,port)
-
-    # {
-    # "dst-port": 2, 
-    # "dst-switch": "00:00:00:00:00:00:00:0a", 
-    # "src-port": 3, 
-    # "src-switch": "00:00:00:00:00:00:00:0c"
-    # }
-
-    links = simple_json_get(URL)
-    nodeMap = {}
-
-    sys.stderr.write("Writing to %s.dot ..." % (host))
-    f = open("%s.dot" % host, 'w')
-
-    f.write( "digraph Deps {\n")
-
-    for link in links:
-        # sys.stderr.write("Discovered module %s\n" % mod)
-        if not link['dst-switch'] in nodeMap:
-            sw = link['dst-switch']
-            nodeMap[sw] = "n%d" % len(nodeMap)
-            f.write("     %s [ label=\"dpid=%s\", color=\"blue\"];\n" % (nodeMap[sw], sw))
-
-        if not link['src-switch'] in nodeMap:
-            sw = link['src-switch']
-            nodeMap[sw] = "n%d" % len(nodeMap)
-            f.write("     %s [ label=\"dpid=%s\", color=\"blue\"];\n" % (nodeMap[sw], sw))
-
-
-        f.write("     %s -> %s [ label=\"%s\"];\n" % (
-                nodeMap[link['dst-switch']],
-                nodeMap[link['src-switch']],
-                "src_port %d --> dst_port %d" % (link['src-port'],link['dst-port'])
-                )
-                )
-        
-
-    f.write("}\n")
-    f.close();
-    sys.stderr.write("Now type\ndot -Tpdf -o %s.pdf %s.dot\n" % (
-        host, host))
-        
diff --git a/src/ext/floodlight/example/packetStreamerClientExample.py b/src/ext/floodlight/example/packetStreamerClientExample.py
deleted file mode 100755
index 4510374..0000000
--- a/src/ext/floodlight/example/packetStreamerClientExample.py
+++ /dev/null
@@ -1,138 +0,0 @@
-#!/usr/bin/python
-
-import urllib2
-import json
-import re
-import sys
-
-from optparse import OptionParser
-
-sys.path.append('~/floodlight/target/gen-py')
-sys.path.append('~/floodlight/thrift/lib/py')
-
-from packetstreamer import PacketStreamer
-from packetstreamer.ttypes import *
-
-from thrift import Thrift
-from thrift.transport import TSocket
-from thrift.transport import TTransport
-from thrift.protocol import TBinaryProtocol
-
-SESSIONID = 'sessionId'
-usage = "usage: %prog [options]"
-parser = OptionParser(usage=usage, version="%prog 1.0")
-parser.add_option("-c", "--controller", dest="controller", metavar="CONTROLLER_IP",
-                  default="127.0.0.1", help="controller's IP address")
-parser.add_option("-m", "--mac", dest="mac", metavar="HOST_MAC",
-                  help="The host mac address to trace the OF packets")
-
-(options, args) = parser.parse_args()
-
-def validateIp(ip):
-    ipReg = ("(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" 
-             "\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
-             "\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
-             "\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)")
-    m = re.compile(ipReg).match(ip)
-    if m:
-        return True
-    else :
-        return False
-
-def validateMac(mac):
-    macReg = '([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}' # same regex as above
-    m = re.compile(macReg).match(mac)
-    if m:
-        return True
-    else :
-        return False
-
-if not validateIp(options.controller):
-    parser.error("Invalid format for ip address.")
-
-if not options.mac:
-    parser.error("-m or --mac option is required.")
-
-if not validateMac(options.mac):
-    parser.error("Invalid format for mac address. Format: xx:xx:xx:xx:xx:xx")
-
-controller = options.controller
-host = options.mac
-
-url = 'http://%s:8080/wm/core/packettrace/json' % controller
-filter = {'mac':host, 'direction':'both', 'period':1000}
-post_data = json.dumps(filter)
-request = urllib2.Request(url, post_data, {'Content-Type':'application/json'})
-response_text = None
-
-def terminateTrace(sid):
-    global controller
-
-    filter = {SESSIONID:sid, 'period':-1}
-    post_data = json.dumps(filter)
-    url = 'http://%s:8080/wm/core/packettrace/json' % controller
-    request = urllib2.Request(url, post_data, {'Content-Type':'application/json'})
-    try:
-        response = urllib2.urlopen(request)
-        response_text = response.read()
-    except Exception, e:
-        # Floodlight may not be running, but we don't want that to be a fatal
-        # error, so we just ignore the exception in that case.
-        print "Exception:", e
-
-try: 
-    response = urllib2.urlopen(request)
-    response_text = response.read()
-except Exception, e:
-    # Floodlight may not be running, but we don't want that to be a fatal
-    # error, so we just ignore the exception in that case.
-    print "Exception:", e
-    exit
-
-if not response_text:
-    print "Failed to start a packet trace session"
-    sys.exit()
-
-response_text = json.loads(response_text)
-
-sessionId = None
-if SESSIONID in response_text:
-    sessionId = response_text[SESSIONID]
-else:
-    print "Failed to start a packet trace session"
-    sys.exit()
-
-try:
-
-    # Make socket
-    transport = TSocket.TSocket('localhost', 9090)
-
-    # Buffering is critical. Raw sockets are very slow
-    transport = TTransport.TFramedTransport(transport)
-
-    # Wrap in a protocol
-    protocol = TBinaryProtocol.TBinaryProtocol(transport)
-
-    # Create a client to use the protocol encoder
-    client = PacketStreamer.Client(protocol)
-
-    # Connect!
-    transport.open()
-
-    while 1:
-        packets = client.getPackets(sessionId)
-        for packet in packets:
-            print "Packet: %s"% packet
-            if "FilterTimeout" in packet:
-                sys.exit()
-
-except Thrift.TException, e:
-    print '%s' % (e.message)
-    terminateTrace(sessionId)
-
-except KeyboardInterrupt, e:
-    terminateTrace(sessionId)
-
-# Close!
-transport.close()
-
diff --git a/src/ext/floodlight/floodlight.sh b/src/ext/floodlight/floodlight.sh
deleted file mode 100755
index 5bc8564..0000000
--- a/src/ext/floodlight/floodlight.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh
-
-# Set paths
-FL_HOME=`dirname $0`
-FL_JAR="${FL_HOME}/target/floodlight.jar"
-FL_LOGBACK="${FL_HOME}/logback.xml"
-
-# Set JVM options
-JVM_OPTS=""
-JVM_OPTS="$JVM_OPTS -server -d64"
-JVM_OPTS="$JVM_OPTS -Xmx2g -Xms2g -Xmn800m"
-JVM_OPTS="$JVM_OPTS -XX:+UseParallelGC -XX:+AggressiveOpts -XX:+UseFastAccessorMethods"
-JVM_OPTS="$JVM_OPTS -XX:MaxInlineSize=8192 -XX:FreqInlineSize=8192"
-JVM_OPTS="$JVM_OPTS -XX:CompileThreshold=1500 -XX:PreBlockSpin=8"
-JVM_OPTS="$JVM_OPTS -Dpython.security.respectJavaAccessibility=false"
-
-# Create a logback file if required
-[ -f ${FL_LOGBACK} ] || cat <<EOF_LOGBACK >${FL_LOGBACK}
-<configuration scan="true">
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%level [%logger:%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="net.floodlightcontroller.logging" level="ERROR"/>
-</configuration>
-EOF_LOGBACK
-
-echo "Starting floodlight server ..."
-java ${JVM_OPTS} -Dlogback.configurationFile=${FL_LOGBACK} -jar ${FL_JAR}
diff --git a/src/ext/floodlight/floodlight_style_settings.xml b/src/ext/floodlight/floodlight_style_settings.xml
deleted file mode 100644
index 51ff232..0000000
--- a/src/ext/floodlight/floodlight_style_settings.xml
+++ /dev/null
@@ -1,291 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<profiles version="12">
-<profile kind="CodeFormatterProfile" name="Floodlight" version="12">
-<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="82"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
-<setting id="org.eclipse.jdt.core.compiler.source" value="1.7"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="77"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="20"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="2"/>
-<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
-<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="20"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
-<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.7"/>
-<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="20"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="80"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="18"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.7"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="82"/>
-<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="82"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="2"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
-</profile>
-</profiles>
diff --git a/src/ext/floodlight/logback.xml b/src/ext/floodlight/logback.xml
deleted file mode 100644
index b85b463..0000000
--- a/src/ext/floodlight/logback.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<configuration scan="true">
-  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>%level [%logger:%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="net.floodlightcontroller.logging" level="WARN"/>
-</configuration>
diff --git a/src/ext/floodlight/setup-eclipse.sh b/src/ext/floodlight/setup-eclipse.sh
deleted file mode 100755
index a39dc62..0000000
--- a/src/ext/floodlight/setup-eclipse.sh
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/bash
-
-d=$(dirname $0)
-MAIN_CLASS=$1
-LIBRARIES=$2
-[ "${MAIN_CLASS}" ] || { echo "Run 'ant eclipse' to generate Eclipse project files"; exit 1; }
-
-
-cat >$d/.project <<EOF
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>floodlight</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
-EOF
-
-
-cat >$d/.classpath <<EOF
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src/main/java" output="target/bin"/>
-	<classpathentry kind="src" path="src/main/resources"/>
-        <classpathentry kind="src" path="src/test/java" output="target/bin-test"/>
-        <classpathentry kind="src" path="lib/gen-java" output="target/bin"/>
-EOF
-(
-IFS=":"
-for l in ${LIBRARIES}; do
-cat >>$d/.classpath <<EOF
-	<classpathentry exported="true" kind="lib" path="$l"/>
-EOF
-done
-)
-cat >>$d/.classpath <<EOF
-	<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="output" path="target/bin"/>
-</classpath>
-EOF
diff --git a/src/floodlight/Makefile b/src/floodlight/Makefile
deleted file mode 100644
index d4cfa39..0000000
--- a/src/floodlight/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Because I am old and crotchety and my fingers can't stop from running 
-#	`make` commands
-
-.PHONY: all doc tests clean
-
-all:
-	ant
-
-init:
-	ant init
-
-doc:
-	ant javadoc
-
-tests: all unit-tests
-
-unit-tests:
-	ant tests
-
-clean:
-	ant clean
diff --git a/src/floodlight/build.xml b/src/floodlight/build.xml
deleted file mode 100644
index 20dd0ce..0000000
--- a/src/floodlight/build.xml
+++ /dev/null
@@ -1,279 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-
- <!--
-   Copyright 2011, Big Switch Networks, Inc.
-   
-   Licensed to the Apache Software Foundation (ASF) under one or more
-   contributor license agreements.  See the NOTICE file distributed with
-   this work for additional information regarding copyright ownership.
-   The ASF licenses this file to You under the Apache License, Version 2.0
-   (the "License"); you may not use this file except in compliance with
-   the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<!--
-    The build uses pregenerated Thrift code by default to reduce build
-    dependencies. To generate it locally run the gen-thrift target.
-    If you change the Thrift files be sure to also commit the updated
-    generated code.
--->
-
-<project default="dist" name="Floodlight">
-    <property name="target" location="target"/>
-    <property name="build" location="${target}/bin"/>
-    <property name="build-test" location="${target}/bin-test"/>
-    <property name="build-coverage" location="${target}/bin-coverage"/>
-    <property name="test-output" location="${target}/test"/>
-    <property name="coverage-output" location="${target}/coverage"/>
-    <property name="fl-dir" location="../ext/floodlight"/>
-    <property name="source" location="${fl-dir}/src/main/java"/>
-    <property name="resources" location="${fl-dir}/src/main/resources/"/>
-    <property name="source-test" location="${fl-dir}/src/test/java"/>
-    <property name="python-src" location="${fl-dir}/src/main/python"/>
-    <property name="docs" location="${target}/docs"/>
-    <property name="main-class" value="net.floodlightcontroller.core.Main"/>
-    <property name="floodlight-jar" location="${target}/floodlight.jar"/>
-    <property name="floodlight-test-jar" location="${target}/floodlight-test.jar"/>
-    <property name="thrift.dir" value="${fl-dir}/src/main/thrift"/>
-    <property name="thrift.out.dir" value="${fl-dir}/lib/gen-java"/>
-    <property name="thrift.package" value="net/floodlightcontroller/packetstreamer/thrift"/>
-    <property name="ant.build.javac.source" value="1.6"/>
-    <property name="ant.build.javac.target" value="1.6"/>
-    <property name="lib" location="${fl-dir}/lib"/>
-
-    <patternset id="lib">
-        <include name="logback-classic-1.0.0.jar"/>
-        <include name="logback-core-1.0.0.jar"/>
-        <include name="jackson-core-asl-1.8.6.jar"/>
-        <include name="jackson-mapper-asl-1.8.6.jar"/>
-        <include name="slf4j-api-1.6.4.jar"/>
-        <include name="org.restlet-2.1-RC1.jar"/>
-        <include name="org.restlet.ext.jackson-2.1-RC1.jar"/>
-        <include name="org.restlet.ext.simple-2.1-RC1.jar"/>
-        <include name="org.restlet.ext.slf4j-2.1-RC1.jar"/>
-        <include name="simple-4.1.21.jar"/>
-        <include name="netty-3.2.6.Final.jar"/>
-        <include name="args4j-2.0.16.jar"/>
-        <include name="concurrentlinkedhashmap-lru-1.2.jar"/>
-        <include name="jython-2.5.2.jar"/>
-        <include name="libthrift-0.7.0.jar"/>
-    </patternset>
-
-    <path id="classpath">
-        <fileset dir="${lib}">
-            <patternset refid="lib"/>
-        </fileset>
-    </path>
-
-    <patternset id="lib-cobertura">
-        <include name="cobertura-1.9.4.1.jar"/>
-        <include name="asm-3.0.jar"/>
-        <include name="asm-tree-3.0.jar"/>
-        <include name="oro/jakarta-oro-2.0.8.jar"/>
-        <include name="log4j-1.2.9.jar"/>
-    </patternset>
-    <path id="classpath-cobertura">
-        <fileset dir="${lib}">
-            <patternset refid="lib-cobertura"/>
-    </fileset>
-    </path>
-
-    <patternset id="lib-test">
-        <include name="junit-4.8.2.jar"/>
-        <include name="org.easymock-3.1.jar"/>
-        <include name="objenesis-1.2.jar"/>  <!-- required by easymock to mock classes -->
-        <include name="cglib-nodep-2.2.2.jar"/>    <!-- required by easymock to mock classes -->
-    </patternset>
-    <path id="classpath-test">
-        <fileset dir="${lib}">
-            <patternset refid="lib-test"/>
-            <patternset refid="lib-cobertura"/>
-            <patternset refid="lib"/>
-        </fileset>
-    </path>
-
-    <target name="init">
-        <mkdir dir="${build}"/>
-        <mkdir dir="${build-test}"/>
-        <mkdir dir="${target}/lib"/>
-        <mkdir dir="${thrift.out.dir}"/>
-        <mkdir dir="${test-output}"/>
-    </target>
-
-    <target name="compile" depends="init">
-        <javac includeAntRuntime="false" 
-           classpathref="classpath" 
-           debug="true" 
-           srcdir="${source}:${thrift.out.dir}"
-           destdir="${build}">
-        </javac>
-    </target>
-
-    <target name="compile-tests" depends="compile-test"/>
-    <target name="compile-test" depends="compile">
-        <fileset dir="${resources}"/>
-        <javac includeAntRuntime="false" debug="true" 
-           srcdir="${source-test}"
-           classpath="${build}"
-           classpathref="classpath-test"
-           destdir="${build-test}"/>
-    </target>
-
-    <!-- Thrift build based on http://www.flester.com/blog/2009/04/26/using-thrift-from-ant -->
-    <fileset id="thrift.files" dir="${thrift.dir}">
-        <include name="**/*.thrift"/>
-    </fileset>
-
-    <target name="gen-thrift" depends="init">
-        <pathconvert property="thrift.file.list" refid="thrift.files"
-            pathsep=" " dirsep="/">
-        </pathconvert>
-        <echo message="Running thrift generator on ${thrift.file.list}"/>
-        <exec executable="thrift" dir="${basedir}" failonerror="true">
-            <arg line="--strict -v --gen java -o ${thrift.out.dir}/.. ${thrift.file.list}"/>
-        </exec>
-        <!-- Get rid of annoying warnings in thrift java: at annotations -->
-        <echo message="Adding @SuppressWarning annotations"/>
-        <replaceregexp byline="true">
-            <regexp pattern="^public "/>
-            <substitution expression='@SuppressWarnings("all") public '/>
-            <fileset id="thrift.output.files" dir="${thrift.out.dir}/..">
-                <include name="**/*.java"/>
-            </fileset>
-        </replaceregexp>
-    </target>
-
-    <target name="clean">
-        <delete dir="${target}"/>
-    </target>
-
-    <target name="run" depends="dist">
-        <java fork="true" jar="${floodlight-jar}" classpathref="classpath">
-            <jvmarg value="-server"/>
-            <jvmarg value="-Xms1024M"/>
-            <jvmarg value="-Xmx1024M"/>
-        </java>
-    </target>
-
-    <target name="tests" depends="test"/>
-    <target name="test" depends="compile-test">
-        <junit fork="true" forkmode="once"
-           failureproperty="junit.failure"
-           printsummary="on">
-        <sysproperty key="net.sourceforge.cobertura.datafile"
-             file="${target}/cobertura.ser" />
-            <classpath>
-                <pathelement location="${build-coverage}"/>
-                <pathelement location="${build}"/>
-                <pathelement location="${build-test}"/>
-                <pathelement location="${floodlight-jar}"/>
-                <path refid="classpath-test"/>
-            </classpath>
-            <formatter type="brief" usefile="true" />
-            <batchtest todir="${test-output}">
-                <fileset dir="${source-test}">
-                    <exclude name="**/storage/tests/StorageTest.java"/>
-				    <include name="**/*Test*.java"/>
-                    <exclude name="**/core/test/**"/>
-                    <exclude name="**/core/module/**"/>
-                </fileset>
-            </batchtest>
-        </junit>
-        <fail if="junit.failure" message="Unit test(s) failed.  See reports!"/>
-    </target>
-
-    <taskdef classpathref="classpath-cobertura" resource="tasks.properties"/>
-    <target name="clean-instrument">
-        <delete file="${target}/cobertura.ser"/>
-        <delete dir="${build-coverage}"/>
-    </target>
-    <target name="instrument" depends="compile,compile-test,clean-instrument">
-      <cobertura-instrument datafile="${target}/cobertura.ser"
-                todir="${build-coverage}"
-                classpathref="classpath-cobertura">
-    <fileset dir="${build}">
-      <include name="**/*.class"/>
-    </fileset>
-      </cobertura-instrument>
-    </target>
-    <target name="coverage-report">
-        <cobertura-report format="html"
-              datafile="${target}/cobertura.ser"
-              destdir="${coverage-output}"
-              srcdir="${source}"/>
-        <cobertura-report format="xml"
-              datafile="${target}/cobertura.ser"
-              destdir="${coverage-output}"
-              srcdir="${source}"/>
-    </target>
-    <target name="coverage" depends="instrument,test,coverage-report"/>
-
-    <target name="dist" depends="compile,compile-test">
-        <jar destfile="${floodlight-jar}" filesetmanifest="mergewithoutmain">
-            <manifest>
-                <attribute name="Main-Class" value="${main-class}"/>
-                <attribute name="Class-Path" value="."/>
-            </manifest>
-            <fileset dir="${build}"/>
-            <fileset dir="${resources}"/>
-            <fileset dir="${python-src}">
-                <include name="**/*.py"/>
-            </fileset>
-            <zipgroupfileset dir="${lib}">
-                <patternset refid="lib"/>
-            </zipgroupfileset>
-        </jar>
-        <jar destfile="${floodlight-test-jar}" filesetmanifest="mergewithoutmain">
-            <manifest>
-                <attribute name="Class-Path" value="."/>
-            </manifest>
-            <fileset dir="${build-test}"/>
-            <fileset dir="${resources}"/>
-            <zipgroupfileset dir="${lib}">
-                <patternset refid="lib-test"/>
-                <patternset refid="lib-cobertura"/>
-            </zipgroupfileset>
-        </jar>
-    </target>
-
-    <target name="javadoc">
-        <javadoc access="protected"
-            author="true"
-            classpathref="classpath"
-            destdir="${docs}"
-            doctitle="Floodlight"
-            nodeprecated="false"
-            nodeprecatedlist="false"
-            noindex="false"
-            nonavbar="false"
-            notree="false"
-            source="1.6"
-            sourcepath="${source}"
-            splitindex="true"
-            use="true"
-            version="true"/>
-    </target>
-
-    <target name="eclipse" depends="init">
-        <pathconvert property="eclipse-lib">
-            <map from="${basedir}/" to=""/>
-            <fileset dir="${lib}">
-                <patternset refid="lib"/>
-                <patternset refid="lib-test"/>
-            </fileset>
-        </pathconvert>
-        <exec executable="${fl-dir}/setup-eclipse.sh">
-            <arg value="${main-class}"/>
-            <arg value="${eclipse-lib}"/>
-        </exec>
-    </target>
-
-</project>
diff --git a/src/ext/floodlight/src/main/images/Floodlight Icons.sketch/Data b/src/main/images/Floodlight Icons.sketch/Data
similarity index 100%
rename from src/ext/floodlight/src/main/images/Floodlight Icons.sketch/Data
rename to src/main/images/Floodlight Icons.sketch/Data
Binary files differ
diff --git a/src/ext/floodlight/src/main/images/Floodlight Icons.sketch/QuickLook/Preview.png b/src/main/images/Floodlight Icons.sketch/QuickLook/Preview.png
similarity index 100%
rename from src/ext/floodlight/src/main/images/Floodlight Icons.sketch/QuickLook/Preview.png
rename to src/main/images/Floodlight Icons.sketch/QuickLook/Preview.png
Binary files differ
diff --git a/src/ext/floodlight/src/main/images/Floodlight Icons.sketch/QuickLook/Thumbnail.png b/src/main/images/Floodlight Icons.sketch/QuickLook/Thumbnail.png
similarity index 100%
rename from src/ext/floodlight/src/main/images/Floodlight Icons.sketch/QuickLook/Thumbnail.png
rename to src/main/images/Floodlight Icons.sketch/QuickLook/Thumbnail.png
Binary files differ
diff --git a/src/ext/floodlight/src/main/images/README b/src/main/images/README
similarity index 100%
rename from src/ext/floodlight/src/main/images/README
rename to src/main/images/README
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/FloodlightContext.java b/src/main/java/net/floodlightcontroller/core/FloodlightContext.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/FloodlightContext.java
rename to src/main/java/net/floodlightcontroller/core/FloodlightContext.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/FloodlightContextStore.java b/src/main/java/net/floodlightcontroller/core/FloodlightContextStore.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/FloodlightContextStore.java
rename to src/main/java/net/floodlightcontroller/core/FloodlightContextStore.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/FloodlightProvider.java b/src/main/java/net/floodlightcontroller/core/FloodlightProvider.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/FloodlightProvider.java
rename to src/main/java/net/floodlightcontroller/core/FloodlightProvider.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/IFloodlightProviderService.java b/src/main/java/net/floodlightcontroller/core/IFloodlightProviderService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/IFloodlightProviderService.java
rename to src/main/java/net/floodlightcontroller/core/IFloodlightProviderService.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/IHAListener.java b/src/main/java/net/floodlightcontroller/core/IHAListener.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/IHAListener.java
rename to src/main/java/net/floodlightcontroller/core/IHAListener.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/IInfoProvider.java b/src/main/java/net/floodlightcontroller/core/IInfoProvider.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/IInfoProvider.java
rename to src/main/java/net/floodlightcontroller/core/IInfoProvider.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/IListener.java b/src/main/java/net/floodlightcontroller/core/IListener.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/IListener.java
rename to src/main/java/net/floodlightcontroller/core/IListener.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/IOFMessageFilterManagerService.java b/src/main/java/net/floodlightcontroller/core/IOFMessageFilterManagerService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/IOFMessageFilterManagerService.java
rename to src/main/java/net/floodlightcontroller/core/IOFMessageFilterManagerService.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/IOFMessageListener.java b/src/main/java/net/floodlightcontroller/core/IOFMessageListener.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/IOFMessageListener.java
rename to src/main/java/net/floodlightcontroller/core/IOFMessageListener.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/IOFSwitch.java b/src/main/java/net/floodlightcontroller/core/IOFSwitch.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/IOFSwitch.java
rename to src/main/java/net/floodlightcontroller/core/IOFSwitch.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/IOFSwitchFilter.java b/src/main/java/net/floodlightcontroller/core/IOFSwitchFilter.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/IOFSwitchFilter.java
rename to src/main/java/net/floodlightcontroller/core/IOFSwitchFilter.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/IOFSwitchListener.java b/src/main/java/net/floodlightcontroller/core/IOFSwitchListener.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/IOFSwitchListener.java
rename to src/main/java/net/floodlightcontroller/core/IOFSwitchListener.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/Main.java b/src/main/java/net/floodlightcontroller/core/Main.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/Main.java
rename to src/main/java/net/floodlightcontroller/core/Main.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/OFMessageFilterManager.java b/src/main/java/net/floodlightcontroller/core/OFMessageFilterManager.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/OFMessageFilterManager.java
rename to src/main/java/net/floodlightcontroller/core/OFMessageFilterManager.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/annotations/LogMessageCategory.java b/src/main/java/net/floodlightcontroller/core/annotations/LogMessageCategory.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/annotations/LogMessageCategory.java
rename to src/main/java/net/floodlightcontroller/core/annotations/LogMessageCategory.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/annotations/LogMessageDoc.java b/src/main/java/net/floodlightcontroller/core/annotations/LogMessageDoc.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/annotations/LogMessageDoc.java
rename to src/main/java/net/floodlightcontroller/core/annotations/LogMessageDoc.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/annotations/LogMessageDocs.java b/src/main/java/net/floodlightcontroller/core/annotations/LogMessageDocs.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/annotations/LogMessageDocs.java
rename to src/main/java/net/floodlightcontroller/core/annotations/LogMessageDocs.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/CmdLineSettings.java b/src/main/java/net/floodlightcontroller/core/internal/CmdLineSettings.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/CmdLineSettings.java
rename to src/main/java/net/floodlightcontroller/core/internal/CmdLineSettings.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/Controller.java b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/Controller.java
rename to src/main/java/net/floodlightcontroller/core/internal/Controller.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/HandshakeTimeoutException.java b/src/main/java/net/floodlightcontroller/core/internal/HandshakeTimeoutException.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/HandshakeTimeoutException.java
rename to src/main/java/net/floodlightcontroller/core/internal/HandshakeTimeoutException.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/HandshakeTimeoutHandler.java b/src/main/java/net/floodlightcontroller/core/internal/HandshakeTimeoutHandler.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/HandshakeTimeoutHandler.java
rename to src/main/java/net/floodlightcontroller/core/internal/HandshakeTimeoutHandler.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/IOFSwitchFeatures.java b/src/main/java/net/floodlightcontroller/core/internal/IOFSwitchFeatures.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/IOFSwitchFeatures.java
rename to src/main/java/net/floodlightcontroller/core/internal/IOFSwitchFeatures.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/OFChannelState.java b/src/main/java/net/floodlightcontroller/core/internal/OFChannelState.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/OFChannelState.java
rename to src/main/java/net/floodlightcontroller/core/internal/OFChannelState.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/OFFeaturesReplyFuture.java b/src/main/java/net/floodlightcontroller/core/internal/OFFeaturesReplyFuture.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/OFFeaturesReplyFuture.java
rename to src/main/java/net/floodlightcontroller/core/internal/OFFeaturesReplyFuture.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/OFMessageDecoder.java b/src/main/java/net/floodlightcontroller/core/internal/OFMessageDecoder.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/OFMessageDecoder.java
rename to src/main/java/net/floodlightcontroller/core/internal/OFMessageDecoder.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/OFMessageEncoder.java b/src/main/java/net/floodlightcontroller/core/internal/OFMessageEncoder.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/OFMessageEncoder.java
rename to src/main/java/net/floodlightcontroller/core/internal/OFMessageEncoder.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/OFMessageFuture.java b/src/main/java/net/floodlightcontroller/core/internal/OFMessageFuture.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/OFMessageFuture.java
rename to src/main/java/net/floodlightcontroller/core/internal/OFMessageFuture.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/OFStatisticsFuture.java b/src/main/java/net/floodlightcontroller/core/internal/OFStatisticsFuture.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/OFStatisticsFuture.java
rename to src/main/java/net/floodlightcontroller/core/internal/OFStatisticsFuture.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImpl.java b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImpl.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImpl.java
rename to src/main/java/net/floodlightcontroller/core/internal/OFSwitchImpl.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/OpenflowPipelineFactory.java b/src/main/java/net/floodlightcontroller/core/internal/OpenflowPipelineFactory.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/OpenflowPipelineFactory.java
rename to src/main/java/net/floodlightcontroller/core/internal/OpenflowPipelineFactory.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/RoleChanger.java b/src/main/java/net/floodlightcontroller/core/internal/RoleChanger.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/RoleChanger.java
rename to src/main/java/net/floodlightcontroller/core/internal/RoleChanger.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/SwitchStateException.java b/src/main/java/net/floodlightcontroller/core/internal/SwitchStateException.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/internal/SwitchStateException.java
rename to src/main/java/net/floodlightcontroller/core/internal/SwitchStateException.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleContext.java b/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleContext.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleContext.java
rename to src/main/java/net/floodlightcontroller/core/module/FloodlightModuleContext.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleException.java b/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleException.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleException.java
rename to src/main/java/net/floodlightcontroller/core/module/FloodlightModuleException.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleLoader.java b/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleLoader.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleLoader.java
rename to src/main/java/net/floodlightcontroller/core/module/FloodlightModuleLoader.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/module/IFloodlightModule.java b/src/main/java/net/floodlightcontroller/core/module/IFloodlightModule.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/module/IFloodlightModule.java
rename to src/main/java/net/floodlightcontroller/core/module/IFloodlightModule.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/module/IFloodlightModuleContext.java b/src/main/java/net/floodlightcontroller/core/module/IFloodlightModuleContext.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/module/IFloodlightModuleContext.java
rename to src/main/java/net/floodlightcontroller/core/module/IFloodlightModuleContext.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/module/IFloodlightService.java b/src/main/java/net/floodlightcontroller/core/module/IFloodlightService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/module/IFloodlightService.java
rename to src/main/java/net/floodlightcontroller/core/module/IFloodlightService.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/module/ModuleLoaderResource.java b/src/main/java/net/floodlightcontroller/core/module/ModuleLoaderResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/module/ModuleLoaderResource.java
rename to src/main/java/net/floodlightcontroller/core/module/ModuleLoaderResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/types/MacVlanPair.java b/src/main/java/net/floodlightcontroller/core/types/MacVlanPair.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/types/MacVlanPair.java
rename to src/main/java/net/floodlightcontroller/core/types/MacVlanPair.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/types/SwitchMessagePair.java b/src/main/java/net/floodlightcontroller/core/types/SwitchMessagePair.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/types/SwitchMessagePair.java
rename to src/main/java/net/floodlightcontroller/core/types/SwitchMessagePair.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/util/AppCookie.java b/src/main/java/net/floodlightcontroller/core/util/AppCookie.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/util/AppCookie.java
rename to src/main/java/net/floodlightcontroller/core/util/AppCookie.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/util/ListenerDispatcher.java b/src/main/java/net/floodlightcontroller/core/util/ListenerDispatcher.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/util/ListenerDispatcher.java
rename to src/main/java/net/floodlightcontroller/core/util/ListenerDispatcher.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/util/MutableInteger.java b/src/main/java/net/floodlightcontroller/core/util/MutableInteger.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/util/MutableInteger.java
rename to src/main/java/net/floodlightcontroller/core/util/MutableInteger.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/util/SingletonTask.java b/src/main/java/net/floodlightcontroller/core/util/SingletonTask.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/util/SingletonTask.java
rename to src/main/java/net/floodlightcontroller/core/util/SingletonTask.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/AllSwitchStatisticsResource.java b/src/main/java/net/floodlightcontroller/core/web/AllSwitchStatisticsResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/AllSwitchStatisticsResource.java
rename to src/main/java/net/floodlightcontroller/core/web/AllSwitchStatisticsResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/ControllerMemoryResource.java b/src/main/java/net/floodlightcontroller/core/web/ControllerMemoryResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/ControllerMemoryResource.java
rename to src/main/java/net/floodlightcontroller/core/web/ControllerMemoryResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/ControllerRoleResource.java b/src/main/java/net/floodlightcontroller/core/web/ControllerRoleResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/ControllerRoleResource.java
rename to src/main/java/net/floodlightcontroller/core/web/ControllerRoleResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/ControllerSummaryResource.java b/src/main/java/net/floodlightcontroller/core/web/ControllerSummaryResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/ControllerSummaryResource.java
rename to src/main/java/net/floodlightcontroller/core/web/ControllerSummaryResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/ControllerSwitchesResource.java b/src/main/java/net/floodlightcontroller/core/web/ControllerSwitchesResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/ControllerSwitchesResource.java
rename to src/main/java/net/floodlightcontroller/core/web/ControllerSwitchesResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java b/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java
rename to src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/CounterResource.java b/src/main/java/net/floodlightcontroller/core/web/CounterResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/CounterResource.java
rename to src/main/java/net/floodlightcontroller/core/web/CounterResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/CounterResourceBase.java b/src/main/java/net/floodlightcontroller/core/web/CounterResourceBase.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/CounterResourceBase.java
rename to src/main/java/net/floodlightcontroller/core/web/CounterResourceBase.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/EventHistoryTopologyClusterResource.java b/src/main/java/net/floodlightcontroller/core/web/EventHistoryTopologyClusterResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/EventHistoryTopologyClusterResource.java
rename to src/main/java/net/floodlightcontroller/core/web/EventHistoryTopologyClusterResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/EventHistoryTopologyLinkResource.java b/src/main/java/net/floodlightcontroller/core/web/EventHistoryTopologyLinkResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/EventHistoryTopologyLinkResource.java
rename to src/main/java/net/floodlightcontroller/core/web/EventHistoryTopologyLinkResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/EventHistoryTopologySwitchResource.java b/src/main/java/net/floodlightcontroller/core/web/EventHistoryTopologySwitchResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/EventHistoryTopologySwitchResource.java
rename to src/main/java/net/floodlightcontroller/core/web/EventHistoryTopologySwitchResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/HealthCheckResource.java b/src/main/java/net/floodlightcontroller/core/web/HealthCheckResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/HealthCheckResource.java
rename to src/main/java/net/floodlightcontroller/core/web/HealthCheckResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/LoadedModuleLoaderResource.java b/src/main/java/net/floodlightcontroller/core/web/LoadedModuleLoaderResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/LoadedModuleLoaderResource.java
rename to src/main/java/net/floodlightcontroller/core/web/LoadedModuleLoaderResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/PacketTraceResource.java b/src/main/java/net/floodlightcontroller/core/web/PacketTraceResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/PacketTraceResource.java
rename to src/main/java/net/floodlightcontroller/core/web/PacketTraceResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/RoleInfo.java b/src/main/java/net/floodlightcontroller/core/web/RoleInfo.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/RoleInfo.java
rename to src/main/java/net/floodlightcontroller/core/web/RoleInfo.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/StorageSourceTablesResource.java b/src/main/java/net/floodlightcontroller/core/web/StorageSourceTablesResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/StorageSourceTablesResource.java
rename to src/main/java/net/floodlightcontroller/core/web/StorageSourceTablesResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/SwitchCounterCategoriesResource.java b/src/main/java/net/floodlightcontroller/core/web/SwitchCounterCategoriesResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/SwitchCounterCategoriesResource.java
rename to src/main/java/net/floodlightcontroller/core/web/SwitchCounterCategoriesResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/SwitchCounterResource.java b/src/main/java/net/floodlightcontroller/core/web/SwitchCounterResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/SwitchCounterResource.java
rename to src/main/java/net/floodlightcontroller/core/web/SwitchCounterResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/SwitchResourceBase.java b/src/main/java/net/floodlightcontroller/core/web/SwitchResourceBase.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/SwitchResourceBase.java
rename to src/main/java/net/floodlightcontroller/core/web/SwitchResourceBase.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/SwitchRoleResource.java b/src/main/java/net/floodlightcontroller/core/web/SwitchRoleResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/SwitchRoleResource.java
rename to src/main/java/net/floodlightcontroller/core/web/SwitchRoleResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/SwitchStatisticsResource.java b/src/main/java/net/floodlightcontroller/core/web/SwitchStatisticsResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/SwitchStatisticsResource.java
rename to src/main/java/net/floodlightcontroller/core/web/SwitchStatisticsResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/SystemUptimeResource.java b/src/main/java/net/floodlightcontroller/core/web/SystemUptimeResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/SystemUptimeResource.java
rename to src/main/java/net/floodlightcontroller/core/web/SystemUptimeResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/serializers/ByteArrayMACSerializer.java b/src/main/java/net/floodlightcontroller/core/web/serializers/ByteArrayMACSerializer.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/serializers/ByteArrayMACSerializer.java
rename to src/main/java/net/floodlightcontroller/core/web/serializers/ByteArrayMACSerializer.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/serializers/DPIDSerializer.java b/src/main/java/net/floodlightcontroller/core/web/serializers/DPIDSerializer.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/serializers/DPIDSerializer.java
rename to src/main/java/net/floodlightcontroller/core/web/serializers/DPIDSerializer.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/serializers/IPv4Serializer.java b/src/main/java/net/floodlightcontroller/core/web/serializers/IPv4Serializer.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/serializers/IPv4Serializer.java
rename to src/main/java/net/floodlightcontroller/core/web/serializers/IPv4Serializer.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/serializers/MACSerializer.java b/src/main/java/net/floodlightcontroller/core/web/serializers/MACSerializer.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/serializers/MACSerializer.java
rename to src/main/java/net/floodlightcontroller/core/web/serializers/MACSerializer.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/serializers/UShortSerializer.java b/src/main/java/net/floodlightcontroller/core/web/serializers/UShortSerializer.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/core/web/serializers/UShortSerializer.java
rename to src/main/java/net/floodlightcontroller/core/web/serializers/UShortSerializer.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/counter/ConcurrentCounter.java b/src/main/java/net/floodlightcontroller/counter/ConcurrentCounter.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/counter/ConcurrentCounter.java
rename to src/main/java/net/floodlightcontroller/counter/ConcurrentCounter.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/counter/CountBuffer.java b/src/main/java/net/floodlightcontroller/counter/CountBuffer.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/counter/CountBuffer.java
rename to src/main/java/net/floodlightcontroller/counter/CountBuffer.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/counter/CountSeries.java b/src/main/java/net/floodlightcontroller/counter/CountSeries.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/counter/CountSeries.java
rename to src/main/java/net/floodlightcontroller/counter/CountSeries.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/counter/CounterStore.java b/src/main/java/net/floodlightcontroller/counter/CounterStore.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/counter/CounterStore.java
rename to src/main/java/net/floodlightcontroller/counter/CounterStore.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/counter/CounterValue.java b/src/main/java/net/floodlightcontroller/counter/CounterValue.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/counter/CounterValue.java
rename to src/main/java/net/floodlightcontroller/counter/CounterValue.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/counter/ICounter.java b/src/main/java/net/floodlightcontroller/counter/ICounter.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/counter/ICounter.java
rename to src/main/java/net/floodlightcontroller/counter/ICounter.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/counter/ICounterStoreService.java b/src/main/java/net/floodlightcontroller/counter/ICounterStoreService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/counter/ICounterStoreService.java
rename to src/main/java/net/floodlightcontroller/counter/ICounterStoreService.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/counter/NullCounterStore.java b/src/main/java/net/floodlightcontroller/counter/NullCounterStore.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/counter/NullCounterStore.java
rename to src/main/java/net/floodlightcontroller/counter/NullCounterStore.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/counter/SimpleCounter.java b/src/main/java/net/floodlightcontroller/counter/SimpleCounter.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/counter/SimpleCounter.java
rename to src/main/java/net/floodlightcontroller/counter/SimpleCounter.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/counter/TypeAliases.java b/src/main/java/net/floodlightcontroller/counter/TypeAliases.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/counter/TypeAliases.java
rename to src/main/java/net/floodlightcontroller/counter/TypeAliases.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/IDevice.java b/src/main/java/net/floodlightcontroller/devicemanager/IDevice.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/IDevice.java
rename to src/main/java/net/floodlightcontroller/devicemanager/IDevice.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/IDeviceListener.java b/src/main/java/net/floodlightcontroller/devicemanager/IDeviceListener.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/IDeviceListener.java
rename to src/main/java/net/floodlightcontroller/devicemanager/IDeviceListener.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/IDeviceService.java b/src/main/java/net/floodlightcontroller/devicemanager/IDeviceService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/IDeviceService.java
rename to src/main/java/net/floodlightcontroller/devicemanager/IDeviceService.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/IEntityClass.java b/src/main/java/net/floodlightcontroller/devicemanager/IEntityClass.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/IEntityClass.java
rename to src/main/java/net/floodlightcontroller/devicemanager/IEntityClass.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/IEntityClassListener.java b/src/main/java/net/floodlightcontroller/devicemanager/IEntityClassListener.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/IEntityClassListener.java
rename to src/main/java/net/floodlightcontroller/devicemanager/IEntityClassListener.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/IEntityClassifierService.java b/src/main/java/net/floodlightcontroller/devicemanager/IEntityClassifierService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/IEntityClassifierService.java
rename to src/main/java/net/floodlightcontroller/devicemanager/IEntityClassifierService.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/SwitchPort.java b/src/main/java/net/floodlightcontroller/devicemanager/SwitchPort.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/SwitchPort.java
rename to src/main/java/net/floodlightcontroller/devicemanager/SwitchPort.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/AttachmentPoint.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/AttachmentPoint.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/AttachmentPoint.java
rename to src/main/java/net/floodlightcontroller/devicemanager/internal/AttachmentPoint.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/DefaultEntityClassifier.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/DefaultEntityClassifier.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/DefaultEntityClassifier.java
rename to src/main/java/net/floodlightcontroller/devicemanager/internal/DefaultEntityClassifier.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/Device.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/Device.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/Device.java
rename to src/main/java/net/floodlightcontroller/devicemanager/internal/Device.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceIndex.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceIndex.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceIndex.java
rename to src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceIndex.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceIndexInterator.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceIndexInterator.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceIndexInterator.java
rename to src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceIndexInterator.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceIterator.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceIterator.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceIterator.java
rename to src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceIterator.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
rename to src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceMultiIndex.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceMultiIndex.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceMultiIndex.java
rename to src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceMultiIndex.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceUniqueIndex.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceUniqueIndex.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceUniqueIndex.java
rename to src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceUniqueIndex.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/Entity.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/Entity.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/Entity.java
rename to src/main/java/net/floodlightcontroller/devicemanager/internal/Entity.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/IndexedEntity.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/IndexedEntity.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/internal/IndexedEntity.java
rename to src/main/java/net/floodlightcontroller/devicemanager/internal/IndexedEntity.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/web/AbstractDeviceResource.java b/src/main/java/net/floodlightcontroller/devicemanager/web/AbstractDeviceResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/web/AbstractDeviceResource.java
rename to src/main/java/net/floodlightcontroller/devicemanager/web/AbstractDeviceResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/web/DeviceEntityResource.java b/src/main/java/net/floodlightcontroller/devicemanager/web/DeviceEntityResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/web/DeviceEntityResource.java
rename to src/main/java/net/floodlightcontroller/devicemanager/web/DeviceEntityResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/web/DeviceResource.java b/src/main/java/net/floodlightcontroller/devicemanager/web/DeviceResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/web/DeviceResource.java
rename to src/main/java/net/floodlightcontroller/devicemanager/web/DeviceResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/web/DeviceRoutable.java b/src/main/java/net/floodlightcontroller/devicemanager/web/DeviceRoutable.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/web/DeviceRoutable.java
rename to src/main/java/net/floodlightcontroller/devicemanager/web/DeviceRoutable.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/web/DeviceSerializer.java b/src/main/java/net/floodlightcontroller/devicemanager/web/DeviceSerializer.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/devicemanager/web/DeviceSerializer.java
rename to src/main/java/net/floodlightcontroller/devicemanager/web/DeviceSerializer.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/firewall/Firewall.java b/src/main/java/net/floodlightcontroller/firewall/Firewall.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/firewall/Firewall.java
rename to src/main/java/net/floodlightcontroller/firewall/Firewall.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/firewall/FirewallResource.java b/src/main/java/net/floodlightcontroller/firewall/FirewallResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/firewall/FirewallResource.java
rename to src/main/java/net/floodlightcontroller/firewall/FirewallResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/firewall/FirewallRule.java b/src/main/java/net/floodlightcontroller/firewall/FirewallRule.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/firewall/FirewallRule.java
rename to src/main/java/net/floodlightcontroller/firewall/FirewallRule.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/firewall/FirewallRulesResource.java b/src/main/java/net/floodlightcontroller/firewall/FirewallRulesResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/firewall/FirewallRulesResource.java
rename to src/main/java/net/floodlightcontroller/firewall/FirewallRulesResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/firewall/FirewallWebRoutable.java b/src/main/java/net/floodlightcontroller/firewall/FirewallWebRoutable.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/firewall/FirewallWebRoutable.java
rename to src/main/java/net/floodlightcontroller/firewall/FirewallWebRoutable.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/firewall/IFirewallService.java b/src/main/java/net/floodlightcontroller/firewall/IFirewallService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/firewall/IFirewallService.java
rename to src/main/java/net/floodlightcontroller/firewall/IFirewallService.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/firewall/RuleWildcardsPair.java b/src/main/java/net/floodlightcontroller/firewall/RuleWildcardsPair.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/firewall/RuleWildcardsPair.java
rename to src/main/java/net/floodlightcontroller/firewall/RuleWildcardsPair.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/firewall/WildcardsPair.java b/src/main/java/net/floodlightcontroller/firewall/WildcardsPair.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/firewall/WildcardsPair.java
rename to src/main/java/net/floodlightcontroller/firewall/WildcardsPair.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/FCQueryObj.java b/src/main/java/net/floodlightcontroller/flowcache/FCQueryObj.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/FCQueryObj.java
rename to src/main/java/net/floodlightcontroller/flowcache/FCQueryObj.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/FlowCacheQueryResp.java b/src/main/java/net/floodlightcontroller/flowcache/FlowCacheQueryResp.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/FlowCacheQueryResp.java
rename to src/main/java/net/floodlightcontroller/flowcache/FlowCacheQueryResp.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/FlowReconcileManager.java b/src/main/java/net/floodlightcontroller/flowcache/FlowReconcileManager.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/FlowReconcileManager.java
rename to src/main/java/net/floodlightcontroller/flowcache/FlowReconcileManager.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/IFlowCacheService.java b/src/main/java/net/floodlightcontroller/flowcache/IFlowCacheService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/IFlowCacheService.java
rename to src/main/java/net/floodlightcontroller/flowcache/IFlowCacheService.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/IFlowQueryHandler.java b/src/main/java/net/floodlightcontroller/flowcache/IFlowQueryHandler.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/IFlowQueryHandler.java
rename to src/main/java/net/floodlightcontroller/flowcache/IFlowQueryHandler.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/IFlowReconcileListener.java b/src/main/java/net/floodlightcontroller/flowcache/IFlowReconcileListener.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/IFlowReconcileListener.java
rename to src/main/java/net/floodlightcontroller/flowcache/IFlowReconcileListener.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/IFlowReconcileService.java b/src/main/java/net/floodlightcontroller/flowcache/IFlowReconcileService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/IFlowReconcileService.java
rename to src/main/java/net/floodlightcontroller/flowcache/IFlowReconcileService.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/OFMatchReconcile.java b/src/main/java/net/floodlightcontroller/flowcache/OFMatchReconcile.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/OFMatchReconcile.java
rename to src/main/java/net/floodlightcontroller/flowcache/OFMatchReconcile.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/PendingSwRespKey.java b/src/main/java/net/floodlightcontroller/flowcache/PendingSwRespKey.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/PendingSwRespKey.java
rename to src/main/java/net/floodlightcontroller/flowcache/PendingSwRespKey.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/PendingSwitchResp.java b/src/main/java/net/floodlightcontroller/flowcache/PendingSwitchResp.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/PendingSwitchResp.java
rename to src/main/java/net/floodlightcontroller/flowcache/PendingSwitchResp.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/QRFlowCacheObj.java b/src/main/java/net/floodlightcontroller/flowcache/QRFlowCacheObj.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/flowcache/QRFlowCacheObj.java
rename to src/main/java/net/floodlightcontroller/flowcache/QRFlowCacheObj.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/forwarding/Forwarding.java b/src/main/java/net/floodlightcontroller/forwarding/Forwarding.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/forwarding/Forwarding.java
rename to src/main/java/net/floodlightcontroller/forwarding/Forwarding.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/hub/Hub.java b/src/main/java/net/floodlightcontroller/hub/Hub.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/hub/Hub.java
rename to src/main/java/net/floodlightcontroller/hub/Hub.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/jython/JythonDebugInterface.java b/src/main/java/net/floodlightcontroller/jython/JythonDebugInterface.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/jython/JythonDebugInterface.java
rename to src/main/java/net/floodlightcontroller/jython/JythonDebugInterface.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/jython/JythonServer.java b/src/main/java/net/floodlightcontroller/jython/JythonServer.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/jython/JythonServer.java
rename to src/main/java/net/floodlightcontroller/jython/JythonServer.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/learningswitch/ILearningSwitchService.java b/src/main/java/net/floodlightcontroller/learningswitch/ILearningSwitchService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/learningswitch/ILearningSwitchService.java
rename to src/main/java/net/floodlightcontroller/learningswitch/ILearningSwitchService.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/learningswitch/LearningSwitch.java b/src/main/java/net/floodlightcontroller/learningswitch/LearningSwitch.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/learningswitch/LearningSwitch.java
rename to src/main/java/net/floodlightcontroller/learningswitch/LearningSwitch.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/learningswitch/LearningSwitchTable.java b/src/main/java/net/floodlightcontroller/learningswitch/LearningSwitchTable.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/learningswitch/LearningSwitchTable.java
rename to src/main/java/net/floodlightcontroller/learningswitch/LearningSwitchTable.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/learningswitch/LearningSwitchWebRoutable.java b/src/main/java/net/floodlightcontroller/learningswitch/LearningSwitchWebRoutable.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/learningswitch/LearningSwitchWebRoutable.java
rename to src/main/java/net/floodlightcontroller/learningswitch/LearningSwitchWebRoutable.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscovery.java b/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscovery.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscovery.java
rename to src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscovery.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscoveryListener.java b/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscoveryListener.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscoveryListener.java
rename to src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscoveryListener.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscoveryService.java b/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscoveryService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscoveryService.java
rename to src/main/java/net/floodlightcontroller/linkdiscovery/ILinkDiscoveryService.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/LinkInfo.java b/src/main/java/net/floodlightcontroller/linkdiscovery/LinkInfo.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/LinkInfo.java
rename to src/main/java/net/floodlightcontroller/linkdiscovery/LinkInfo.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/internal/EventHistoryTopologyCluster.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/EventHistoryTopologyCluster.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/internal/EventHistoryTopologyCluster.java
rename to src/main/java/net/floodlightcontroller/linkdiscovery/internal/EventHistoryTopologyCluster.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/internal/EventHistoryTopologyLink.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/EventHistoryTopologyLink.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/internal/EventHistoryTopologyLink.java
rename to src/main/java/net/floodlightcontroller/linkdiscovery/internal/EventHistoryTopologyLink.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/internal/EventHistoryTopologySwitch.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/EventHistoryTopologySwitch.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/internal/EventHistoryTopologySwitch.java
rename to src/main/java/net/floodlightcontroller/linkdiscovery/internal/EventHistoryTopologySwitch.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
rename to src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/web/AutoPortFast.java b/src/main/java/net/floodlightcontroller/linkdiscovery/web/AutoPortFast.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/web/AutoPortFast.java
rename to src/main/java/net/floodlightcontroller/linkdiscovery/web/AutoPortFast.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/web/LinkDiscoveryWebRoutable.java b/src/main/java/net/floodlightcontroller/linkdiscovery/web/LinkDiscoveryWebRoutable.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/web/LinkDiscoveryWebRoutable.java
rename to src/main/java/net/floodlightcontroller/linkdiscovery/web/LinkDiscoveryWebRoutable.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/web/LinkWithType.java b/src/main/java/net/floodlightcontroller/linkdiscovery/web/LinkWithType.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/web/LinkWithType.java
rename to src/main/java/net/floodlightcontroller/linkdiscovery/web/LinkWithType.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/web/LinksResource.java b/src/main/java/net/floodlightcontroller/linkdiscovery/web/LinksResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/linkdiscovery/web/LinksResource.java
rename to src/main/java/net/floodlightcontroller/linkdiscovery/web/LinksResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/ARP.java b/src/main/java/net/floodlightcontroller/packet/ARP.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/ARP.java
rename to src/main/java/net/floodlightcontroller/packet/ARP.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/BPDU.java b/src/main/java/net/floodlightcontroller/packet/BPDU.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/BPDU.java
rename to src/main/java/net/floodlightcontroller/packet/BPDU.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/BSN.java b/src/main/java/net/floodlightcontroller/packet/BSN.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/BSN.java
rename to src/main/java/net/floodlightcontroller/packet/BSN.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/BSNPROBE.java b/src/main/java/net/floodlightcontroller/packet/BSNPROBE.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/BSNPROBE.java
rename to src/main/java/net/floodlightcontroller/packet/BSNPROBE.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/BasePacket.java b/src/main/java/net/floodlightcontroller/packet/BasePacket.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/BasePacket.java
rename to src/main/java/net/floodlightcontroller/packet/BasePacket.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/DHCP.java b/src/main/java/net/floodlightcontroller/packet/DHCP.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/DHCP.java
rename to src/main/java/net/floodlightcontroller/packet/DHCP.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/DHCPOption.java b/src/main/java/net/floodlightcontroller/packet/DHCPOption.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/DHCPOption.java
rename to src/main/java/net/floodlightcontroller/packet/DHCPOption.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/DHCPPacketType.java b/src/main/java/net/floodlightcontroller/packet/DHCPPacketType.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/DHCPPacketType.java
rename to src/main/java/net/floodlightcontroller/packet/DHCPPacketType.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/Data.java b/src/main/java/net/floodlightcontroller/packet/Data.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/Data.java
rename to src/main/java/net/floodlightcontroller/packet/Data.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/Ethernet.java b/src/main/java/net/floodlightcontroller/packet/Ethernet.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/Ethernet.java
rename to src/main/java/net/floodlightcontroller/packet/Ethernet.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/ICMP.java b/src/main/java/net/floodlightcontroller/packet/ICMP.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/ICMP.java
rename to src/main/java/net/floodlightcontroller/packet/ICMP.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/IPacket.java b/src/main/java/net/floodlightcontroller/packet/IPacket.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/IPacket.java
rename to src/main/java/net/floodlightcontroller/packet/IPacket.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/IPv4.java b/src/main/java/net/floodlightcontroller/packet/IPv4.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/IPv4.java
rename to src/main/java/net/floodlightcontroller/packet/IPv4.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/LLC.java b/src/main/java/net/floodlightcontroller/packet/LLC.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/LLC.java
rename to src/main/java/net/floodlightcontroller/packet/LLC.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/LLDP.java b/src/main/java/net/floodlightcontroller/packet/LLDP.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/LLDP.java
rename to src/main/java/net/floodlightcontroller/packet/LLDP.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/LLDPOrganizationalTLV.java b/src/main/java/net/floodlightcontroller/packet/LLDPOrganizationalTLV.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/LLDPOrganizationalTLV.java
rename to src/main/java/net/floodlightcontroller/packet/LLDPOrganizationalTLV.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/LLDPTLV.java b/src/main/java/net/floodlightcontroller/packet/LLDPTLV.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/LLDPTLV.java
rename to src/main/java/net/floodlightcontroller/packet/LLDPTLV.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/TCP.java b/src/main/java/net/floodlightcontroller/packet/TCP.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/TCP.java
rename to src/main/java/net/floodlightcontroller/packet/TCP.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/UDP.java b/src/main/java/net/floodlightcontroller/packet/UDP.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packet/UDP.java
rename to src/main/java/net/floodlightcontroller/packet/UDP.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packetstreamer/PacketStreamerClient.java b/src/main/java/net/floodlightcontroller/packetstreamer/PacketStreamerClient.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packetstreamer/PacketStreamerClient.java
rename to src/main/java/net/floodlightcontroller/packetstreamer/PacketStreamerClient.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packetstreamer/PacketStreamerHandler.java b/src/main/java/net/floodlightcontroller/packetstreamer/PacketStreamerHandler.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packetstreamer/PacketStreamerHandler.java
rename to src/main/java/net/floodlightcontroller/packetstreamer/PacketStreamerHandler.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/packetstreamer/PacketStreamerServer.java b/src/main/java/net/floodlightcontroller/packetstreamer/PacketStreamerServer.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/packetstreamer/PacketStreamerServer.java
rename to src/main/java/net/floodlightcontroller/packetstreamer/PacketStreamerServer.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/perfmon/CumulativeTimeBucket.java b/src/main/java/net/floodlightcontroller/perfmon/CumulativeTimeBucket.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/perfmon/CumulativeTimeBucket.java
rename to src/main/java/net/floodlightcontroller/perfmon/CumulativeTimeBucket.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/perfmon/CumulativeTimeBucketJSONSerializer.java b/src/main/java/net/floodlightcontroller/perfmon/CumulativeTimeBucketJSONSerializer.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/perfmon/CumulativeTimeBucketJSONSerializer.java
rename to src/main/java/net/floodlightcontroller/perfmon/CumulativeTimeBucketJSONSerializer.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/perfmon/IPktInProcessingTimeService.java b/src/main/java/net/floodlightcontroller/perfmon/IPktInProcessingTimeService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/perfmon/IPktInProcessingTimeService.java
rename to src/main/java/net/floodlightcontroller/perfmon/IPktInProcessingTimeService.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/perfmon/NullPktInProcessingTime.java b/src/main/java/net/floodlightcontroller/perfmon/NullPktInProcessingTime.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/perfmon/NullPktInProcessingTime.java
rename to src/main/java/net/floodlightcontroller/perfmon/NullPktInProcessingTime.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/perfmon/OneComponentTime.java b/src/main/java/net/floodlightcontroller/perfmon/OneComponentTime.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/perfmon/OneComponentTime.java
rename to src/main/java/net/floodlightcontroller/perfmon/OneComponentTime.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/perfmon/PerfMonDataResource.java b/src/main/java/net/floodlightcontroller/perfmon/PerfMonDataResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/perfmon/PerfMonDataResource.java
rename to src/main/java/net/floodlightcontroller/perfmon/PerfMonDataResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/perfmon/PerfMonToggleResource.java b/src/main/java/net/floodlightcontroller/perfmon/PerfMonToggleResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/perfmon/PerfMonToggleResource.java
rename to src/main/java/net/floodlightcontroller/perfmon/PerfMonToggleResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/perfmon/PerfWebRoutable.java b/src/main/java/net/floodlightcontroller/perfmon/PerfWebRoutable.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/perfmon/PerfWebRoutable.java
rename to src/main/java/net/floodlightcontroller/perfmon/PerfWebRoutable.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/perfmon/PktInProcessingTime.java b/src/main/java/net/floodlightcontroller/perfmon/PktInProcessingTime.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/perfmon/PktInProcessingTime.java
rename to src/main/java/net/floodlightcontroller/perfmon/PktInProcessingTime.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/restserver/IRestApiService.java b/src/main/java/net/floodlightcontroller/restserver/IRestApiService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/restserver/IRestApiService.java
rename to src/main/java/net/floodlightcontroller/restserver/IRestApiService.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/restserver/RestApiServer.java b/src/main/java/net/floodlightcontroller/restserver/RestApiServer.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/restserver/RestApiServer.java
rename to src/main/java/net/floodlightcontroller/restserver/RestApiServer.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/restserver/RestletRoutable.java b/src/main/java/net/floodlightcontroller/restserver/RestletRoutable.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/restserver/RestletRoutable.java
rename to src/main/java/net/floodlightcontroller/restserver/RestletRoutable.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/routing/BroadcastTree.java b/src/main/java/net/floodlightcontroller/routing/BroadcastTree.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/routing/BroadcastTree.java
rename to src/main/java/net/floodlightcontroller/routing/BroadcastTree.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java b/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java
rename to src/main/java/net/floodlightcontroller/routing/ForwardingBase.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/routing/IRoutingDecision.java b/src/main/java/net/floodlightcontroller/routing/IRoutingDecision.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/routing/IRoutingDecision.java
rename to src/main/java/net/floodlightcontroller/routing/IRoutingDecision.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/routing/IRoutingService.java b/src/main/java/net/floodlightcontroller/routing/IRoutingService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/routing/IRoutingService.java
rename to src/main/java/net/floodlightcontroller/routing/IRoutingService.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/routing/Link.java b/src/main/java/net/floodlightcontroller/routing/Link.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/routing/Link.java
rename to src/main/java/net/floodlightcontroller/routing/Link.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/routing/Route.java b/src/main/java/net/floodlightcontroller/routing/Route.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/routing/Route.java
rename to src/main/java/net/floodlightcontroller/routing/Route.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/routing/RouteId.java b/src/main/java/net/floodlightcontroller/routing/RouteId.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/routing/RouteId.java
rename to src/main/java/net/floodlightcontroller/routing/RouteId.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/routing/RoutingDecision.java b/src/main/java/net/floodlightcontroller/routing/RoutingDecision.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/routing/RoutingDecision.java
rename to src/main/java/net/floodlightcontroller/routing/RoutingDecision.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/staticflowentry/IStaticFlowEntryPusherService.java b/src/main/java/net/floodlightcontroller/staticflowentry/IStaticFlowEntryPusherService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/staticflowentry/IStaticFlowEntryPusherService.java
rename to src/main/java/net/floodlightcontroller/staticflowentry/IStaticFlowEntryPusherService.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntries.java b/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntries.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntries.java
rename to src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntries.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntryPusher.java b/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntryPusher.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntryPusher.java
rename to src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntryPusher.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/staticflowentry/web/ClearStaticFlowEntriesResource.java b/src/main/java/net/floodlightcontroller/staticflowentry/web/ClearStaticFlowEntriesResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/staticflowentry/web/ClearStaticFlowEntriesResource.java
rename to src/main/java/net/floodlightcontroller/staticflowentry/web/ClearStaticFlowEntriesResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/staticflowentry/web/ListStaticFlowEntriesResource.java b/src/main/java/net/floodlightcontroller/staticflowentry/web/ListStaticFlowEntriesResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/staticflowentry/web/ListStaticFlowEntriesResource.java
rename to src/main/java/net/floodlightcontroller/staticflowentry/web/ListStaticFlowEntriesResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/staticflowentry/web/StaticFlowEntryPusherResource.java b/src/main/java/net/floodlightcontroller/staticflowentry/web/StaticFlowEntryPusherResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/staticflowentry/web/StaticFlowEntryPusherResource.java
rename to src/main/java/net/floodlightcontroller/staticflowentry/web/StaticFlowEntryPusherResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/staticflowentry/web/StaticFlowEntryWebRoutable.java b/src/main/java/net/floodlightcontroller/staticflowentry/web/StaticFlowEntryWebRoutable.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/staticflowentry/web/StaticFlowEntryWebRoutable.java
rename to src/main/java/net/floodlightcontroller/staticflowentry/web/StaticFlowEntryWebRoutable.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/AbstractStorageSource.java b/src/main/java/net/floodlightcontroller/storage/AbstractStorageSource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/AbstractStorageSource.java
rename to src/main/java/net/floodlightcontroller/storage/AbstractStorageSource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/CompoundPredicate.java b/src/main/java/net/floodlightcontroller/storage/CompoundPredicate.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/CompoundPredicate.java
rename to src/main/java/net/floodlightcontroller/storage/CompoundPredicate.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/IPredicate.java b/src/main/java/net/floodlightcontroller/storage/IPredicate.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/IPredicate.java
rename to src/main/java/net/floodlightcontroller/storage/IPredicate.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/IQuery.java b/src/main/java/net/floodlightcontroller/storage/IQuery.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/IQuery.java
rename to src/main/java/net/floodlightcontroller/storage/IQuery.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/IResultSet.java b/src/main/java/net/floodlightcontroller/storage/IResultSet.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/IResultSet.java
rename to src/main/java/net/floodlightcontroller/storage/IResultSet.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/IRowMapper.java b/src/main/java/net/floodlightcontroller/storage/IRowMapper.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/IRowMapper.java
rename to src/main/java/net/floodlightcontroller/storage/IRowMapper.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/IStorageExceptionHandler.java b/src/main/java/net/floodlightcontroller/storage/IStorageExceptionHandler.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/IStorageExceptionHandler.java
rename to src/main/java/net/floodlightcontroller/storage/IStorageExceptionHandler.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/IStorageSourceListener.java b/src/main/java/net/floodlightcontroller/storage/IStorageSourceListener.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/IStorageSourceListener.java
rename to src/main/java/net/floodlightcontroller/storage/IStorageSourceListener.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/IStorageSourceService.java b/src/main/java/net/floodlightcontroller/storage/IStorageSourceService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/IStorageSourceService.java
rename to src/main/java/net/floodlightcontroller/storage/IStorageSourceService.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/NullValueStorageException.java b/src/main/java/net/floodlightcontroller/storage/NullValueStorageException.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/NullValueStorageException.java
rename to src/main/java/net/floodlightcontroller/storage/NullValueStorageException.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/OperatorPredicate.java b/src/main/java/net/floodlightcontroller/storage/OperatorPredicate.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/OperatorPredicate.java
rename to src/main/java/net/floodlightcontroller/storage/OperatorPredicate.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/ResultSetIterator.java b/src/main/java/net/floodlightcontroller/storage/ResultSetIterator.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/ResultSetIterator.java
rename to src/main/java/net/floodlightcontroller/storage/ResultSetIterator.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/RowOrdering.java b/src/main/java/net/floodlightcontroller/storage/RowOrdering.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/RowOrdering.java
rename to src/main/java/net/floodlightcontroller/storage/RowOrdering.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/StorageException.java b/src/main/java/net/floodlightcontroller/storage/StorageException.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/StorageException.java
rename to src/main/java/net/floodlightcontroller/storage/StorageException.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/StorageNotificationFormatException.java b/src/main/java/net/floodlightcontroller/storage/StorageNotificationFormatException.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/StorageNotificationFormatException.java
rename to src/main/java/net/floodlightcontroller/storage/StorageNotificationFormatException.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/StorageSourceNotification.java b/src/main/java/net/floodlightcontroller/storage/StorageSourceNotification.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/StorageSourceNotification.java
rename to src/main/java/net/floodlightcontroller/storage/StorageSourceNotification.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/SynchronousExecutorService.java b/src/main/java/net/floodlightcontroller/storage/SynchronousExecutorService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/SynchronousExecutorService.java
rename to src/main/java/net/floodlightcontroller/storage/SynchronousExecutorService.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/TypeMismatchStorageException.java b/src/main/java/net/floodlightcontroller/storage/TypeMismatchStorageException.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/TypeMismatchStorageException.java
rename to src/main/java/net/floodlightcontroller/storage/TypeMismatchStorageException.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/memory/MemoryStorageSource.java b/src/main/java/net/floodlightcontroller/storage/memory/MemoryStorageSource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/memory/MemoryStorageSource.java
rename to src/main/java/net/floodlightcontroller/storage/memory/MemoryStorageSource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/memory/MemoryTable.java b/src/main/java/net/floodlightcontroller/storage/memory/MemoryTable.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/memory/MemoryTable.java
rename to src/main/java/net/floodlightcontroller/storage/memory/MemoryTable.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/nosql/NoSqlQuery.java b/src/main/java/net/floodlightcontroller/storage/nosql/NoSqlQuery.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/nosql/NoSqlQuery.java
rename to src/main/java/net/floodlightcontroller/storage/nosql/NoSqlQuery.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/nosql/NoSqlResultSet.java b/src/main/java/net/floodlightcontroller/storage/nosql/NoSqlResultSet.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/nosql/NoSqlResultSet.java
rename to src/main/java/net/floodlightcontroller/storage/nosql/NoSqlResultSet.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/nosql/NoSqlStorageSource.java b/src/main/java/net/floodlightcontroller/storage/nosql/NoSqlStorageSource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/nosql/NoSqlStorageSource.java
rename to src/main/java/net/floodlightcontroller/storage/nosql/NoSqlStorageSource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/web/StorageNotifyResource.java b/src/main/java/net/floodlightcontroller/storage/web/StorageNotifyResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/web/StorageNotifyResource.java
rename to src/main/java/net/floodlightcontroller/storage/web/StorageNotifyResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/web/StorageWebRoutable.java b/src/main/java/net/floodlightcontroller/storage/web/StorageWebRoutable.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/storage/web/StorageWebRoutable.java
rename to src/main/java/net/floodlightcontroller/storage/web/StorageWebRoutable.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/threadpool/IThreadPoolService.java b/src/main/java/net/floodlightcontroller/threadpool/IThreadPoolService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/threadpool/IThreadPoolService.java
rename to src/main/java/net/floodlightcontroller/threadpool/IThreadPoolService.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/threadpool/ThreadPool.java b/src/main/java/net/floodlightcontroller/threadpool/ThreadPool.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/threadpool/ThreadPool.java
rename to src/main/java/net/floodlightcontroller/threadpool/ThreadPool.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/Cluster.java b/src/main/java/net/floodlightcontroller/topology/Cluster.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/Cluster.java
rename to src/main/java/net/floodlightcontroller/topology/Cluster.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/ITopologyListener.java b/src/main/java/net/floodlightcontroller/topology/ITopologyListener.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/ITopologyListener.java
rename to src/main/java/net/floodlightcontroller/topology/ITopologyListener.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/ITopologyService.java b/src/main/java/net/floodlightcontroller/topology/ITopologyService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/ITopologyService.java
rename to src/main/java/net/floodlightcontroller/topology/ITopologyService.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/NodePair.java b/src/main/java/net/floodlightcontroller/topology/NodePair.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/NodePair.java
rename to src/main/java/net/floodlightcontroller/topology/NodePair.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/NodePortTuple.java b/src/main/java/net/floodlightcontroller/topology/NodePortTuple.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/NodePortTuple.java
rename to src/main/java/net/floodlightcontroller/topology/NodePortTuple.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/OrderedNodePair.java b/src/main/java/net/floodlightcontroller/topology/OrderedNodePair.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/OrderedNodePair.java
rename to src/main/java/net/floodlightcontroller/topology/OrderedNodePair.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/TopologyInstance.java b/src/main/java/net/floodlightcontroller/topology/TopologyInstance.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/TopologyInstance.java
rename to src/main/java/net/floodlightcontroller/topology/TopologyInstance.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/TopologyManager.java b/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
rename to src/main/java/net/floodlightcontroller/topology/TopologyManager.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/web/BlockedPortsResource.java b/src/main/java/net/floodlightcontroller/topology/web/BlockedPortsResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/web/BlockedPortsResource.java
rename to src/main/java/net/floodlightcontroller/topology/web/BlockedPortsResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/web/BroadcastDomainPortsResource.java b/src/main/java/net/floodlightcontroller/topology/web/BroadcastDomainPortsResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/web/BroadcastDomainPortsResource.java
rename to src/main/java/net/floodlightcontroller/topology/web/BroadcastDomainPortsResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/web/EnabledPortsResource.java b/src/main/java/net/floodlightcontroller/topology/web/EnabledPortsResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/web/EnabledPortsResource.java
rename to src/main/java/net/floodlightcontroller/topology/web/EnabledPortsResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/web/RouteResource.java b/src/main/java/net/floodlightcontroller/topology/web/RouteResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/web/RouteResource.java
rename to src/main/java/net/floodlightcontroller/topology/web/RouteResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/web/SwitchClustersResource.java b/src/main/java/net/floodlightcontroller/topology/web/SwitchClustersResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/web/SwitchClustersResource.java
rename to src/main/java/net/floodlightcontroller/topology/web/SwitchClustersResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/web/TopologyWebRoutable.java b/src/main/java/net/floodlightcontroller/topology/web/TopologyWebRoutable.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/web/TopologyWebRoutable.java
rename to src/main/java/net/floodlightcontroller/topology/web/TopologyWebRoutable.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/web/TunnelLinksResource.java b/src/main/java/net/floodlightcontroller/topology/web/TunnelLinksResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/topology/web/TunnelLinksResource.java
rename to src/main/java/net/floodlightcontroller/topology/web/TunnelLinksResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/ui/web/StaticWebRoutable.java b/src/main/java/net/floodlightcontroller/ui/web/StaticWebRoutable.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/ui/web/StaticWebRoutable.java
rename to src/main/java/net/floodlightcontroller/ui/web/StaticWebRoutable.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/util/BundleAction.java b/src/main/java/net/floodlightcontroller/util/BundleAction.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/util/BundleAction.java
rename to src/main/java/net/floodlightcontroller/util/BundleAction.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/util/BundleState.java b/src/main/java/net/floodlightcontroller/util/BundleState.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/util/BundleState.java
rename to src/main/java/net/floodlightcontroller/util/BundleState.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/util/ClusterDFS.java b/src/main/java/net/floodlightcontroller/util/ClusterDFS.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/util/ClusterDFS.java
rename to src/main/java/net/floodlightcontroller/util/ClusterDFS.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/util/EventHistory.java b/src/main/java/net/floodlightcontroller/util/EventHistory.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/util/EventHistory.java
rename to src/main/java/net/floodlightcontroller/util/EventHistory.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/util/EventHistoryBaseInfo.java b/src/main/java/net/floodlightcontroller/util/EventHistoryBaseInfo.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/util/EventHistoryBaseInfo.java
rename to src/main/java/net/floodlightcontroller/util/EventHistoryBaseInfo.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/util/EventHistoryBaseInfoJSONSerializer.java b/src/main/java/net/floodlightcontroller/util/EventHistoryBaseInfoJSONSerializer.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/util/EventHistoryBaseInfoJSONSerializer.java
rename to src/main/java/net/floodlightcontroller/util/EventHistoryBaseInfoJSONSerializer.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/util/FilterIterator.java b/src/main/java/net/floodlightcontroller/util/FilterIterator.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/util/FilterIterator.java
rename to src/main/java/net/floodlightcontroller/util/FilterIterator.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/util/IterableIterator.java b/src/main/java/net/floodlightcontroller/util/IterableIterator.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/util/IterableIterator.java
rename to src/main/java/net/floodlightcontroller/util/IterableIterator.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/util/LRUHashMap.java b/src/main/java/net/floodlightcontroller/util/LRUHashMap.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/util/LRUHashMap.java
rename to src/main/java/net/floodlightcontroller/util/LRUHashMap.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/util/MACAddress.java b/src/main/java/net/floodlightcontroller/util/MACAddress.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/util/MACAddress.java
rename to src/main/java/net/floodlightcontroller/util/MACAddress.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/util/MultiIterator.java b/src/main/java/net/floodlightcontroller/util/MultiIterator.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/util/MultiIterator.java
rename to src/main/java/net/floodlightcontroller/util/MultiIterator.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/util/OFMessageDamper.java b/src/main/java/net/floodlightcontroller/util/OFMessageDamper.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/util/OFMessageDamper.java
rename to src/main/java/net/floodlightcontroller/util/OFMessageDamper.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/util/TimedCache.java b/src/main/java/net/floodlightcontroller/util/TimedCache.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/util/TimedCache.java
rename to src/main/java/net/floodlightcontroller/util/TimedCache.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/virtualnetwork/HostResource.java b/src/main/java/net/floodlightcontroller/virtualnetwork/HostResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/virtualnetwork/HostResource.java
rename to src/main/java/net/floodlightcontroller/virtualnetwork/HostResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/virtualnetwork/IVirtualNetworkService.java b/src/main/java/net/floodlightcontroller/virtualnetwork/IVirtualNetworkService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/virtualnetwork/IVirtualNetworkService.java
rename to src/main/java/net/floodlightcontroller/virtualnetwork/IVirtualNetworkService.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/virtualnetwork/NetworkResource.java b/src/main/java/net/floodlightcontroller/virtualnetwork/NetworkResource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/virtualnetwork/NetworkResource.java
rename to src/main/java/net/floodlightcontroller/virtualnetwork/NetworkResource.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/virtualnetwork/NoOp.java b/src/main/java/net/floodlightcontroller/virtualnetwork/NoOp.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/virtualnetwork/NoOp.java
rename to src/main/java/net/floodlightcontroller/virtualnetwork/NoOp.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetwork.java b/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetwork.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetwork.java
rename to src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetwork.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilter.java b/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilter.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilter.java
rename to src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilter.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkSerializer.java b/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkSerializer.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkSerializer.java
rename to src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkSerializer.java
diff --git a/src/ext/floodlight/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkWebRoutable.java b/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkWebRoutable.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkWebRoutable.java
rename to src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkWebRoutable.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/Instantiable.java b/src/main/java/org/openflow/protocol/Instantiable.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/Instantiable.java
rename to src/main/java/org/openflow/protocol/Instantiable.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFBarrierReply.java b/src/main/java/org/openflow/protocol/OFBarrierReply.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFBarrierReply.java
rename to src/main/java/org/openflow/protocol/OFBarrierReply.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFBarrierRequest.java b/src/main/java/org/openflow/protocol/OFBarrierRequest.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFBarrierRequest.java
rename to src/main/java/org/openflow/protocol/OFBarrierRequest.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFEchoReply.java b/src/main/java/org/openflow/protocol/OFEchoReply.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFEchoReply.java
rename to src/main/java/org/openflow/protocol/OFEchoReply.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFEchoRequest.java b/src/main/java/org/openflow/protocol/OFEchoRequest.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFEchoRequest.java
rename to src/main/java/org/openflow/protocol/OFEchoRequest.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFError.java b/src/main/java/org/openflow/protocol/OFError.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFError.java
rename to src/main/java/org/openflow/protocol/OFError.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFFeaturesReply.java b/src/main/java/org/openflow/protocol/OFFeaturesReply.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFFeaturesReply.java
rename to src/main/java/org/openflow/protocol/OFFeaturesReply.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFFeaturesRequest.java b/src/main/java/org/openflow/protocol/OFFeaturesRequest.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFFeaturesRequest.java
rename to src/main/java/org/openflow/protocol/OFFeaturesRequest.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFFlowMod.java b/src/main/java/org/openflow/protocol/OFFlowMod.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFFlowMod.java
rename to src/main/java/org/openflow/protocol/OFFlowMod.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFFlowRemoved.java b/src/main/java/org/openflow/protocol/OFFlowRemoved.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFFlowRemoved.java
rename to src/main/java/org/openflow/protocol/OFFlowRemoved.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFGetConfigReply.java b/src/main/java/org/openflow/protocol/OFGetConfigReply.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFGetConfigReply.java
rename to src/main/java/org/openflow/protocol/OFGetConfigReply.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFGetConfigRequest.java b/src/main/java/org/openflow/protocol/OFGetConfigRequest.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFGetConfigRequest.java
rename to src/main/java/org/openflow/protocol/OFGetConfigRequest.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFHello.java b/src/main/java/org/openflow/protocol/OFHello.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFHello.java
rename to src/main/java/org/openflow/protocol/OFHello.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFMatch.java b/src/main/java/org/openflow/protocol/OFMatch.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFMatch.java
rename to src/main/java/org/openflow/protocol/OFMatch.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFMatchBeanInfo.java b/src/main/java/org/openflow/protocol/OFMatchBeanInfo.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFMatchBeanInfo.java
rename to src/main/java/org/openflow/protocol/OFMatchBeanInfo.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFMatchWithSwDpid.java b/src/main/java/org/openflow/protocol/OFMatchWithSwDpid.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFMatchWithSwDpid.java
rename to src/main/java/org/openflow/protocol/OFMatchWithSwDpid.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFMessage.java b/src/main/java/org/openflow/protocol/OFMessage.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFMessage.java
rename to src/main/java/org/openflow/protocol/OFMessage.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFMessageContextStore.java b/src/main/java/org/openflow/protocol/OFMessageContextStore.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFMessageContextStore.java
rename to src/main/java/org/openflow/protocol/OFMessageContextStore.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFPacketIn.java b/src/main/java/org/openflow/protocol/OFPacketIn.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFPacketIn.java
rename to src/main/java/org/openflow/protocol/OFPacketIn.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFPacketOut.java b/src/main/java/org/openflow/protocol/OFPacketOut.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFPacketOut.java
rename to src/main/java/org/openflow/protocol/OFPacketOut.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFPhysicalPort.java b/src/main/java/org/openflow/protocol/OFPhysicalPort.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFPhysicalPort.java
rename to src/main/java/org/openflow/protocol/OFPhysicalPort.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFPort.java b/src/main/java/org/openflow/protocol/OFPort.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFPort.java
rename to src/main/java/org/openflow/protocol/OFPort.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFPortMod.java b/src/main/java/org/openflow/protocol/OFPortMod.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFPortMod.java
rename to src/main/java/org/openflow/protocol/OFPortMod.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFPortStatus.java b/src/main/java/org/openflow/protocol/OFPortStatus.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFPortStatus.java
rename to src/main/java/org/openflow/protocol/OFPortStatus.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFSetConfig.java b/src/main/java/org/openflow/protocol/OFSetConfig.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFSetConfig.java
rename to src/main/java/org/openflow/protocol/OFSetConfig.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFStatisticsMessageBase.java b/src/main/java/org/openflow/protocol/OFStatisticsMessageBase.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFStatisticsMessageBase.java
rename to src/main/java/org/openflow/protocol/OFStatisticsMessageBase.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFStatisticsReply.java b/src/main/java/org/openflow/protocol/OFStatisticsReply.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFStatisticsReply.java
rename to src/main/java/org/openflow/protocol/OFStatisticsReply.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFStatisticsRequest.java b/src/main/java/org/openflow/protocol/OFStatisticsRequest.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFStatisticsRequest.java
rename to src/main/java/org/openflow/protocol/OFStatisticsRequest.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFSwitchConfig.java b/src/main/java/org/openflow/protocol/OFSwitchConfig.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFSwitchConfig.java
rename to src/main/java/org/openflow/protocol/OFSwitchConfig.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFType.java b/src/main/java/org/openflow/protocol/OFType.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFType.java
rename to src/main/java/org/openflow/protocol/OFType.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/OFVendor.java b/src/main/java/org/openflow/protocol/OFVendor.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/OFVendor.java
rename to src/main/java/org/openflow/protocol/OFVendor.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFAction.java b/src/main/java/org/openflow/protocol/action/OFAction.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFAction.java
rename to src/main/java/org/openflow/protocol/action/OFAction.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionDataLayer.java b/src/main/java/org/openflow/protocol/action/OFActionDataLayer.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionDataLayer.java
rename to src/main/java/org/openflow/protocol/action/OFActionDataLayer.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionDataLayerDestination.java b/src/main/java/org/openflow/protocol/action/OFActionDataLayerDestination.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionDataLayerDestination.java
rename to src/main/java/org/openflow/protocol/action/OFActionDataLayerDestination.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionDataLayerSource.java b/src/main/java/org/openflow/protocol/action/OFActionDataLayerSource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionDataLayerSource.java
rename to src/main/java/org/openflow/protocol/action/OFActionDataLayerSource.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionEnqueue.java b/src/main/java/org/openflow/protocol/action/OFActionEnqueue.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionEnqueue.java
rename to src/main/java/org/openflow/protocol/action/OFActionEnqueue.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionNetworkLayerAddress.java b/src/main/java/org/openflow/protocol/action/OFActionNetworkLayerAddress.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionNetworkLayerAddress.java
rename to src/main/java/org/openflow/protocol/action/OFActionNetworkLayerAddress.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionNetworkLayerDestination.java b/src/main/java/org/openflow/protocol/action/OFActionNetworkLayerDestination.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionNetworkLayerDestination.java
rename to src/main/java/org/openflow/protocol/action/OFActionNetworkLayerDestination.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionNetworkLayerSource.java b/src/main/java/org/openflow/protocol/action/OFActionNetworkLayerSource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionNetworkLayerSource.java
rename to src/main/java/org/openflow/protocol/action/OFActionNetworkLayerSource.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionNetworkTypeOfService.java b/src/main/java/org/openflow/protocol/action/OFActionNetworkTypeOfService.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionNetworkTypeOfService.java
rename to src/main/java/org/openflow/protocol/action/OFActionNetworkTypeOfService.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionOutput.java b/src/main/java/org/openflow/protocol/action/OFActionOutput.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionOutput.java
rename to src/main/java/org/openflow/protocol/action/OFActionOutput.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionStripVirtualLan.java b/src/main/java/org/openflow/protocol/action/OFActionStripVirtualLan.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionStripVirtualLan.java
rename to src/main/java/org/openflow/protocol/action/OFActionStripVirtualLan.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionTransportLayer.java b/src/main/java/org/openflow/protocol/action/OFActionTransportLayer.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionTransportLayer.java
rename to src/main/java/org/openflow/protocol/action/OFActionTransportLayer.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionTransportLayerDestination.java b/src/main/java/org/openflow/protocol/action/OFActionTransportLayerDestination.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionTransportLayerDestination.java
rename to src/main/java/org/openflow/protocol/action/OFActionTransportLayerDestination.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionTransportLayerSource.java b/src/main/java/org/openflow/protocol/action/OFActionTransportLayerSource.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionTransportLayerSource.java
rename to src/main/java/org/openflow/protocol/action/OFActionTransportLayerSource.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionType.java b/src/main/java/org/openflow/protocol/action/OFActionType.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionType.java
rename to src/main/java/org/openflow/protocol/action/OFActionType.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionVendor.java b/src/main/java/org/openflow/protocol/action/OFActionVendor.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionVendor.java
rename to src/main/java/org/openflow/protocol/action/OFActionVendor.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionVirtualLanIdentifier.java b/src/main/java/org/openflow/protocol/action/OFActionVirtualLanIdentifier.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionVirtualLanIdentifier.java
rename to src/main/java/org/openflow/protocol/action/OFActionVirtualLanIdentifier.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionVirtualLanPriorityCodePoint.java b/src/main/java/org/openflow/protocol/action/OFActionVirtualLanPriorityCodePoint.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/action/OFActionVirtualLanPriorityCodePoint.java
rename to src/main/java/org/openflow/protocol/action/OFActionVirtualLanPriorityCodePoint.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/factory/BasicFactory.java b/src/main/java/org/openflow/protocol/factory/BasicFactory.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/factory/BasicFactory.java
rename to src/main/java/org/openflow/protocol/factory/BasicFactory.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/factory/MessageParseException.java b/src/main/java/org/openflow/protocol/factory/MessageParseException.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/factory/MessageParseException.java
rename to src/main/java/org/openflow/protocol/factory/MessageParseException.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/factory/OFActionFactory.java b/src/main/java/org/openflow/protocol/factory/OFActionFactory.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/factory/OFActionFactory.java
rename to src/main/java/org/openflow/protocol/factory/OFActionFactory.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/factory/OFActionFactoryAware.java b/src/main/java/org/openflow/protocol/factory/OFActionFactoryAware.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/factory/OFActionFactoryAware.java
rename to src/main/java/org/openflow/protocol/factory/OFActionFactoryAware.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/factory/OFMessageFactory.java b/src/main/java/org/openflow/protocol/factory/OFMessageFactory.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/factory/OFMessageFactory.java
rename to src/main/java/org/openflow/protocol/factory/OFMessageFactory.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/factory/OFMessageFactoryAware.java b/src/main/java/org/openflow/protocol/factory/OFMessageFactoryAware.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/factory/OFMessageFactoryAware.java
rename to src/main/java/org/openflow/protocol/factory/OFMessageFactoryAware.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/factory/OFStatisticsFactory.java b/src/main/java/org/openflow/protocol/factory/OFStatisticsFactory.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/factory/OFStatisticsFactory.java
rename to src/main/java/org/openflow/protocol/factory/OFStatisticsFactory.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/factory/OFStatisticsFactoryAware.java b/src/main/java/org/openflow/protocol/factory/OFStatisticsFactoryAware.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/factory/OFStatisticsFactoryAware.java
rename to src/main/java/org/openflow/protocol/factory/OFStatisticsFactoryAware.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/factory/OFVendorDataFactory.java b/src/main/java/org/openflow/protocol/factory/OFVendorDataFactory.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/factory/OFVendorDataFactory.java
rename to src/main/java/org/openflow/protocol/factory/OFVendorDataFactory.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/factory/OFVendorDataFactoryAware.java b/src/main/java/org/openflow/protocol/factory/OFVendorDataFactoryAware.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/factory/OFVendorDataFactoryAware.java
rename to src/main/java/org/openflow/protocol/factory/OFVendorDataFactoryAware.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/serializers/OFFeaturesReplyJSONSerializer.java b/src/main/java/org/openflow/protocol/serializers/OFFeaturesReplyJSONSerializer.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/serializers/OFFeaturesReplyJSONSerializer.java
rename to src/main/java/org/openflow/protocol/serializers/OFFeaturesReplyJSONSerializer.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/serializers/OFMatchJSONSerializer.java b/src/main/java/org/openflow/protocol/serializers/OFMatchJSONSerializer.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/serializers/OFMatchJSONSerializer.java
rename to src/main/java/org/openflow/protocol/serializers/OFMatchJSONSerializer.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFAggregateStatisticsReply.java b/src/main/java/org/openflow/protocol/statistics/OFAggregateStatisticsReply.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFAggregateStatisticsReply.java
rename to src/main/java/org/openflow/protocol/statistics/OFAggregateStatisticsReply.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFAggregateStatisticsRequest.java b/src/main/java/org/openflow/protocol/statistics/OFAggregateStatisticsRequest.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFAggregateStatisticsRequest.java
rename to src/main/java/org/openflow/protocol/statistics/OFAggregateStatisticsRequest.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFDescriptionStatistics.java b/src/main/java/org/openflow/protocol/statistics/OFDescriptionStatistics.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFDescriptionStatistics.java
rename to src/main/java/org/openflow/protocol/statistics/OFDescriptionStatistics.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFFlowStatisticsReply.java b/src/main/java/org/openflow/protocol/statistics/OFFlowStatisticsReply.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFFlowStatisticsReply.java
rename to src/main/java/org/openflow/protocol/statistics/OFFlowStatisticsReply.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFFlowStatisticsRequest.java b/src/main/java/org/openflow/protocol/statistics/OFFlowStatisticsRequest.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFFlowStatisticsRequest.java
rename to src/main/java/org/openflow/protocol/statistics/OFFlowStatisticsRequest.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFPortStatisticsReply.java b/src/main/java/org/openflow/protocol/statistics/OFPortStatisticsReply.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFPortStatisticsReply.java
rename to src/main/java/org/openflow/protocol/statistics/OFPortStatisticsReply.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFPortStatisticsRequest.java b/src/main/java/org/openflow/protocol/statistics/OFPortStatisticsRequest.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFPortStatisticsRequest.java
rename to src/main/java/org/openflow/protocol/statistics/OFPortStatisticsRequest.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFQueueStatisticsReply.java b/src/main/java/org/openflow/protocol/statistics/OFQueueStatisticsReply.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFQueueStatisticsReply.java
rename to src/main/java/org/openflow/protocol/statistics/OFQueueStatisticsReply.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFQueueStatisticsRequest.java b/src/main/java/org/openflow/protocol/statistics/OFQueueStatisticsRequest.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFQueueStatisticsRequest.java
rename to src/main/java/org/openflow/protocol/statistics/OFQueueStatisticsRequest.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFStatistics.java b/src/main/java/org/openflow/protocol/statistics/OFStatistics.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFStatistics.java
rename to src/main/java/org/openflow/protocol/statistics/OFStatistics.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFStatisticsType.java b/src/main/java/org/openflow/protocol/statistics/OFStatisticsType.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFStatisticsType.java
rename to src/main/java/org/openflow/protocol/statistics/OFStatisticsType.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFTableStatistics.java b/src/main/java/org/openflow/protocol/statistics/OFTableStatistics.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFTableStatistics.java
rename to src/main/java/org/openflow/protocol/statistics/OFTableStatistics.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFVendorStatistics.java b/src/main/java/org/openflow/protocol/statistics/OFVendorStatistics.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/statistics/OFVendorStatistics.java
rename to src/main/java/org/openflow/protocol/statistics/OFVendorStatistics.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/vendor/OFBasicVendorDataType.java b/src/main/java/org/openflow/protocol/vendor/OFBasicVendorDataType.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/vendor/OFBasicVendorDataType.java
rename to src/main/java/org/openflow/protocol/vendor/OFBasicVendorDataType.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/vendor/OFBasicVendorId.java b/src/main/java/org/openflow/protocol/vendor/OFBasicVendorId.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/vendor/OFBasicVendorId.java
rename to src/main/java/org/openflow/protocol/vendor/OFBasicVendorId.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/vendor/OFByteArrayVendorData.java b/src/main/java/org/openflow/protocol/vendor/OFByteArrayVendorData.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/vendor/OFByteArrayVendorData.java
rename to src/main/java/org/openflow/protocol/vendor/OFByteArrayVendorData.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/vendor/OFVendorData.java b/src/main/java/org/openflow/protocol/vendor/OFVendorData.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/vendor/OFVendorData.java
rename to src/main/java/org/openflow/protocol/vendor/OFVendorData.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/vendor/OFVendorDataType.java b/src/main/java/org/openflow/protocol/vendor/OFVendorDataType.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/vendor/OFVendorDataType.java
rename to src/main/java/org/openflow/protocol/vendor/OFVendorDataType.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/protocol/vendor/OFVendorId.java b/src/main/java/org/openflow/protocol/vendor/OFVendorId.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/protocol/vendor/OFVendorId.java
rename to src/main/java/org/openflow/protocol/vendor/OFVendorId.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/util/HexString.java b/src/main/java/org/openflow/util/HexString.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/util/HexString.java
rename to src/main/java/org/openflow/util/HexString.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/util/LRULinkedHashMap.java b/src/main/java/org/openflow/util/LRULinkedHashMap.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/util/LRULinkedHashMap.java
rename to src/main/java/org/openflow/util/LRULinkedHashMap.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/util/StringByteSerializer.java b/src/main/java/org/openflow/util/StringByteSerializer.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/util/StringByteSerializer.java
rename to src/main/java/org/openflow/util/StringByteSerializer.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/util/U16.java b/src/main/java/org/openflow/util/U16.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/util/U16.java
rename to src/main/java/org/openflow/util/U16.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/util/U32.java b/src/main/java/org/openflow/util/U32.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/util/U32.java
rename to src/main/java/org/openflow/util/U32.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/util/U64.java b/src/main/java/org/openflow/util/U64.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/util/U64.java
rename to src/main/java/org/openflow/util/U64.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/util/U8.java b/src/main/java/org/openflow/util/U8.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/util/U8.java
rename to src/main/java/org/openflow/util/U8.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/util/Unsigned.java b/src/main/java/org/openflow/util/Unsigned.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/util/Unsigned.java
rename to src/main/java/org/openflow/util/Unsigned.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/vendor/nicira/OFNiciraVendorData.java b/src/main/java/org/openflow/vendor/nicira/OFNiciraVendorData.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/vendor/nicira/OFNiciraVendorData.java
rename to src/main/java/org/openflow/vendor/nicira/OFNiciraVendorData.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/vendor/nicira/OFRoleReplyVendorData.java b/src/main/java/org/openflow/vendor/nicira/OFRoleReplyVendorData.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/vendor/nicira/OFRoleReplyVendorData.java
rename to src/main/java/org/openflow/vendor/nicira/OFRoleReplyVendorData.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/vendor/nicira/OFRoleRequestVendorData.java b/src/main/java/org/openflow/vendor/nicira/OFRoleRequestVendorData.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/vendor/nicira/OFRoleRequestVendorData.java
rename to src/main/java/org/openflow/vendor/nicira/OFRoleRequestVendorData.java
diff --git a/src/ext/floodlight/src/main/java/org/openflow/vendor/nicira/OFRoleVendorData.java b/src/main/java/org/openflow/vendor/nicira/OFRoleVendorData.java
similarity index 100%
rename from src/ext/floodlight/src/main/java/org/openflow/vendor/nicira/OFRoleVendorData.java
rename to src/main/java/org/openflow/vendor/nicira/OFRoleVendorData.java
diff --git a/src/ext/floodlight/src/main/python/PythonClient.py b/src/main/python/PythonClient.py
similarity index 100%
rename from src/ext/floodlight/src/main/python/PythonClient.py
rename to src/main/python/PythonClient.py
diff --git a/src/ext/floodlight/src/main/python/PythonServer.py b/src/main/python/PythonServer.py
similarity index 100%
rename from src/ext/floodlight/src/main/python/PythonServer.py
rename to src/main/python/PythonServer.py
diff --git a/src/ext/floodlight/src/main/python/compileall.py b/src/main/python/compileall.py
similarity index 100%
rename from src/ext/floodlight/src/main/python/compileall.py
rename to src/main/python/compileall.py
diff --git a/src/ext/floodlight/src/main/python/debugserver.py b/src/main/python/debugserver.py
similarity index 100%
rename from src/ext/floodlight/src/main/python/debugserver.py
rename to src/main/python/debugserver.py
diff --git a/src/ext/floodlight/src/main/resources/META-INF/services/net.floodlightcontroller.core.module.IFloodlightModule b/src/main/resources/META-INF/services/net.floodlightcontroller.core.module.IFloodlightModule
similarity index 100%
rename from src/ext/floodlight/src/main/resources/META-INF/services/net.floodlightcontroller.core.module.IFloodlightModule
rename to src/main/resources/META-INF/services/net.floodlightcontroller.core.module.IFloodlightModule
diff --git a/src/ext/floodlight/src/main/resources/floodlightdefault.properties b/src/main/resources/floodlightdefault.properties
similarity index 100%
rename from src/ext/floodlight/src/main/resources/floodlightdefault.properties
rename to src/main/resources/floodlightdefault.properties
diff --git a/src/ext/floodlight/src/main/resources/quantum.properties b/src/main/resources/quantum.properties
similarity index 100%
rename from src/ext/floodlight/src/main/resources/quantum.properties
rename to src/main/resources/quantum.properties
diff --git a/src/ext/floodlight/src/main/resources/web/css/bootstrap.css b/src/main/resources/web/css/bootstrap.css
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/css/bootstrap.css
rename to src/main/resources/web/css/bootstrap.css
diff --git a/src/ext/floodlight/src/main/resources/web/css/styles.css b/src/main/resources/web/css/styles.css
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/css/styles.css
rename to src/main/resources/web/css/styles.css
diff --git a/src/ext/floodlight/src/main/resources/web/img/floodlight.png b/src/main/resources/web/img/floodlight.png
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/img/floodlight.png
rename to src/main/resources/web/img/floodlight.png
Binary files differ
diff --git a/src/ext/floodlight/src/main/resources/web/img/glyphicons-halflings-white.png b/src/main/resources/web/img/glyphicons-halflings-white.png
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/img/glyphicons-halflings-white.png
rename to src/main/resources/web/img/glyphicons-halflings-white.png
Binary files differ
diff --git a/src/ext/floodlight/src/main/resources/web/img/glyphicons-halflings.png b/src/main/resources/web/img/glyphicons-halflings.png
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/img/glyphicons-halflings.png
rename to src/main/resources/web/img/glyphicons-halflings.png
Binary files differ
diff --git a/src/ext/floodlight/src/main/resources/web/img/logo.jpg b/src/main/resources/web/img/logo.jpg
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/img/logo.jpg
rename to src/main/resources/web/img/logo.jpg
Binary files differ
diff --git a/src/ext/floodlight/src/main/resources/web/img/openflow-logo-40px.png b/src/main/resources/web/img/openflow-logo-40px.png
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/img/openflow-logo-40px.png
rename to src/main/resources/web/img/openflow-logo-40px.png
Binary files differ
diff --git a/src/ext/floodlight/src/main/resources/web/img/server.png b/src/main/resources/web/img/server.png
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/img/server.png
rename to src/main/resources/web/img/server.png
Binary files differ
diff --git a/src/ext/floodlight/src/main/resources/web/img/switch.png b/src/main/resources/web/img/switch.png
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/img/switch.png
rename to src/main/resources/web/img/switch.png
Binary files differ
diff --git a/src/ext/floodlight/src/main/resources/web/index.html b/src/main/resources/web/index.html
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/index.html
rename to src/main/resources/web/index.html
diff --git a/src/ext/floodlight/src/main/resources/web/js/main.js b/src/main/resources/web/js/main.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/js/main.js
rename to src/main/resources/web/js/main.js
diff --git a/src/ext/floodlight/src/main/resources/web/js/models/flowmodel.js b/src/main/resources/web/js/models/flowmodel.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/js/models/flowmodel.js
rename to src/main/resources/web/js/models/flowmodel.js
diff --git a/src/ext/floodlight/src/main/resources/web/js/models/hostmodel.js b/src/main/resources/web/js/models/hostmodel.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/js/models/hostmodel.js
rename to src/main/resources/web/js/models/hostmodel.js
diff --git a/src/ext/floodlight/src/main/resources/web/js/models/portmodel.js b/src/main/resources/web/js/models/portmodel.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/js/models/portmodel.js
rename to src/main/resources/web/js/models/portmodel.js
diff --git a/src/ext/floodlight/src/main/resources/web/js/models/statusmodel.js b/src/main/resources/web/js/models/statusmodel.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/js/models/statusmodel.js
rename to src/main/resources/web/js/models/statusmodel.js
diff --git a/src/ext/floodlight/src/main/resources/web/js/models/switchmodel.js b/src/main/resources/web/js/models/switchmodel.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/js/models/switchmodel.js
rename to src/main/resources/web/js/models/switchmodel.js
diff --git a/src/ext/floodlight/src/main/resources/web/js/models/topologymodel.js b/src/main/resources/web/js/models/topologymodel.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/js/models/topologymodel.js
rename to src/main/resources/web/js/models/topologymodel.js
diff --git a/src/ext/floodlight/src/main/resources/web/js/utils.js b/src/main/resources/web/js/utils.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/js/utils.js
rename to src/main/resources/web/js/utils.js
diff --git a/src/ext/floodlight/src/main/resources/web/js/views/flow.js b/src/main/resources/web/js/views/flow.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/js/views/flow.js
rename to src/main/resources/web/js/views/flow.js
diff --git a/src/ext/floodlight/src/main/resources/web/js/views/header.js b/src/main/resources/web/js/views/header.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/js/views/header.js
rename to src/main/resources/web/js/views/header.js
diff --git a/src/ext/floodlight/src/main/resources/web/js/views/home.js b/src/main/resources/web/js/views/home.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/js/views/home.js
rename to src/main/resources/web/js/views/home.js
diff --git a/src/ext/floodlight/src/main/resources/web/js/views/host.js b/src/main/resources/web/js/views/host.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/js/views/host.js
rename to src/main/resources/web/js/views/host.js
diff --git a/src/ext/floodlight/src/main/resources/web/js/views/port.js b/src/main/resources/web/js/views/port.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/js/views/port.js
rename to src/main/resources/web/js/views/port.js
diff --git a/src/ext/floodlight/src/main/resources/web/js/views/status.js b/src/main/resources/web/js/views/status.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/js/views/status.js
rename to src/main/resources/web/js/views/status.js
diff --git a/src/ext/floodlight/src/main/resources/web/js/views/switch.js b/src/main/resources/web/js/views/switch.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/js/views/switch.js
rename to src/main/resources/web/js/views/switch.js
diff --git a/src/ext/floodlight/src/main/resources/web/js/views/topology.js b/src/main/resources/web/js/views/topology.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/js/views/topology.js
rename to src/main/resources/web/js/views/topology.js
diff --git a/src/ext/floodlight/src/main/resources/web/lib/backbone-min.js b/src/main/resources/web/lib/backbone-min.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/lib/backbone-min.js
rename to src/main/resources/web/lib/backbone-min.js
diff --git a/src/ext/floodlight/src/main/resources/web/lib/bootstrap-alert.js b/src/main/resources/web/lib/bootstrap-alert.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/lib/bootstrap-alert.js
rename to src/main/resources/web/lib/bootstrap-alert.js
diff --git a/src/ext/floodlight/src/main/resources/web/lib/bootstrap-dropdown.js b/src/main/resources/web/lib/bootstrap-dropdown.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/lib/bootstrap-dropdown.js
rename to src/main/resources/web/lib/bootstrap-dropdown.js
diff --git a/src/ext/floodlight/src/main/resources/web/lib/d3.v2.min.js b/src/main/resources/web/lib/d3.v2.min.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/lib/d3.v2.min.js
rename to src/main/resources/web/lib/d3.v2.min.js
diff --git a/src/ext/floodlight/src/main/resources/web/lib/jquery.min.js b/src/main/resources/web/lib/jquery.min.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/lib/jquery.min.js
rename to src/main/resources/web/lib/jquery.min.js
diff --git a/src/ext/floodlight/src/main/resources/web/lib/underscore-min.js b/src/main/resources/web/lib/underscore-min.js
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/lib/underscore-min.js
rename to src/main/resources/web/lib/underscore-min.js
diff --git a/src/ext/floodlight/src/main/resources/web/tpl/flow-list-item.html b/src/main/resources/web/tpl/flow-list-item.html
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/tpl/flow-list-item.html
rename to src/main/resources/web/tpl/flow-list-item.html
diff --git a/src/ext/floodlight/src/main/resources/web/tpl/flow-list.html b/src/main/resources/web/tpl/flow-list.html
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/tpl/flow-list.html
rename to src/main/resources/web/tpl/flow-list.html
diff --git a/src/ext/floodlight/src/main/resources/web/tpl/header.html b/src/main/resources/web/tpl/header.html
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/tpl/header.html
rename to src/main/resources/web/tpl/header.html
diff --git a/src/ext/floodlight/src/main/resources/web/tpl/home.html b/src/main/resources/web/tpl/home.html
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/tpl/home.html
rename to src/main/resources/web/tpl/home.html
diff --git a/src/ext/floodlight/src/main/resources/web/tpl/host-list-item.html b/src/main/resources/web/tpl/host-list-item.html
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/tpl/host-list-item.html
rename to src/main/resources/web/tpl/host-list-item.html
diff --git a/src/ext/floodlight/src/main/resources/web/tpl/host-list.html b/src/main/resources/web/tpl/host-list.html
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/tpl/host-list.html
rename to src/main/resources/web/tpl/host-list.html
diff --git a/src/ext/floodlight/src/main/resources/web/tpl/host.html b/src/main/resources/web/tpl/host.html
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/tpl/host.html
rename to src/main/resources/web/tpl/host.html
diff --git a/src/ext/floodlight/src/main/resources/web/tpl/port-list-item.html b/src/main/resources/web/tpl/port-list-item.html
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/tpl/port-list-item.html
rename to src/main/resources/web/tpl/port-list-item.html
diff --git a/src/ext/floodlight/src/main/resources/web/tpl/port-list.html b/src/main/resources/web/tpl/port-list.html
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/tpl/port-list.html
rename to src/main/resources/web/tpl/port-list.html
diff --git a/src/ext/floodlight/src/main/resources/web/tpl/status.html b/src/main/resources/web/tpl/status.html
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/tpl/status.html
rename to src/main/resources/web/tpl/status.html
diff --git a/src/ext/floodlight/src/main/resources/web/tpl/switch-list-item.html b/src/main/resources/web/tpl/switch-list-item.html
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/tpl/switch-list-item.html
rename to src/main/resources/web/tpl/switch-list-item.html
diff --git a/src/ext/floodlight/src/main/resources/web/tpl/switch-list.html b/src/main/resources/web/tpl/switch-list.html
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/tpl/switch-list.html
rename to src/main/resources/web/tpl/switch-list.html
diff --git a/src/ext/floodlight/src/main/resources/web/tpl/switch.html b/src/main/resources/web/tpl/switch.html
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/tpl/switch.html
rename to src/main/resources/web/tpl/switch.html
diff --git a/src/ext/floodlight/src/main/resources/web/tpl/topology.html b/src/main/resources/web/tpl/topology.html
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/tpl/topology.html
rename to src/main/resources/web/tpl/topology.html
diff --git a/src/ext/floodlight/src/main/resources/web/tpl/vlan-list-item.html b/src/main/resources/web/tpl/vlan-list-item.html
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/tpl/vlan-list-item.html
rename to src/main/resources/web/tpl/vlan-list-item.html
diff --git a/src/ext/floodlight/src/main/resources/web/tpl/vlan.html b/src/main/resources/web/tpl/vlan.html
similarity index 100%
rename from src/ext/floodlight/src/main/resources/web/tpl/vlan.html
rename to src/main/resources/web/tpl/vlan.html
diff --git a/src/ext/floodlight/src/main/thrift/packetstreamer.thrift b/src/main/thrift/packetstreamer.thrift
similarity index 100%
rename from src/ext/floodlight/src/main/thrift/packetstreamer.thrift
rename to src/main/thrift/packetstreamer.thrift
diff --git a/src/readme b/src/readme
deleted file mode 100644
index e69de29..0000000
--- a/src/readme
+++ /dev/null
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java b/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java
rename to src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/core/internal/OFSwitchImplTest.java b/src/test/java/net/floodlightcontroller/core/internal/OFSwitchImplTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/core/internal/OFSwitchImplTest.java
rename to src/test/java/net/floodlightcontroller/core/internal/OFSwitchImplTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/core/internal/RoleChangerTest.java b/src/test/java/net/floodlightcontroller/core/internal/RoleChangerTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/core/internal/RoleChangerTest.java
rename to src/test/java/net/floodlightcontroller/core/internal/RoleChangerTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/core/module/FloodlightTestModuleLoader.java b/src/test/java/net/floodlightcontroller/core/module/FloodlightTestModuleLoader.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/core/module/FloodlightTestModuleLoader.java
rename to src/test/java/net/floodlightcontroller/core/module/FloodlightTestModuleLoader.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/core/test/MockFloodlightProvider.java b/src/test/java/net/floodlightcontroller/core/test/MockFloodlightProvider.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/core/test/MockFloodlightProvider.java
rename to src/test/java/net/floodlightcontroller/core/test/MockFloodlightProvider.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/core/test/MockScheduledExecutor.java b/src/test/java/net/floodlightcontroller/core/test/MockScheduledExecutor.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/core/test/MockScheduledExecutor.java
rename to src/test/java/net/floodlightcontroller/core/test/MockScheduledExecutor.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/core/test/MockThreadPoolService.java b/src/test/java/net/floodlightcontroller/core/test/MockThreadPoolService.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/core/test/MockThreadPoolService.java
rename to src/test/java/net/floodlightcontroller/core/test/MockThreadPoolService.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/core/test/PacketFactory.java b/src/test/java/net/floodlightcontroller/core/test/PacketFactory.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/core/test/PacketFactory.java
rename to src/test/java/net/floodlightcontroller/core/test/PacketFactory.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/core/util/AppCookieTest.java b/src/test/java/net/floodlightcontroller/core/util/AppCookieTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/core/util/AppCookieTest.java
rename to src/test/java/net/floodlightcontroller/core/util/AppCookieTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/core/util/MessageDispatcherTest.java b/src/test/java/net/floodlightcontroller/core/util/MessageDispatcherTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/core/util/MessageDispatcherTest.java
rename to src/test/java/net/floodlightcontroller/core/util/MessageDispatcherTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/core/util/SingletonTaskTest.java b/src/test/java/net/floodlightcontroller/core/util/SingletonTaskTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/core/util/SingletonTaskTest.java
rename to src/test/java/net/floodlightcontroller/core/util/SingletonTaskTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImplTest.java b/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImplTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImplTest.java
rename to src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImplTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceUniqueIndexTest.java b/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceUniqueIndexTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceUniqueIndexTest.java
rename to src/test/java/net/floodlightcontroller/devicemanager/internal/DeviceUniqueIndexTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/devicemanager/test/MockDevice.java b/src/test/java/net/floodlightcontroller/devicemanager/test/MockDevice.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/devicemanager/test/MockDevice.java
rename to src/test/java/net/floodlightcontroller/devicemanager/test/MockDevice.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/devicemanager/test/MockDeviceManager.java b/src/test/java/net/floodlightcontroller/devicemanager/test/MockDeviceManager.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/devicemanager/test/MockDeviceManager.java
rename to src/test/java/net/floodlightcontroller/devicemanager/test/MockDeviceManager.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/devicemanager/test/MockEntityClassifier.java b/src/test/java/net/floodlightcontroller/devicemanager/test/MockEntityClassifier.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/devicemanager/test/MockEntityClassifier.java
rename to src/test/java/net/floodlightcontroller/devicemanager/test/MockEntityClassifier.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/devicemanager/test/MockEntityClassifierMac.java b/src/test/java/net/floodlightcontroller/devicemanager/test/MockEntityClassifierMac.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/devicemanager/test/MockEntityClassifierMac.java
rename to src/test/java/net/floodlightcontroller/devicemanager/test/MockEntityClassifierMac.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/devicemanager/test/MockFlexEntityClassifier.java b/src/test/java/net/floodlightcontroller/devicemanager/test/MockFlexEntityClassifier.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/devicemanager/test/MockFlexEntityClassifier.java
rename to src/test/java/net/floodlightcontroller/devicemanager/test/MockFlexEntityClassifier.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/firewall/FirewallTest.java b/src/test/java/net/floodlightcontroller/firewall/FirewallTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/firewall/FirewallTest.java
rename to src/test/java/net/floodlightcontroller/firewall/FirewallTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/flowcache/FlowReconcileMgrTest.java b/src/test/java/net/floodlightcontroller/flowcache/FlowReconcileMgrTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/flowcache/FlowReconcileMgrTest.java
rename to src/test/java/net/floodlightcontroller/flowcache/FlowReconcileMgrTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/forwarding/ForwardingTest.java b/src/test/java/net/floodlightcontroller/forwarding/ForwardingTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/forwarding/ForwardingTest.java
rename to src/test/java/net/floodlightcontroller/forwarding/ForwardingTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/hub/HubTest.java b/src/test/java/net/floodlightcontroller/hub/HubTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/hub/HubTest.java
rename to src/test/java/net/floodlightcontroller/hub/HubTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/learningswitch/LearningSwitchTest.java b/src/test/java/net/floodlightcontroller/learningswitch/LearningSwitchTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/learningswitch/LearningSwitchTest.java
rename to src/test/java/net/floodlightcontroller/learningswitch/LearningSwitchTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManagerTest.java b/src/test/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManagerTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManagerTest.java
rename to src/test/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManagerTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/packet/BSNTest.java b/src/test/java/net/floodlightcontroller/packet/BSNTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/packet/BSNTest.java
rename to src/test/java/net/floodlightcontroller/packet/BSNTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/packet/DHCPTest.java b/src/test/java/net/floodlightcontroller/packet/DHCPTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/packet/DHCPTest.java
rename to src/test/java/net/floodlightcontroller/packet/DHCPTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/packet/EthernetTest.java b/src/test/java/net/floodlightcontroller/packet/EthernetTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/packet/EthernetTest.java
rename to src/test/java/net/floodlightcontroller/packet/EthernetTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/packet/ICMPTest.java b/src/test/java/net/floodlightcontroller/packet/ICMPTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/packet/ICMPTest.java
rename to src/test/java/net/floodlightcontroller/packet/ICMPTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/packet/IPv4Test.java b/src/test/java/net/floodlightcontroller/packet/IPv4Test.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/packet/IPv4Test.java
rename to src/test/java/net/floodlightcontroller/packet/IPv4Test.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/packet/LLDPOrganizationalTLVTest.java b/src/test/java/net/floodlightcontroller/packet/LLDPOrganizationalTLVTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/packet/LLDPOrganizationalTLVTest.java
rename to src/test/java/net/floodlightcontroller/packet/LLDPOrganizationalTLVTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/packet/LLDPTest.java b/src/test/java/net/floodlightcontroller/packet/LLDPTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/packet/LLDPTest.java
rename to src/test/java/net/floodlightcontroller/packet/LLDPTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/packet/PacketTest.java b/src/test/java/net/floodlightcontroller/packet/PacketTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/packet/PacketTest.java
rename to src/test/java/net/floodlightcontroller/packet/PacketTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/packet/TCPTest.java b/src/test/java/net/floodlightcontroller/packet/TCPTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/packet/TCPTest.java
rename to src/test/java/net/floodlightcontroller/packet/TCPTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/packet/UDPTest.java b/src/test/java/net/floodlightcontroller/packet/UDPTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/packet/UDPTest.java
rename to src/test/java/net/floodlightcontroller/packet/UDPTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/routing/RouteTest.java b/src/test/java/net/floodlightcontroller/routing/RouteTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/routing/RouteTest.java
rename to src/test/java/net/floodlightcontroller/routing/RouteTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/staticflowentry/StaticFlowTests.java b/src/test/java/net/floodlightcontroller/staticflowentry/StaticFlowTests.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/staticflowentry/StaticFlowTests.java
rename to src/test/java/net/floodlightcontroller/staticflowentry/StaticFlowTests.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/storage/memory/tests/MemoryStorageTest.java b/src/test/java/net/floodlightcontroller/storage/memory/tests/MemoryStorageTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/storage/memory/tests/MemoryStorageTest.java
rename to src/test/java/net/floodlightcontroller/storage/memory/tests/MemoryStorageTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/storage/tests/StorageTest.java b/src/test/java/net/floodlightcontroller/storage/tests/StorageTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/storage/tests/StorageTest.java
rename to src/test/java/net/floodlightcontroller/storage/tests/StorageTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/test/FloodlightTestCase.java b/src/test/java/net/floodlightcontroller/test/FloodlightTestCase.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/test/FloodlightTestCase.java
rename to src/test/java/net/floodlightcontroller/test/FloodlightTestCase.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/topology/TopologyInstanceTest.java b/src/test/java/net/floodlightcontroller/topology/TopologyInstanceTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/topology/TopologyInstanceTest.java
rename to src/test/java/net/floodlightcontroller/topology/TopologyInstanceTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/topology/TopologyManagerTest.java b/src/test/java/net/floodlightcontroller/topology/TopologyManagerTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/topology/TopologyManagerTest.java
rename to src/test/java/net/floodlightcontroller/topology/TopologyManagerTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/util/MACAddressTest.java b/src/test/java/net/floodlightcontroller/util/MACAddressTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/util/MACAddressTest.java
rename to src/test/java/net/floodlightcontroller/util/MACAddressTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/util/OFMessageDamperMockSwitch.java b/src/test/java/net/floodlightcontroller/util/OFMessageDamperMockSwitch.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/util/OFMessageDamperMockSwitch.java
rename to src/test/java/net/floodlightcontroller/util/OFMessageDamperMockSwitch.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/util/OFMessageDamperTest.java b/src/test/java/net/floodlightcontroller/util/OFMessageDamperTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/util/OFMessageDamperTest.java
rename to src/test/java/net/floodlightcontroller/util/OFMessageDamperTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/util/TimedCacheTest.java b/src/test/java/net/floodlightcontroller/util/TimedCacheTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/util/TimedCacheTest.java
rename to src/test/java/net/floodlightcontroller/util/TimedCacheTest.java
diff --git a/src/ext/floodlight/src/test/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilterTest.java b/src/test/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilterTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilterTest.java
rename to src/test/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilterTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/protocol/BasicFactoryTest.java b/src/test/java/org/openflow/protocol/BasicFactoryTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/protocol/BasicFactoryTest.java
rename to src/test/java/org/openflow/protocol/BasicFactoryTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/protocol/OFActionTypeTest.java b/src/test/java/org/openflow/protocol/OFActionTypeTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/protocol/OFActionTypeTest.java
rename to src/test/java/org/openflow/protocol/OFActionTypeTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/protocol/OFBarrierReplyTest.java b/src/test/java/org/openflow/protocol/OFBarrierReplyTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/protocol/OFBarrierReplyTest.java
rename to src/test/java/org/openflow/protocol/OFBarrierReplyTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/protocol/OFBarrierRequestTest.java b/src/test/java/org/openflow/protocol/OFBarrierRequestTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/protocol/OFBarrierRequestTest.java
rename to src/test/java/org/openflow/protocol/OFBarrierRequestTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/protocol/OFErrorTest.java b/src/test/java/org/openflow/protocol/OFErrorTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/protocol/OFErrorTest.java
rename to src/test/java/org/openflow/protocol/OFErrorTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/protocol/OFFeaturesReplyTest.java b/src/test/java/org/openflow/protocol/OFFeaturesReplyTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/protocol/OFFeaturesReplyTest.java
rename to src/test/java/org/openflow/protocol/OFFeaturesReplyTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/protocol/OFFlowRemovedTest.java b/src/test/java/org/openflow/protocol/OFFlowRemovedTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/protocol/OFFlowRemovedTest.java
rename to src/test/java/org/openflow/protocol/OFFlowRemovedTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/protocol/OFGetConfigReplyTest.java b/src/test/java/org/openflow/protocol/OFGetConfigReplyTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/protocol/OFGetConfigReplyTest.java
rename to src/test/java/org/openflow/protocol/OFGetConfigReplyTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/protocol/OFGetConfigRequestTest.java b/src/test/java/org/openflow/protocol/OFGetConfigRequestTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/protocol/OFGetConfigRequestTest.java
rename to src/test/java/org/openflow/protocol/OFGetConfigRequestTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/protocol/OFMatchTest.java b/src/test/java/org/openflow/protocol/OFMatchTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/protocol/OFMatchTest.java
rename to src/test/java/org/openflow/protocol/OFMatchTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/protocol/OFMessageContextStoreTest.java b/src/test/java/org/openflow/protocol/OFMessageContextStoreTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/protocol/OFMessageContextStoreTest.java
rename to src/test/java/org/openflow/protocol/OFMessageContextStoreTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/protocol/OFPortConfigTest.java b/src/test/java/org/openflow/protocol/OFPortConfigTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/protocol/OFPortConfigTest.java
rename to src/test/java/org/openflow/protocol/OFPortConfigTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/protocol/OFPortStatusTest.java b/src/test/java/org/openflow/protocol/OFPortStatusTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/protocol/OFPortStatusTest.java
rename to src/test/java/org/openflow/protocol/OFPortStatusTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/protocol/OFSetConfigTest.java b/src/test/java/org/openflow/protocol/OFSetConfigTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/protocol/OFSetConfigTest.java
rename to src/test/java/org/openflow/protocol/OFSetConfigTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/protocol/OFStatisticsReplyTest.java b/src/test/java/org/openflow/protocol/OFStatisticsReplyTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/protocol/OFStatisticsReplyTest.java
rename to src/test/java/org/openflow/protocol/OFStatisticsReplyTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/protocol/OFStatisticsRequestTest.java b/src/test/java/org/openflow/protocol/OFStatisticsRequestTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/protocol/OFStatisticsRequestTest.java
rename to src/test/java/org/openflow/protocol/OFStatisticsRequestTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/protocol/OFStatisticsTypeTest.java b/src/test/java/org/openflow/protocol/OFStatisticsTypeTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/protocol/OFStatisticsTypeTest.java
rename to src/test/java/org/openflow/protocol/OFStatisticsTypeTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/protocol/OFTypeTest.java b/src/test/java/org/openflow/protocol/OFTypeTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/protocol/OFTypeTest.java
rename to src/test/java/org/openflow/protocol/OFTypeTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/protocol/OFVendorTest.java b/src/test/java/org/openflow/protocol/OFVendorTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/protocol/OFVendorTest.java
rename to src/test/java/org/openflow/protocol/OFVendorTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/util/HexStringTest.java b/src/test/java/org/openflow/util/HexStringTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/util/HexStringTest.java
rename to src/test/java/org/openflow/util/HexStringTest.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/util/OFTestCase.java b/src/test/java/org/openflow/util/OFTestCase.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/util/OFTestCase.java
rename to src/test/java/org/openflow/util/OFTestCase.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/util/U16Test.java b/src/test/java/org/openflow/util/U16Test.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/util/U16Test.java
rename to src/test/java/org/openflow/util/U16Test.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/util/U32Test.java b/src/test/java/org/openflow/util/U32Test.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/util/U32Test.java
rename to src/test/java/org/openflow/util/U32Test.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/util/U64Test.java b/src/test/java/org/openflow/util/U64Test.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/util/U64Test.java
rename to src/test/java/org/openflow/util/U64Test.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/util/U8Test.java b/src/test/java/org/openflow/util/U8Test.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/util/U8Test.java
rename to src/test/java/org/openflow/util/U8Test.java
diff --git a/src/ext/floodlight/src/test/java/org/openflow/util/UnsignedTest.java b/src/test/java/org/openflow/util/UnsignedTest.java
similarity index 100%
rename from src/ext/floodlight/src/test/java/org/openflow/util/UnsignedTest.java
rename to src/test/java/org/openflow/util/UnsignedTest.java
