diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/DeviceImpl.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/DeviceImpl.java
new file mode 100644
index 0000000..09597a1
--- /dev/null
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/DeviceImpl.java
@@ -0,0 +1,58 @@
+package net.onrc.onos.ofcontroller.networkgraph;
+
+import java.net.InetAddress;
+import java.util.Collection;
+import java.util.LinkedList;
+
+import net.floodlightcontroller.util.MACAddress;
+
+/**
+ * @author Toshio Koide (t-koide@onlab.us)
+ */
+public class DeviceImpl implements Device {
+	LinkedList<Port> attachmentPoints = new LinkedList<Port>();
+	MACAddress macAddr;
+
+	public DeviceImpl(NetworkGraph graph, MACAddress macAddr) { 
+		this.macAddr = macAddr;
+	}
+	
+	@Override
+	public MACAddress getMacAddress() {
+		return macAddr;
+	}
+
+	@Override
+	public Collection<InetAddress> getIpAddress() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/**
+	 * @return ports attached to the device.
+	 * The last added port is stored as the first element.
+	 */
+	@Override
+	public Iterable<Port> getAttachmentPoints() {
+		return attachmentPoints;
+	}
+
+	@Override
+	public long getLastSeenTime() {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+	
+	public void addAttachmentPoint(Port port) {
+		attachmentPoints.add(0, port);
+	}
+	
+	public void removeAttachmentPoint(Port port) {
+		attachmentPoints.remove(port);
+	}
+	
+	@Override
+	public String toString() {
+		return macAddr.toString();
+	}
+}
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 ebff81d..dbf8750 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/FloodlightToOnosMappers.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/FloodlightToOnosMappers.java
@@ -17,7 +17,7 @@
 	}
 
 	public static Port map(NetworkGraph graph, SwitchImpl sw, OFPhysicalPort port) {
-		PortImpl onosPort = new PortImpl(graph, sw, new Long(port.getPortNumber()));
+		PortImpl onosPort = new PortImpl(graph, sw, Long.valueOf(port.getPortNumber()));
 		onosPort.setDescription(port.getName());
 		return onosPort;
 	}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/Path.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/Path.java
new file mode 100644
index 0000000..4666345
--- /dev/null
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/Path.java
@@ -0,0 +1,24 @@
+package net.onrc.onos.ofcontroller.networkgraph;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+
+/**
+ * Base class for Path representation
+ * @author Toshio Koide (t-koide@onlab.us)
+ */
+public class Path extends LinkedList<Link> {
+	private static final long serialVersionUID = 7127274096495173415L;
+	
+	@Override
+	public String toString() {
+		StringBuilder builder = new StringBuilder();
+		Iterator<Link> i = this.iterator();
+		while (i.hasNext()) {
+			builder.append(i.next().toString());
+			if (i.hasNext())
+				builder.append(", ");
+		}
+		return builder.toString();
+	}
+}
