diff --git a/tiles-autotag-freemarker/src/main/resources/org/apache/tiles/autotag/freemarker/fmModel.vm b/tiles-autotag-freemarker/src/main/resources/org/apache/tiles/autotag/freemarker/fmModel.vm
index 2bd9867..61618a4 100644
--- a/tiles-autotag-freemarker/src/main/resources/org/apache/tiles/autotag/freemarker/fmModel.vm
+++ b/tiles-autotag-freemarker/src/main/resources/org/apache/tiles/autotag/freemarker/fmModel.vm
@@ -55,11 +55,10 @@
 
     /** {@inheritDoc} */
     @Override
-    public void execute(Map<String, TemplateModel> parms, Request request,
-            ModelBody modelBody) throws IOException {
+    public void execute(Map<String, TemplateModel> parms, Request request#if(${clazz.hasBody()}), ModelBody modelBody#end) throws IOException {
         model.execute(
 #foreach($parameter in ${clazz.parameters})
-            ($stringTool.getClassToCast(${parameter.type})) FreeMarkerUtil.getAsObject(parms.get("${parameter.exportedName}"), $stringTool.getDefaultValue(${parameter.type}, ${parameter.defaultValue}));
+            ($stringTool.getClassToCast(${parameter.type})) FreeMarkerUtil.getAsObject(parms.get("${parameter.exportedName}"), $stringTool.getDefaultValue(${parameter.type}, ${parameter.defaultValue})),
 #end
                 request#if(${clazz.hasBody()}), modelBody#end
 
diff --git a/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/DoStuffFMModel.javat b/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/DoStuffFMModel.javat
index 3b47805..083a08b 100644
--- a/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/DoStuffFMModel.javat
+++ b/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/DoStuffFMModel.javat
@@ -32,12 +32,11 @@
 
     /** {@inheritDoc} */
     @Override
-    public void execute(Map<String, TemplateModel> parms, Request request,
-            ModelBody modelBody) throws IOException {
+    public void execute(Map<String, TemplateModel> parms, Request request, ModelBody modelBody) throws IOException {
         model.execute(
-            (java.lang.String) FreeMarkerUtil.getAsObject(parms.get("one"), null);
-            (java.lang.Integer) FreeMarkerUtil.getAsObject(parms.get("two"), 0);
-            (java.lang.Boolean) FreeMarkerUtil.getAsObject(parms.get("three"), false);
+            (java.lang.String) FreeMarkerUtil.getAsObject(parms.get("one"), null),
+            (java.lang.Integer) FreeMarkerUtil.getAsObject(parms.get("two"), 0),
+            (java.lang.Boolean) FreeMarkerUtil.getAsObject(parms.get("three"), false),
                 request, modelBody
         );
     }
diff --git a/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/DoStuffNoBodyFMModel.javat b/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/DoStuffNoBodyFMModel.javat
index da21f0f..e2a5a3a 100644
--- a/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/DoStuffNoBodyFMModel.javat
+++ b/tiles-autotag-freemarker/src/test/resources/org/apache/tiles/autotag/freemarker/test/DoStuffNoBodyFMModel.javat
@@ -31,12 +31,11 @@
 
     /** {@inheritDoc} */
     @Override
-    public void execute(Map<String, TemplateModel> parms, Request request,
-            ModelBody modelBody) throws IOException {
+    public void execute(Map<String, TemplateModel> parms, Request request) throws IOException {
         model.execute(
-            (java.lang.Double) FreeMarkerUtil.getAsObject(parms.get("one"), null);
-            (java.lang.Float) FreeMarkerUtil.getAsObject(parms.get("two"), 0.0f);
-            (java.util.Date) FreeMarkerUtil.getAsObject(parms.get("three"), null);
+            (java.lang.Double) FreeMarkerUtil.getAsObject(parms.get("one"), null),
+            (java.lang.Float) FreeMarkerUtil.getAsObject(parms.get("two"), 0.0f),
+            (java.util.Date) FreeMarkerUtil.getAsObject(parms.get("three"), null),
                 request
         );
     }
