Create a copy of floodlight source files on which we can apply our changes.
Move imported floodlight from src/ext to import/ to better reflect its purpose (clean imported files).
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