diff -Nrudb rtgraph3d-0.1.origin/rtg_cli.py rtgraph3d-0.1/rtg_cli.py
--- rtgraph3d-0.1.origin/rtg_cli.py	2007-12-29 17:07:43.057991641 +0100
+++ rtgraph3d-0.1/rtg_cli.py	2008-01-01 17:08:22.820438342 +0100
@@ -7,6 +7,66 @@
 import warnings
 warnings.filterwarnings("ignore","tempnam",RuntimeWarning, __name__)
 
+#
+# Can read either:
+# "#FF0000", "red" or (1,0,0)
+# Returns in (1,0,0) convention all the time,
+# raise an error is something goes wrong
+#
+def color_normalize(args):
+    # input notation type:
+    # 0 = rgb ((1,0,0))
+    # 1 = html (#FF0000)
+    # 2 = color name (red)
+    notation_type = 0
+
+    red = ""
+    green = ""
+    blue = ""
+
+    # This is fine, just return
+    if type(args) == tuple:
+        return args
+
+    if type(args) == str:
+        if args[0] == '#':
+            if len(args) > 7:
+                raise "Invalid html color code"
+
+            red = "0x" + args[1] + args[2]
+            redint = int(str(red), 16)
+            green = "0x" + args[3] + args[4]
+            greenint = int(str(green), 16)
+            blue = "0x" + args[5] + args[6]
+            blueint = int(str(blue), 16)
+
+            redf = redint / 255.
+            greenf = greenint / 255.
+            bluef = blueint / 255.
+
+            return (redf,greenf,bluef)
+        else:
+            colors = {
+                "black": "(0,0,0)",
+                "blue": "(0,0,1)",
+                "green": "(0,1,0)",
+                "red": "(1,0,0)",
+                "sienna": "(0.051 0.718 0.627)",
+                "turquoise": "(0.482,0.714,0.878)",
+                "white": "(1,1,1)",
+            }
+
+            args = args.lower()
+            
+            if args in colors.keys():
+                return colors[args]
+            else:
+                raise "Cannot find corresponding color"
+            
+        return
+
+    raise "Unsupported input"
+
 
 class Interp(cmd.Cmd):
     prompt = "RTG> "
@@ -36,8 +96,31 @@
     def do_dot(self, args):
         graph = pydot.graph_from_dot_file(args)
         for edge in graph.get_edge_list():
-            edge_args = edge.get_source() + " " + edge.get_destination()
+        	edge_src = "\"" + edge.get_source() + "\""
+	        edge_dst = "\"" + edge.get_destination() + "\""
+        	for node in graph.get_node_list():
+                	if node.name == edge_src:
+                        	src_label = node.get_label()
+				src_color = node.get_color()
+			if node.name == edge_dst:
+        	                dst_label = node.get_label()
+				dst_color = node.get_color()
+
+		if not src_label:
+			src_label = edge.get_source()
+
+		if not dst_label:
+			dst_label = edge.get_destination()
+
+
+	        edge_args = src_label + " " + dst_label
             self.do_edge(edge_args)
+		if src_color:
+			src_color_s = src_label + " color=" + color_normalize(src_color)
+			self.do_update(src_color_s)
+		if dst_color:
+			dst_color_s = dst_label + " color=" + color_normalize(dst_color)
+			self.do_update(dst_color_s)
 
     def do_glow(self, args):
         for n in args.split():
