diff --git a/src/Compiler/Context.php b/src/Compiler/Context.php
index 718d5ec..51c6170 100644
--- a/src/Compiler/Context.php
+++ b/src/Compiler/Context.php
@@ -24,10 +24,12 @@ abstract class Context {
 
     public array $switchStack = [];
 
-    public array $iterateStack = [];
+    public array $iterationStack = [];
 
     public array $useStack = [];
 
+    public array $sections = [];
+
     public int $functions = 0;
     
     public array $functionStack = [];
diff --git a/src/Extension/UrlExtension.php b/src/Extension/UrlExtension.php
index 691d5dc..598c782 100644
--- a/src/Extension/UrlExtension.php
+++ b/src/Extension/UrlExtension.php
@@ -249,12 +249,13 @@ PATTERN;
                     if ($default ?? false) {
                         $value = $default;
                     }
-                    elseif ($this->enforceExistingArguments) {
+                    elseif ($this->enforceExistingArguments && ! strpos($route, sprintf('[/{%s:', $variable)) ) {
                         throw new \RuntimeException(sprintf("Error while preparing route %s : could not match variable '%s' into given arguments ( %s )", $route, $variable, json_encode($arguments)));
                     }
                 }
 
-                $search[ $item[0] ] = $value;
+                $search[$item[0]] = $value ?? "";
+
             }
 
             $route = str_replace(array_keys($search), array_values($search), $route);