diff --git a/run-exp.py b/run-exp.py
index 35f15b6ed8b7e221d6f94bb7372719ed7bd2cf7f..16458746867d105a7703cb06d6dfa336de78d8bc 100755
--- a/run-exp.py
+++ b/run-exp.py
@@ -75,8 +75,22 @@ class Task:
         return self._work_dir
 
     def run(self, variables):
-        parameters = [p.format(**variables) for p in self._parameters]
-        args = [self._base_command] + parameters
+        args = [self._base_command]
+
+        for p in self._parameters:
+            if not isinstance(p, dict):
+                args.append(p.format(**variables))
+                continue
+
+            assert "value" in p, "An extended paramter has to contain a value field"
+
+            if "if-variable" in p:
+                v = p["if-variable"]
+
+                if v not in variables.keys() or (isinstance(variables[v], bool) and not variables[v]):
+                    continue  # skip
+
+            args.append(p["value"].format(**variables))
 
         # print()
         # print(f"pushd {self._work_dir}")