created FlowProgrammer module and implemented FlowPusher and FlowSynchronizer as services, also modified FlowManager to use the service exported by FlowProgrammer
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java
index de24b53..bd5ba43 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java
@@ -2,7 +2,6 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.EnumSet;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.Map;
@@ -18,7 +17,6 @@
 import net.floodlightcontroller.core.module.IFloodlightModule;
 import net.floodlightcontroller.core.module.IFloodlightService;
 import net.floodlightcontroller.restserver.IRestApiService;
-import net.floodlightcontroller.util.OFMessageDamper;
 import net.onrc.onos.datagrid.IDatagridService;
 import net.onrc.onos.graph.GraphDBOperation;
 import net.onrc.onos.ofcontroller.core.INetMapStorage;
@@ -26,13 +24,11 @@
 import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowPath;
 import net.onrc.onos.ofcontroller.floodlightlistener.INetworkGraphService;
 import net.onrc.onos.ofcontroller.flowmanager.web.FlowWebRoutable;
-import net.onrc.onos.ofcontroller.flowprogrammer.FlowPusher;
+import net.onrc.onos.ofcontroller.flowprogrammer.IFlowPusherService;
 import net.onrc.onos.ofcontroller.topology.ITopologyNetService;
 import net.onrc.onos.ofcontroller.topology.Topology;
-import net.onrc.onos.ofcontroller.topology.TopologyElement;
 import net.onrc.onos.ofcontroller.util.*;
 
-import org.openflow.protocol.OFType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -57,8 +53,7 @@
     protected FloodlightModuleContext context;
     protected FlowEventHandler flowEventHandler;
 
-    protected FlowPusher pusher;
-    private static final int NUM_PUSHER_THREAD = 1;
+    protected IFlowPusherService pusher;
     
 //	LEGACY
 //    protected OFMessageDamper messageDamper;
@@ -467,8 +462,8 @@
 //					    EnumSet.of(OFType.FLOW_MOD),
 //					    OFMESSAGE_DAMPER_TIMEOUT);
 
-	pusher = new FlowPusher(NUM_PUSHER_THREAD);
-	pusher.init(null, floodlightProvider.getOFMessageFactory(), null);
+	pusher = context.getServiceImpl(IFlowPusherService.class);
+
 	this.init("");
 
 	mapReaderScheduler = Executors.newScheduledThreadPool(1);
@@ -509,8 +504,6 @@
 
 	// Initialize the Flow Entry ID generator
 	nextFlowEntryIdPrefix = randomGenerator.nextInt();
