diff --git a/dumpAst.base/src/main/jastadd/Navigation.jrag b/dumpAst.base/src/main/jastadd/Navigation.jrag
index fcec323db3a60fecb4eaa93690d73cbdd4b118a0..5935de96b99892d9b0b2c31d85ba4f65d65ca3c2 100644
--- a/dumpAst.base/src/main/jastadd/Navigation.jrag
+++ b/dumpAst.base/src/main/jastadd/Navigation.jrag
@@ -30,6 +30,16 @@ aspect Navigation {
   eq DumpNode.getDumpToken().containingDumpNode() = this;
   eq DumpNode.getInvisiblePath().containingDumpNode() = this;
 
+  // --- containingDumpListChildNode ---
+  inh DumpListChildNode InnerDumpNode.containingDumpListChildNode();
+  eq DumpListChildNode.getInnerDumpNode().containingDumpListChildNode() = this;
+
+  // --- containingDumpListRelation ---
+  inh DumpListRelation InnerRelationDumpNode.containingDumpListRelation();
+  eq DumpListRelation.getInnerRelationDumpNode().containingDumpListRelation() = this;
+  eq DumpReferenceListToken.getInnerRelationDumpNode().containingDumpListRelation() = null;
+  eq InvisiblePath.getInnerRelationDumpNode().containingDumpListRelation() = null;
+
   // --- container ---
   syn DumpNode DumpNode.container() {
     if (getContainerOfNormalChild() != null) {
diff --git a/dumpAst.base/src/main/jastadd/Printing.jrag b/dumpAst.base/src/main/jastadd/Printing.jrag
index 74937113a800de6850174dfbf13995c38b6ea3af..eb16c8074de6935e485db0ad0d0d089fd3d97b41 100644
--- a/dumpAst.base/src/main/jastadd/Printing.jrag
+++ b/dumpAst.base/src/main/jastadd/Printing.jrag
@@ -25,14 +25,16 @@ aspect Printing {
   syn String DumpNode.label() = getLabel();
   inh String InnerDumpNode.label();
   inh String InnerRelationDumpNode.label();
-  eq DumpListChildNode.getInnerDumpNode(int index).label() = label() +
-      (getInnerDumpNode(index).getDumpNode().isEmpty() ?
-          "" :
-          "[" + chooseIndex(getInnerDumpNode(index).getOriginalIndex(), index) + "]");
-  eq DumpListRelation.getInnerRelationDumpNode(int index).label() = label() +
-      (getInnerRelationDumpNode(index).getDumpNode().isEmpty() ?
-          "" :
-          "[" + chooseIndex(getInnerRelationDumpNode(index).getOriginalIndex(), index) + "]");
+  eq DumpListChildNode.getInnerDumpNode(int index).label() {
+    InnerDumpNode inner = getInnerDumpNode(index);
+    return inner.getLabel() +
+        (inner.getDumpNode().isEmpty() ? "" : "[" + chooseIndex(inner.getOriginalIndex(), index) + "]");
+  }
+  eq DumpListRelation.getInnerRelationDumpNode(int index).label() {
+    InnerRelationDumpNode inner = getInnerRelationDumpNode(index);
+    return inner.getLabel() +
+      (inner.getDumpNode().isEmpty() ? "" : "[" + chooseIndex(inner.getOriginalIndex(), index) + "]");
+  }
   eq DumpReferenceListToken.getInnerRelationDumpNode(int index).label() = label() + "[" + index + "]";
   eq InvisiblePath.getInnerRelationDumpNode(int index).label() = null;
   protected int ASTNode.chooseIndex(int originalIndex, int inheritedIndex) {
diff --git a/dumpAst.base/src/main/java/de/tudresden/inf/st/jastadd/dumpAst/ast/DumpBuilder.java b/dumpAst.base/src/main/java/de/tudresden/inf/st/jastadd/dumpAst/ast/DumpBuilder.java
index 0f94480a58c6b1f90a3bc54f28a3a6b5281891c5..6644961f6b73441e21a8b218e5d00c05134c658d 100644
--- a/dumpAst.base/src/main/java/de/tudresden/inf/st/jastadd/dumpAst/ast/DumpBuilder.java
+++ b/dumpAst.base/src/main/java/de/tudresden/inf/st/jastadd/dumpAst/ast/DumpBuilder.java
@@ -97,6 +97,8 @@ public class DumpBuilder {
     dumpAst.setPrintConfig(new PrintConfig());
     dumpAst.getPrintConfig().setScale(1);
     dumpAst.getPrintConfig().setVersion(readVersion());
+    dumpAst.getPrintConfig().setNodeStyleDefinition((node, style) -> {});
+    dumpAst.getPrintConfig().setRelationStyleDefinition((sourceNode, targetNode, context, style) -> {});
   }
 
   private DumpBuilder thisWithResetBuilt() {
diff --git a/dumpAst.prototyping/src/main/java/de/tudresden/inf/st/jastadd/featureTest/FeatureTestMain.java b/dumpAst.prototyping/src/main/java/de/tudresden/inf/st/jastadd/featureTest/FeatureTestMain.java
index dc47a4a4b759f58b510771014860aee9bc01d593..ea4c63182989f237fdc72a7c88b57f53b5048bc3 100644
--- a/dumpAst.prototyping/src/main/java/de/tudresden/inf/st/jastadd/featureTest/FeatureTestMain.java
+++ b/dumpAst.prototyping/src/main/java/de/tudresden/inf/st/jastadd/featureTest/FeatureTestMain.java
@@ -72,7 +72,19 @@ public class FeatureTestMain {
           }
         })
         .skinParam(SkinParamBooleanSetting.Shadowing, false)
-        .setNameMethod(node -> node.getClass().getSimpleName() + ASTNode.counter++);
+        .relationStyle((source, target, context, style) -> {
+          if (context.equals("ManyA")) {
+            style.setLabel("ManyA of " + ((Nameable) source).getName());
+          } else if (context.equals("OneA") || context.equals("MaybeC")) {
+            style.setTextColor("red");
+          }
+        })
+        .<ASTNode<?>>nodeStyle((node, style) -> {
+          if (node.isA()) {
+            style.setBackgroundColor("yellow");
+          }
+          style.setLabel(node.getClass().getSimpleName() + ASTNode.counter++);
+        });
 
     builder.dumpAsYaml(pathToYaml, true);
     builder.dumpAsPNG(pathToPng);
diff --git a/dumpAst.tests/src/test/java/de/tudresden/inf/st/jastadd/testDumper/TestSimple.java b/dumpAst.tests/src/test/java/de/tudresden/inf/st/jastadd/testDumper/TestSimple.java
index abdf25d92b2e2e40413894cc5e4b3c29a0bf8535..2f4224aeb3b54fcdff79f8afc2ef1992f27f70c7 100644
--- a/dumpAst.tests/src/test/java/de/tudresden/inf/st/jastadd/testDumper/TestSimple.java
+++ b/dumpAst.tests/src/test/java/de/tudresden/inf/st/jastadd/testDumper/TestSimple.java
@@ -285,7 +285,7 @@ public class TestSimple {
     Root root = createRoot(createA(A_NAME), null);
 
     List<DumpNode> nodes = TestUtils.dumpModel(root,
-        builder -> builder.<ASTNode<?>>setNameMethod(n -> n.isA() ? "A" : "Not A"));
+        builder -> builder.<ASTNode<?>>nodeStyle((node, style) -> style.setLabel(node.isA() ? "A" : "Not A")));
     DumpNode actualRoot = TestUtils.findByName(nodes, ROOT_NAME);
     assertEquals("Not A", actualRoot.getLabel());
 
@@ -298,7 +298,7 @@ public class TestSimple {
     Root root = createRoot(createA(A_NAME), null);
 
     List<DumpNode> nodes = TestUtils.dumpModel(root,
-        builder -> builder.<ASTNode<?>>setTextColorMethod(n -> n.isA() ? "red" : ""));
+        builder -> builder.<ASTNode<?>>nodeStyle((node, style) -> style.setTextColor(node.isA() ? "red" : "")));
     DumpNode actualRoot = TestUtils.findByName(nodes, ROOT_NAME);
     assertEquals("", actualRoot.getTextColor());
 
@@ -311,7 +311,7 @@ public class TestSimple {
     Root root = createRoot(createA(A_NAME), null);
 
     List<DumpNode> nodes = TestUtils.dumpModel(root,
-        builder -> builder.<ASTNode<?>>setBackgroundColorMethod(n -> n.isA() ? "green" : ""));
+        builder -> builder.<ASTNode<?>>nodeStyle((node, style) -> style.setBackgroundColor(node.isA() ? "green" : "")));
     DumpNode actualRoot = TestUtils.findByName(nodes, ROOT_NAME);
     assertEquals("", actualRoot.getBackgroundColor());