diff --git a/service.go b/service.go
index 05964fa..ccfd0bc 100644
--- a/service.go
+++ b/service.go
@@ -4,12 +4,14 @@
 	"context"
 	"fmt"
 	"net/http"
+	"sort"
 	"strings"
 
 	"code.hackerspace.pl/q3k/topo/graph"
 	"github.com/gobuffalo/packr"
 	"github.com/golang/glog"
 	"github.com/q3k/statusz"
+	"vbom.ml/util/sortorder"
 )
 
 type ServiceConfig struct {
@@ -42,7 +44,7 @@
         var dot = this.responseText;
         viz.renderSVGElement(dot)
         .then(function(element) {
-          document.body.appendChild(element);
+          document.getElementById("graph").appendChild(element);
         });
       }
     };
@@ -50,6 +52,7 @@
     xmlhttp.send();
 
   </script>
+  <div id="graph" style="text-align: center;"></div>
 `
 
 func (s *Service) Run() {
@@ -62,6 +65,8 @@
 
 	http.HandleFunc("/debug/graphviz", func(w http.ResponseWriter, r *http.Request) {
 		fmt.Fprintf(w, "graph G {\n")
+		fmt.Fprintf(w, "  ranksep = 2\n")
+		fmt.Fprintf(w, "  splines = polyline\n")
 		fmt.Fprintf(w, "  rankdir = LR\n")
 		for _, machine := range s.gr.Machines {
 			portNames := []string{}
@@ -74,7 +79,14 @@
 		}
 		for _, sw := range s.gr.Switches {
 			portNames := []string{}
+			portsOrdered := []*graph.SwitchPort{}
 			for _, port := range sw.Ports {
+				portsOrdered = append(portsOrdered, port)
+			}
+			sort.Slice(portsOrdered, func(i, j int) bool {
+				return sortorder.NaturalLess(portsOrdered[i].Name, portsOrdered[j].Name)
+			})
+			for _, port := range portsOrdered {
 				name := fmt.Sprintf("<%s> %s", port.Name, port.Name)
 				portNames = append(portNames, name)
 			}
@@ -86,7 +98,7 @@
 				if port.OtherEnd == nil {
 					continue
 				}
-				fmt.Fprintf(w, "  %s:%q -- %s:%q\n", machine.Name, port.Name, port.OtherEnd.Switch.Name, port.OtherEnd.Name)
+				fmt.Fprintf(w, "  %s:%q:e -- %s:%q:w\n", machine.Name, port.Name, port.OtherEnd.Switch.Name, port.OtherEnd.Name)
 			}
 		}
 		fmt.Fprintf(w, "}\n")