-
-	pusher.start();
 	
 	//
 	// Create the Flow Event Handler thread and register it with the
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowSynchronizer.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowSynchronizer.java
deleted file mode 100644
index 8e12a46..0000000
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowSynchronizer.java
+++ /dev/null
@@ -1,538 +0,0 @@
-package net.onrc.onos.ofcontroller.flowmanager;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-
-import org.openflow.protocol.OFFlowMod;
-import org.openflow.protocol.OFMatch;
-import org.openflow.protocol.OFMessage;
-import org.openflow.protocol.OFPacketOut;
-import org.openflow.protocol.OFPort;
-import org.openflow.protocol.OFStatisticsRequest;
-import org.openflow.protocol.action.OFAction;
-import org.openflow.protocol.action.OFActionDataLayerDestination;
-import org.openflow.protocol.action.OFActionDataLayerSource;
-import org.openflow.protocol.action.OFActionEnqueue;
-import org.openflow.protocol.action.OFActionNetworkLayerDestination;
-import org.openflow.protocol.action.OFActionNetworkLayerSource;
-import org.openflow.protocol.action.OFActionNetworkTypeOfService;
-import org.openflow.protocol.action.OFActionOutput;
-import org.openflow.protocol.action.OFActionStripVirtualLan;
-import org.openflow.protocol.action.OFActionTransportLayerDestination;
-import org.openflow.protocol.action.OFActionTransportLayerSource;
-import org.openflow.protocol.action.OFActionVirtualLanIdentifier;
-import org.openflow.protocol.action.OFActionVirtualLanPriorityCodePoint;
-import org.openflow.protocol.statistics.OFFlowStatisticsReply;
-import org.openflow.protocol.statistics.OFFlowStatisticsRequest;
-import org.openflow.protocol.statistics.OFStatistics;
-import org.openflow.protocol.statistics.OFStatisticsType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import net.floodlightcontroller.core.IFloodlightProviderService;
-import net.floodlightcontroller.core.IOFSwitch;
-import net.floodlightcontroller.core.IOFSwitchListener;
-import net.floodlightcontroller.core.module.FloodlightModuleContext;
-import net.floodlightcontroller.core.module.FloodlightModuleException;
-import net.floodlightcontroller.core.module.IFloodlightModule;
-import net.floodlightcontroller.core.module.IFloodlightService;
-import net.onrc.onos.graph.GraphDBOperation;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowEntry;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.onrc.onos.ofcontroller.util.Dpid;
-import net.onrc.onos.ofcontroller.util.FlowEntryAction;
-import net.onrc.onos.ofcontroller.util.FlowEntryActions;
-import net.onrc.onos.ofcontroller.util.FlowEntryId;
-import net.onrc.onos.ofcontroller.util.FlowEntryAction.ActionEnqueue;
-import net.onrc.onos.ofcontroller.util.FlowEntryAction.ActionOutput;
-import net.onrc.onos.ofcontroller.util.FlowEntryAction.ActionSetEthernetAddr;
-import net.onrc.onos.ofcontroller.util.FlowEntryAction.ActionSetIPv4Addr;
-import net.onrc.onos.ofcontroller.util.FlowEntryAction.ActionSetIpToS;
-import net.onrc.onos.ofcontroller.util.FlowEntryAction.ActionSetTcpUdpPort;
-import net.onrc.onos.ofcontroller.util.FlowEntryAction.ActionSetVlanId;
-import net.onrc.onos.ofcontroller.util.FlowEntryAction.ActionSetVlanPriority;
-import net.onrc.onos.ofcontroller.util.FlowEntryAction.ActionStripVlan;
-
-public class FlowSynchronizer implements IOFSwitchListener,
-					 IFlowSyncService {
-
-    protected GraphDBOperation dbHandler = new GraphDBOperation(""); //TODO: conf
-    protected static Logger log = LoggerFactory.getLogger(FlowSynchronizer.class);
-    protected IFloodlightProviderService floodlightProvider;
-    protected Map<IOFSwitch, Thread> switchThread = new HashMap<IOFSwitch, Thread>();
-    
-    protected class Synchroizer implements Runnable {
-	IOFSwitch sw;
-	ISwitchObject swObj;
-	
-	public Synchroizer(IOFSwitch sw) {
-	    this.sw = sw;
-	    Dpid dpid = new Dpid(sw.getId());
-	    this.swObj = dbHandler.searchSwitch(dpid.toString());
-	}
-	
-	@Override
-	public void run() {
-	    //TODO: use a FlowEntryId, FlowEntry HashMap
-	    Set<FlowEntryWrapper> graphEntries = getFlowEntriesFromGraph();
-	    Set<FlowEntryWrapper> switchEntries = getFlowEntriesFromSwitch();
-	    compare(graphEntries, switchEntries);
-	}
-	
-	private void compare(Set<FlowEntryWrapper> graphEntries, Set<FlowEntryWrapper> switchEntries) {
-	    
-	    /* old impl
-	    System.out.println("graph entries: " + graphEntries);
-            System.out.println("switch entries: " + switchEntries);
-	    Set<FlowEntryWrapper> entriesToAdd = new HashSet<FlowEntryWrapper>(graphEntries);
-	    entriesToAdd.removeAll(switchEntries);
-	    Set<FlowEntryWrapper> entriesToRemove = switchEntries;
-	    entriesToRemove.removeAll(graphEntries);
-	    System.out.println("add: " + entriesToAdd);
-	    System.out.println("remove: " + entriesToRemove);
-	    //FlowDatabaseOperation for converting flowentries
-	    */
-	    
-	    /* TODO: new implementation with graph */
-	    int added = 0, removed = 0, skipped = 0;
-	    for(FlowEntryWrapper entry : switchEntries) {
-	    	if(graphEntries.contains(entry)) {
-	    	    graphEntries.remove(entry);
-	    	    System.out.println("** skipping entry " + entry.id);
-	    	    skipped++;
-	    	}
-	    	else {
-	    	    // remove fid from the switch
-	    	    System.out.println("** remove entry " + entry.id);
-	    	    // TODO: use remove strict message
-	    	    writeToSwitch(entry.getOFMessage());
-	    	    removed++;
-	    	}
-	    }
-	    for(FlowEntryWrapper entry : graphEntries) {
-	    	// add fid to switch
-		System.out.println("** add entry " + entry.id);
-		// TODO: use modify strict message
-		writeToSwitch(entry.getOFMessage());
-		added++;
-	    }	  
-	    log.debug("Flow entries added "+ added + ", " +
-		      "Flow entries removed "+ removed + ", " +
-		      "Flow entries skipped " + skipped);
-	}
-	
-	private void writeToSwitch(OFMessage msg) {
-	    try {
-		sw.write(msg, null); // TODO: what is context?
-		sw.flush();
-	    } catch (IOException e) {
-		// TODO Auto-generated catch block
-		System.out.println("ERROR*****");
-		e.printStackTrace();
-	    } 
-	}
-	
-	private Set<FlowEntryWrapper> getFlowEntriesFromGraph() {
-	    Set<FlowEntryWrapper> entries = new HashSet<FlowEntryWrapper>();
-	    for(IFlowEntry entry : swObj.getFlowEntries()) {
-		FlowEntryWrapper fe = new FlowEntryWrapper(entry);
-		entries.add(fe);
-	    }
-	    return entries;	    
-	}
-	
-	private Set<FlowEntryWrapper> getFlowEntriesFromSwitch() {
-
-	    int lengthU = 0;
-	    OFMatch match = new OFMatch();
-	    match.setWildcards(OFMatch.OFPFW_ALL);
-
-	    OFFlowStatisticsRequest stat = new OFFlowStatisticsRequest();
-	    stat.setOutPort((short) 0xffff); //TODO: OFPort.OFPP_NONE
-	    stat.setTableId((byte) 0xff); // TODO: fix this with enum (ALL TABLES)
-	    stat.setMatch(match);
-	    List<OFStatistics> stats = new ArrayList<OFStatistics>();
-	    stats.add(stat);
-	    lengthU += stat.getLength();
-
-	    OFStatisticsRequest req = new OFStatisticsRequest();
-	    req.setStatisticType(OFStatisticsType.FLOW);
-	    req.setStatistics(stats);
-	    lengthU += req.getLengthU();
-	    req.setLengthU(lengthU);
-
-	    List<OFStatistics> entries = null;
-	    try {
-		Future<List<OFStatistics>> dfuture = sw.getStatistics(req);
-		entries = dfuture.get();
-	    } catch (IOException e) {
-		// TODO Auto-generated catch block
-		e.printStackTrace();
-	    } catch (InterruptedException e) {
-		// TODO Auto-generated catch block
-		e.printStackTrace();
-	    } catch (ExecutionException e) {
-		// TODO Auto-generated catch block
-		e.printStackTrace();
-	    }
-	    
-	    Set<FlowEntryWrapper> results = new HashSet<FlowEntryWrapper>();
-	    for(OFStatistics result : entries){
-		//System.out.println(result.getClass());
-		OFFlowStatisticsReply entry = (OFFlowStatisticsReply) result;
-		FlowEntryWrapper fe = new FlowEntryWrapper(entry);
-		results.add(fe);
-	    }
-	    return results;
-	}
-	
-    }
-    
-    public void synchronize(IOFSwitch sw) {
-	Synchroizer sync = new Synchroizer(sw);
-	Thread t = new Thread(sync);
-	t.start();
-	switchThread.put(sw, t);
-    }
-    
-    @Override
-    public void addedSwitch(IOFSwitch sw) {
-	// TODO Auto-generated method stub
-	System.out.println("added switch in flow sync: " + sw);
-	
-	// TODO: look at how this is spawned
-	synchronize(sw);
-    }
-
-    @Override
-    public void removedSwitch(IOFSwitch sw) {
-	// TODO Auto-generated method stub
-	System.out.println("removed switch in flow sync: " + sw);
-	Thread t = switchThread.remove(sw);
-	if(t != null) {
-	    t.interrupt();
-	}
-
-    }
-
-    @Override
-    public void switchPortChanged(Long switchId) {
-	// TODO Auto-generated method stub
-
-    }
-
-    @Override
-    public String getName() {
-	// TODO Auto-generated method stub
-	return "FlowSynchronizer";
-    }
-
-    /*
-    @Override
-    public void init(FloodlightModuleContext context)
-	    throws FloodlightModuleException {
-	// TODO Auto-generated method stub
-	System.out.println("********* Starting flow sync....");
-	floodlightProvider = context.getServiceImpl(IFloodlightProviderService.class);
-	System.out.println(context.getAllServices());	
-    }
-
-    @Override
-    public void startUp(FloodlightModuleContext context) {
-	// TODO Auto-generated method stub
-	floodlightProvider.addOFSwitchListener(this);
-    }
-    */
-
-}
-
-class FlowEntryWrapper {
-    FlowEntryId id;
-    IFlowEntry iflow;
-    OFFlowStatisticsReply stat;
-    
-    public FlowEntryWrapper(IFlowEntry entry) {
-	// TODO Auto-generated constructor stub
-	iflow = entry;
-	id = new FlowEntryId(entry.getFlowEntryId());
-    }
-    
-    public FlowEntryWrapper(OFFlowStatisticsReply entry) {
-	stat = entry;
-	id = new FlowEntryId(entry.getCookie());
-    }
-    
-    public OFMessage getOFMessage() {
-	if(iflow != null) {
-	    //convert iflow
-	    OFFlowMod fm = new OFFlowMod();
-	    fm.setCommand(OFFlowMod.OFPFC_MODIFY_STRICT);
-	    
-	    // ************* COPIED
-	    OFMatch match = new OFMatch();
-		match.setWildcards(OFMatch.OFPFW_ALL);
-
-		// Match the Incoming Port
-		Short matchInPort = iflow.getMatchInPort();
-		if (matchInPort != null) {
-		    match.setInputPort(matchInPort);
-		    match.setWildcards(match.getWildcards() & ~OFMatch.OFPFW_IN_PORT);
-		}
-
-		// Match the Source MAC address
-		String matchSrcMac = iflow.getMatchSrcMac();
-		if (matchSrcMac != null) {
-		    match.setDataLayerSource(matchSrcMac);
-		    match.setWildcards(match.getWildcards() & ~OFMatch.OFPFW_DL_SRC);
-		}
-
-		// Match the Destination MAC address
-		String matchDstMac = iflow.getMatchDstMac();
-		if (matchDstMac != null) {
-		    match.setDataLayerDestination(matchDstMac);
-		    match.setWildcards(match.getWildcards() & ~OFMatch.OFPFW_DL_DST);
-		}
-
-		// Match the Ethernet Frame Type
-		Short matchEthernetFrameType = iflow.getMatchEthernetFrameType();
-		if (matchEthernetFrameType != null) {
-		    match.setDataLayerType(matchEthernetFrameType);
-		    match.setWildcards(match.getWildcards() & ~OFMatch.OFPFW_DL_TYPE);
-		}
-
-		// Match the VLAN ID
-		Short matchVlanId = iflow.getMatchVlanId();
-		if (matchVlanId != null) {
-		    match.setDataLayerVirtualLan(matchVlanId);
-		    match.setWildcards(match.getWildcards() & ~OFMatch.OFPFW_DL_VLAN);
-		}
-
-		// Match the VLAN priority
-		Byte matchVlanPriority = iflow.getMatchVlanPriority();
-		if (matchVlanPriority != null) {
-		    match.setDataLayerVirtualLanPriorityCodePoint(matchVlanPriority);
-		    match.setWildcards(match.getWildcards() & ~OFMatch.OFPFW_DL_VLAN_PCP);
-		}
-
-		// Match the Source IPv4 Network prefix
-		String matchSrcIPv4Net = iflow.getMatchSrcIPv4Net();
-		if (matchSrcIPv4Net != null) {
-		    match.setFromCIDR(matchSrcIPv4Net, OFMatch.STR_NW_SRC);
-		}
-
-		// Natch the Destination IPv4 Network prefix
-		String matchDstIPv4Net = iflow.getMatchDstIPv4Net();
-		if (matchDstIPv4Net != null) {
-		    match.setFromCIDR(matchDstIPv4Net, OFMatch.STR_NW_DST);
-		}
-
-		// Match the IP protocol
-		Byte matchIpProto = iflow.getMatchIpProto();
-		if (matchIpProto != null) {
-		    match.setNetworkProtocol(matchIpProto);
-		    match.setWildcards(match.getWildcards() & ~OFMatch.OFPFW_NW_PROTO);
-		}
-
-		// Match the IP ToS (DSCP field, 6 bits)
-		Byte matchIpToS = iflow.getMatchIpToS();
-		if (matchIpToS != null) {
-		    match.setNetworkTypeOfService(matchIpToS);
-		    match.setWildcards(match.getWildcards() & ~OFMatch.OFPFW_NW_TOS);
-		}
-
-		// Match the Source TCP/UDP port
-		Short matchSrcTcpUdpPort = iflow.getMatchSrcTcpUdpPort();
-		if (matchSrcTcpUdpPort != null) {
-		    match.setTransportSource(matchSrcTcpUdpPort);
-		    match.setWildcards(match.getWildcards() & ~OFMatch.OFPFW_TP_SRC);
-		}
-
-		// Match the Destination TCP/UDP port
-		Short matchDstTcpUdpPort = iflow.getMatchDstTcpUdpPort();
-		if (matchDstTcpUdpPort != null) {
-		    match.setTransportDestination(matchDstTcpUdpPort);
-		    match.setWildcards(match.getWildcards() & ~OFMatch.OFPFW_TP_DST);
-		}
-		
-		//
-		// Fetch the actions
-		//
-//		Short actionOutputPort = null;
-		List<OFAction> openFlowActions = new ArrayList<OFAction>();
-		int actionsLen = 0;
-		FlowEntryActions flowEntryActions = null;
-		String actionsStr = iflow.getActions();
-		if (actionsStr != null)
-		    flowEntryActions = new FlowEntryActions(actionsStr);
-		for (FlowEntryAction action : flowEntryActions.actions()) {
-//		    ActionOutput actionOutput = action.actionOutput();
-		    ActionSetVlanId actionSetVlanId = action.actionSetVlanId();
-		    ActionSetVlanPriority actionSetVlanPriority = action.actionSetVlanPriority();
-		    ActionStripVlan actionStripVlan = action.actionStripVlan();
-		    ActionSetEthernetAddr actionSetEthernetSrcAddr = action.actionSetEthernetSrcAddr();
-		    ActionSetEthernetAddr actionSetEthernetDstAddr = action.actionSetEthernetDstAddr();
-		    ActionSetIPv4Addr actionSetIPv4SrcAddr = action.actionSetIPv4SrcAddr();
-		    ActionSetIPv4Addr actionSetIPv4DstAddr = action.actionSetIPv4DstAddr();
-		    ActionSetIpToS actionSetIpToS = action.actionSetIpToS();
-		    ActionSetTcpUdpPort actionSetTcpUdpSrcPort = action.actionSetTcpUdpSrcPort();
-		    ActionSetTcpUdpPort actionSetTcpUdpDstPort = action.actionSetTcpUdpDstPort();
-		    ActionEnqueue actionEnqueue = action.actionEnqueue();
-
-//		    if (actionOutput != null) {
-//			actionOutputPort = actionOutput.port().value();
-//			// XXX: The max length is hard-coded for now
-//			OFActionOutput ofa =
-//			    new OFActionOutput(actionOutput.port().value(),
-//					       (short)0xffff);
-//			openFlowActions.add(ofa);
-//			actionsLen += ofa.getLength();
-//		    }
-
-		    if (actionSetVlanId != null) {
-			OFActionVirtualLanIdentifier ofa =
-			    new OFActionVirtualLanIdentifier(actionSetVlanId.vlanId());
-			openFlowActions.add(ofa);
-			actionsLen += ofa.getLength();
-		    }
-
-		    if (actionSetVlanPriority != null) {
-			OFActionVirtualLanPriorityCodePoint ofa =
-			    new OFActionVirtualLanPriorityCodePoint(actionSetVlanPriority.vlanPriority());
-			openFlowActions.add(ofa);
-			actionsLen += ofa.getLength();
-		    }
-
-		    if (actionStripVlan != null) {
-			if (actionStripVlan.stripVlan() == true) {
-			    OFActionStripVirtualLan ofa = new OFActionStripVirtualLan();
-			    openFlowActions.add(ofa);
-			    actionsLen += ofa.getLength();
-			}
-		    }
-
-		    if (actionSetEthernetSrcAddr != null) {
-			OFActionDataLayerSource ofa = 
-			    new OFActionDataLayerSource(actionSetEthernetSrcAddr.addr().toBytes());
-			openFlowActions.add(ofa);
-			actionsLen += ofa.getLength();
-		    }
-
-		    if (actionSetEthernetDstAddr != null) {
-			OFActionDataLayerDestination ofa =
-			    new OFActionDataLayerDestination(actionSetEthernetDstAddr.addr().toBytes());
-			openFlowActions.add(ofa);
-			actionsLen += ofa.getLength();
-		    }
-
-		    if (actionSetIPv4SrcAddr != null) {
-			OFActionNetworkLayerSource ofa =
-			    new OFActionNetworkLayerSource(actionSetIPv4SrcAddr.addr().value());
-			openFlowActions.add(ofa);
-			actionsLen += ofa.getLength();
-		    }
-
-		    if (actionSetIPv4DstAddr != null) {
-			OFActionNetworkLayerDestination ofa =
-			    new OFActionNetworkLayerDestination(actionSetIPv4DstAddr.addr().value());
-			openFlowActions.add(ofa);
-			actionsLen += ofa.getLength();
-		    }
-
-		    if (actionSetIpToS != null) {
-			OFActionNetworkTypeOfService ofa =
-			    new OFActionNetworkTypeOfService(actionSetIpToS.ipToS());
-			openFlowActions.add(ofa);
-			actionsLen += ofa.getLength();
-		    }
-
-		    if (actionSetTcpUdpSrcPort != null) {
-			OFActionTransportLayerSource ofa =
-			    new OFActionTransportLayerSource(actionSetTcpUdpSrcPort.port());
-			openFlowActions.add(ofa);
-			actionsLen += ofa.getLength();
-		    }
-
-		    if (actionSetTcpUdpDstPort != null) {
-			OFActionTransportLayerDestination ofa =
-			    new OFActionTransportLayerDestination(actionSetTcpUdpDstPort.port());
-			openFlowActions.add(ofa);
-			actionsLen += ofa.getLength();
-		    }
-
-		    if (actionEnqueue != null) {
-			OFActionEnqueue ofa =
-			    new OFActionEnqueue(actionEnqueue.port().value(),
-						actionEnqueue.queueId());
-			openFlowActions.add(ofa);
-			actionsLen += ofa.getLength();
-		    }
-		}
-
-		fm.setIdleTimeout((short) 0)
-		    .setHardTimeout((short) 0)
-		    .setPriority((short) 100)
-		    .setBufferId(OFPacketOut.BUFFER_ID_NONE);
-		fm
-		    .setCookie(id.value())
-		    .setMatch(match)
-		    .setActions(openFlowActions)
-		    .setLengthU(OFFlowMod.MINIMUM_LENGTH + actionsLen);
-		fm.setOutPort(OFPort.OFPP_NONE.getValue());
-		
-	    // ********* END COPIED
-	    
-	    return fm;
-	}
-	else if(stat != null) {
-	    // convert stat
-	    OFFlowMod fm = new OFFlowMod();
-	    fm.setCookie(stat.getCookie());
-	    fm.setCommand(OFFlowMod.OFPFC_DELETE_STRICT);
-	    fm.setLengthU(OFFlowMod.MINIMUM_LENGTH);
-	    fm.setMatch(stat.getMatch());
-	    fm.setPriority(stat.getPriority());
-	    fm.setOutPort(OFPort.OFPP_NONE);
-//	    fm.setActions(stat.getActions());
-//	    fm.setIdleTimeout(stat.getIdleTimeout());
-//	    fm.setHardTimeout(stat.getHardTimeout());
-	    return fm;
-	}
-	return null;
-    }
-    
-    /**
-     * Return the hash code of the Flow Entry ID
-     */
-    @Override
-    public int hashCode() {
-	return id.hashCode();
-    }
-
-    /**
-     * Returns true of the object is another Flow Entry ID with 
-     * the same value; otherwise, returns false.
-     * 
-     * @param Object to compare
-     */
-    @Override
-    public boolean equals(Object obj){
-	if(obj.getClass() == this.getClass()) {
-	    FlowEntryWrapper entry = (FlowEntryWrapper) obj;
-	    return this.id.equals(entry.id);
-	}
-	return false;
-    }
-    
-    @Override
-    public String toString() {
-	return id.toString();
-    }
-}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/IFlowSyncService.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/IFlowSyncService.java
deleted file mode 100644
index 957386f..0000000
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/IFlowSyncService.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package net.onrc.onos.ofcontroller.flowmanager;
-
-import net.floodlightcontroller.core.IOFSwitch;
-import net.floodlightcontroller.core.module.IFloodlightService;
-
-/**
- * @author bocon
- *
- */
-public interface IFlowSyncService extends IFloodlightService {
-    public void synchronize(IOFSwitch sw);
-}