diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/FloodlightToOnosMappers.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/FloodlightToOnosMappers.java
index dbf8750..cb936a9 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/FloodlightToOnosMappers.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/FloodlightToOnosMappers.java
@@ -4,6 +4,7 @@
 
 import net.floodlightcontroller.core.IOFSwitch;
 
+// XXX Either change the return value to Event Object or remove this class
 public class FloodlightToOnosMappers {
 
 	public static Switch map(NetworkGraph graph, IOFSwitch sw) {
@@ -23,12 +24,10 @@
 	}
 
 	public static Link map(NetworkGraph graph, net.floodlightcontroller.routing.Link link) {
-		//Port srcPort = graph.getSwitch(link.getSrc()).getPort(Long.valueOf(link.getSrcPort()));
-		//Port dstPort = graph.getSwitch(link.getDst()).getPort(Long.valueOf(link.getDstPort()));
-		//LinkImpl onosLink = new LinkImpl(graph, srcPort, dstPort);
-		LinkImpl onosLink = new LinkImpl(graph, link.getSrc(), (long)link.getSrcPort(),
-				link.getDst(), (long)link.getDstPort());
-		
+		Port srcPort = graph.getSwitch(link.getSrc()).getPort(Long.valueOf(link.getSrcPort()));
+		Port dstPort = graph.getSwitch(link.getDst()).getPort(Long.valueOf(link.getDstPort()));
+		LinkImpl onosLink = new LinkImpl(graph, srcPort, dstPort);
+
 		return onosLink;
 	}
 }
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/LinkImpl.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/LinkImpl.java
index 9b43171..31461a5 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/LinkImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/LinkImpl.java
@@ -15,30 +15,6 @@
 
 	protected static final int DEFAULT_COST = 1;
 	protected int cost = DEFAULT_COST;
-	
-	private long srcSwitchDpid;
-	private long srcPortNumber;
-	private long dstSwitchDpid;
-	private long dstPortNumber;
-	
-	/**
-	 * Constructor for when a new link is being created because of a link
-	 * discovery event.
-	 * @param graph
-	 * @param srcSwitchDpid
-	 * @param srcPortNumber
-	 * @param dstSwitchDpid
-	 * @param dstPortNumber
-	 */
-	public LinkImpl(NetworkGraph graph, long srcSwitchDpid, long srcPortNumber,
-			long dstSwitchDpid, long dstPortNumber) {
-		super(graph);
-		
-		this.srcSwitchDpid = srcSwitchDpid;
-		this.srcPortNumber = srcPortNumber;
-		this.dstSwitchDpid = dstSwitchDpid;
-		this.dstPortNumber = dstPortNumber;
-	}
 
 	/**
 	 * Constructor for when a link is read from the database and the Ports
@@ -56,9 +32,9 @@
 
 	protected void setToPorts() {
 		((PortImpl)srcPort).setOutgoingLink(this);
-		((PortImpl)srcPort).setIncomingLink(this);		
+		((PortImpl)srcPort).setIncomingLink(this);
 	}
-	
+
 	protected void unsetFromPorts() {
 		((PortImpl)srcPort).setOutgoingLink(null);
 		((PortImpl)srcPort).setIncomingLink(null);
@@ -101,29 +77,29 @@
 
 	@Override
 	public Long getSourceSwitchDpid() {
-		return srcSwitchDpid;
+		return srcPort.getSwitch().getDpid();
 	}
 
 	@Override
 	public Long getSourcePortNumber() {
-		return srcPortNumber;
+		return srcPort.getNumber();
 	}
 
 	@Override
 	public Long getDestinationSwitchDpid() {
-		return dstSwitchDpid;
+		return dstPort.getSwitch().getDpid();
 	}
 
 	@Override
 	public Long getDestinationPortNumber() {
-		return dstPortNumber;
+		return dstPort.getNumber();
 	}
 
 	@Override
 	public Double getCapacity() {
 		return capacity;
 	}
-	
+
 	@Override
 	public String toString() {
 		return String.format("%s --(cap:%f Mbps)--> %s",
