diff --git a/src/main/jastadd/Graphviz.jrag b/src/main/jastadd/Graphviz.jrag
index a66ae5cc81430e81495dbe9eb15a75d4a02a06d6..07ca5fcfd74cf449178e5a55b0a77dbed2074be6 100644
--- a/src/main/jastadd/Graphviz.jrag
+++ b/src/main/jastadd/Graphviz.jrag
@@ -3,39 +3,40 @@ aspect Graphviz {
 
     StringBuffer b = new StringBuffer();
 
-    b.append("digraph G {\n")
-        .append("rankdir=LR;\n")
-        .append("center=true; margin=1;\n")
+    b.append("digraph \"").append(name()).append("\" {\n")
+        .append("  rankdir=LR;\n")
+        .append("  center=true; margin=1;\n")
         .append("\n")
-        .append("subgraph place {\n")
-        .append("node [shape=circle,fixedsize=true,label=\"\", height=.3,width=.3];\n");
+        .append("  subgraph places {\n")
+        .append("    node [shape=circle,fixedsize=true,label=\"\", height=.3,width=.3];\n");
 
     for (Place place : allPlaces()) {
-      b.append(place.dotId()).append(" [");
+      b.append("    ").append(place.dotId()).append(" [");
       if (place.hasName()) b.append("xlabel=\"").append(place.name()).append("\", ");
       b.append("label=\"").append("0").append("\"];\n");
     }
 
-    b.append("}\n\n");
+    b.append("  }\n\n");
 
-    b.append("subgraph transitions {\n")
-        .append("node [shape=rect,height=0.4,width=.4];\n");
+    b.append("  subgraph transitions {\n")
+        .append("    node [shape=rect,height=0.4,width=.4];\n");
     for (Transition transition : allTransitions()) {
-      b.append(transition.dotId()).append(" [");
+      b.append("    ").append(transition.dotId()).append(" [");
       if (transition.hasName()) b.append("label=\"").append(transition.name()).append("\"");
       b.append("]\n");
     }
 
-    b.append("}\n\n");
+    b.append("  }\n\n");
 
     for (Arc arc : allArcs()) {
-      b.append(arc.getSource().dotId()).append("->").append(arc.getTarget().dotId()).append(";\n");
+      b.append("  ").append(arc.getSource().dotId()).append("->").append(arc.getTarget().dotId()).append(";\n");
     }
     b.append("}\n");
 
     return b.toString();
   }
 
+  syn String PetriNet.dotId() = "\"" + getId().replaceAll("\"", "\\\"") + "\"";
   syn String PnObject.dotId() = "\"" + getId().replaceAll("\"", "\\\"") + "\"";
 
 }