diff --git a/cwality-maps/Substitute.hs b/cwality-maps/Substitute.hs
index 65e8fc37516fde507bb74cb6dc587d0af789ece8..ccab27241dfb8dd7a39785ef1f3371302b64b62b 100644
--- a/cwality-maps/Substitute.hs
+++ b/cwality-maps/Substitute.hs
@@ -53,7 +53,12 @@ trivial :: t -> b -> ([a], t)
 trivial = const . ([],)
 
 instance {-# OVERLAPS #-} Substitutable A.Value where
-  substitute = trivial
+  substitute (A.Object fields) params =
+    second A.Object $ traverse (`substitute` params) fields
+  substitute (A.String str) params =
+    second A.String $ substitute str params
+  substitute other params = ([], other)
+
 
 instance Substitutable Int where
   substitute = trivial