diff --git a/src/main/java/org/olat/core/gui/components/date/DateComponentRenderer.java b/src/main/java/org/olat/core/gui/components/date/DateComponentRenderer.java
index f5063d45e49ee4b0ce2cfabd9758be4c1dc6312e..9ca3ce203922e38e8b7eb949f2d98a06be8edde6 100644
--- a/src/main/java/org/olat/core/gui/components/date/DateComponentRenderer.java
+++ b/src/main/java/org/olat/core/gui/components/date/DateComponentRenderer.java
@@ -24,10 +24,9 @@ import java.util.Date;
 import java.util.Locale;
 
 import org.olat.core.gui.components.Component;
-import org.olat.core.gui.components.ComponentRenderer;
+import org.olat.core.gui.components.DefaultComponentRenderer;
 import org.olat.core.gui.render.RenderResult;
 import org.olat.core.gui.render.Renderer;
-import org.olat.core.gui.render.RenderingState;
 import org.olat.core.gui.render.StringOutput;
 import org.olat.core.gui.render.URLBuilder;
 import org.olat.core.gui.translator.Translator;
@@ -42,7 +41,7 @@ import org.olat.core.gui.translator.Translator;
  * 
  * @author gnaegi
  */
-public class DateComponentRenderer implements ComponentRenderer {
+public class DateComponentRenderer extends DefaultComponentRenderer {
 	
 	/**
 	 * Package scope constuctro
@@ -51,14 +50,6 @@ public class DateComponentRenderer implements ComponentRenderer {
 		// Nothing to do
 	}
 
-	/**
-	 * @see org.olat.core.gui.components.ComponentRenderer#render(org.olat.core.gui.render.Renderer,
-	 *      org.olat.core.gui.render.StringOutput,
-	 *      org.olat.core.gui.components.Component,
-	 *      org.olat.core.gui.render.URLBuilder,
-	 *      org.olat.core.gui.translator.Translator,
-	 *      org.olat.core.gui.render.RenderResult, java.lang.String[])
-	 */
 	@Override
 	public void render(Renderer renderer, StringOutput sb, Component source,
 			URLBuilder ubu, Translator translator, RenderResult renderResult,
@@ -103,32 +94,4 @@ public class DateComponentRenderer implements ComponentRenderer {
 		//
 		sb.append("</div>");
 	}
-
-	/**
-	 * @see org.olat.core.gui.components.ComponentRenderer#renderBodyOnLoadJSFunctionCall(org.olat.core.gui.render.Renderer,
-	 *      org.olat.core.gui.render.StringOutput,
-	 *      org.olat.core.gui.components.Component,
-	 *      org.olat.core.gui.render.RenderingState)
-	 */
-	@Override
-	public void renderBodyOnLoadJSFunctionCall(Renderer renderer,
-			StringOutput sb, Component source, RenderingState rstate) {
-		// nothing to do
-	}
-
-	/**
-	 * @see org.olat.core.gui.components.ComponentRenderer#renderHeaderIncludes(org.olat.core.gui.render.Renderer,
-	 *      org.olat.core.gui.render.StringOutput,
-	 *      org.olat.core.gui.components.Component,
-	 *      org.olat.core.gui.render.URLBuilder,
-	 *      org.olat.core.gui.translator.Translator,
-	 *      org.olat.core.gui.render.RenderingState)
-	 */
-	@Override
-	public void renderHeaderIncludes(Renderer renderer, StringOutput sb,
-			Component source, URLBuilder ubu, Translator translator,
-			RenderingState rstate) {
-		// nothing to do
-	}
-
 }
diff --git a/src/main/java/org/olat/core/gui/components/delegating/DelegatingRenderer.java b/src/main/java/org/olat/core/gui/components/delegating/DelegatingRenderer.java
index fa7ddd688ea1917e009d0ce771ac03b55677ecf2..4b1523fafdb4bb0bababf26d874539ed0135e6f1 100644
--- a/src/main/java/org/olat/core/gui/components/delegating/DelegatingRenderer.java
+++ b/src/main/java/org/olat/core/gui/components/delegating/DelegatingRenderer.java
@@ -47,32 +47,20 @@ public class DelegatingRenderer implements ComponentRenderer {
 		super();
 	}
 
-	/**
-	 * @see org.olat.core.gui.render.ui.ComponentRenderer#render(org.olat.core.gui.render.Renderer,
-	 *      org.olat.core.gui.render.StringOutput, org.olat.core.gui.components.Component,
-	 *      org.olat.core.gui.render.URLBuilder, org.olat.core.gui.translator.Translator,
-	 *      org.olat.core.gui.render.RenderResult, java.lang.String[])
-	 */
+	@Override
 	public void render(Renderer renderer, StringOutput sb, Component source, URLBuilder ubu, Translator translator,
 			RenderResult renderResult, String[] args) {
 		ComponentRenderer cr = ((DelegatingComponent) source).getDelegateRenderer();
 		cr.render(renderer, sb, source, ubu, translator, renderResult, args);
 	}
 
-	/**
-	 * @see org.olat.core.gui.render.ui.ComponentRenderer#renderBodyOnLoadJSFunctionCall(org.olat.core.gui.render.Renderer,
-	 *      org.olat.core.gui.render.StringOutput, org.olat.core.gui.components.Component)
-	 */
+	@Override
 	public void renderBodyOnLoadJSFunctionCall(Renderer renderer, StringOutput sb, Component source, RenderingState rstate) {
 		ComponentRenderer cr = ((DelegatingComponent) source).getDelegateRenderer();
 		cr.renderBodyOnLoadJSFunctionCall(renderer, sb, source, rstate);
 	}
 
-	/**
-	 * @see org.olat.core.gui.render.ui.ComponentRenderer#renderHeaderIncludes(org.olat.core.gui.render.Renderer,
-	 *      org.olat.core.gui.render.StringOutput, org.olat.core.gui.components.Component,
-	 *      org.olat.core.gui.render.URLBuilder, org.olat.core.gui.translator.Translator)
-	 */
+	@Override
 	public void renderHeaderIncludes(Renderer renderer, StringOutput sb, Component source, URLBuilder ubu, Translator translator,
 			RenderingState rstate) {
 		ComponentRenderer cr = ((DelegatingComponent) source).getDelegateRenderer();
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormWrapperContainerRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormWrapperContainerRenderer.java
index 56e8648474f59e7c65292e2efb0bc00711dc47a2..f66382b211b69550b391e505ea10a48c04127707 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormWrapperContainerRenderer.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormWrapperContainerRenderer.java
@@ -119,12 +119,6 @@ class FormWrapperContainerRenderer implements ComponentRenderer {
 		}
 	}
 
-	/**
-	 * @see org.olat.core.gui.components.ComponentRenderer#renderBodyOnLoadJSFunctionCall(org.olat.core.gui.render.Renderer,
-	 *      org.olat.core.gui.render.StringOutput,
-	 *      org.olat.core.gui.components.Component,
-	 *      org.olat.core.gui.render.RenderingState)
-	 */
 	@Override
 	public void renderBodyOnLoadJSFunctionCall(Renderer renderer, StringOutput sb, Component source, RenderingState rstate) {
 		FormWrapperContainer formC = (FormWrapperContainer) source;
@@ -134,14 +128,6 @@ class FormWrapperContainerRenderer implements ComponentRenderer {
 		}
 	}
 
-	/**
-	 * @see org.olat.core.gui.components.ComponentRenderer#renderHeaderIncludes(org.olat.core.gui.render.Renderer,
-	 *      org.olat.core.gui.render.StringOutput,
-	 *      org.olat.core.gui.components.Component,
-	 *      org.olat.core.gui.render.URLBuilder,
-	 *      org.olat.core.gui.translator.Translator,
-	 *      org.olat.core.gui.render.RenderingState)
-	 */
 	@Override
 	public void renderHeaderIncludes(Renderer renderer, StringOutput sb, Component source, URLBuilder ubu, Translator translator,
 			RenderingState rstate) {
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableClassicRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableClassicRenderer.java
index ca65d3492cdcd2ce8f59dcdcf1c14cda9aa2fb9d..9df62051ce5e619605b6684145a516340a0dc541 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableClassicRenderer.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableClassicRenderer.java
@@ -258,15 +258,16 @@ class FlexiTableClassicRenderer extends AbstractFlexiTableRenderer implements Co
 			}
 			ftE.addFormItem(formItem);
 			if(formItem.isVisible()) {
-				formItem.getComponent().getHTMLRendererSingleton().render(renderer, target, formItem.getComponent(),
-					ubu, translator, renderResult, null);
+				Component cmp = formItem.getComponent();
+				cmp.getHTMLRendererSingleton().render(renderer, target, cmp, ubu, translator, renderResult, null);
+				cmp.setDirty(false);
 			}
 		} else if(cellValue instanceof Component) {
 			Component cmp = (Component)cellValue;
 			cmp.setTranslator(translator);
 			if(cmp.isVisible()) {
-				cmp.getHTMLRendererSingleton().render(renderer, target, cmp,
-					ubu, translator, renderResult, null);
+				cmp.getHTMLRendererSingleton().render(renderer, target, cmp, ubu, translator, renderResult, null);
+				cmp.setDirty(false);
 			}
 		} else {
 			fcm.getCellRenderer().render(renderer, target, cellValue, row, ftC, ubu, translator);
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableCustomRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableCustomRenderer.java
index dd1216f0741f08f21de224c4b63ae9182ff88a21..7ce7eb7722a9c8034e91c3c58b8725a2e001e4d0 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableCustomRenderer.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableCustomRenderer.java
@@ -167,6 +167,7 @@ class FlexiTableCustomRenderer extends AbstractFlexiTableRenderer implements Com
 		container.contextRemove("isOpen");
 		container.contextRemove("row");
 		container.contextRemove("f");
+		container.setDirty(false);
 
 		sb.append("</div>");
 	}
diff --git a/src/main/java/org/olat/core/gui/components/rating/RatingWithAverageRenderer.java b/src/main/java/org/olat/core/gui/components/rating/RatingWithAverageRenderer.java
index 57751dbea2a9f601ab3f4c12a6c63cdb4638cf74..f9f7b07d46c8ee4a32e29a8f88a6435f5103cb0d 100644
--- a/src/main/java/org/olat/core/gui/components/rating/RatingWithAverageRenderer.java
+++ b/src/main/java/org/olat/core/gui/components/rating/RatingWithAverageRenderer.java
@@ -49,15 +49,16 @@ public class RatingWithAverageRenderer extends DefaultComponentRenderer {
 		
 		Component userCmp = item.getUserComponent();
 		userCmp.getHTMLRendererSingleton().render(renderer, sb, userCmp, ubu, translator, renderResult, args);
+		userCmp.setDirty(false);
 		sb.append("</div>")
 		  .append("<div id='o_rating_avg_").append(viewIdent).append("'>");
 		Component averageCmp = item.getAverageComponent();
 		averageCmp.getHTMLRendererSingleton().render(renderer, sb, averageCmp, ubu, translator, renderResult, args);
+		averageCmp.setDirty(false);
 		sb.append("</div>")
 		  .append("</div>")
 		  .append("</div>")
 		  .append("<script>\n")
-		  .append("/* <![CDATA[ */ \n")
 		  .append("jQuery(function(){\n")
 		  .append("  jQuery('#o_rating_wrapper_").append(viewIdent).append("')\n")
 		  .append("    .hover(\n")
@@ -65,7 +66,6 @@ public class RatingWithAverageRenderer extends DefaultComponentRenderer {
 		  .append("      function(){ jQuery('#o_rating_").append(viewIdent).append("').hide(); jQuery('#o_rating_avg_").append(viewIdent).append("').show(); }\n")  
 		  .append("	   );\n")
 		  .append("});\n")
-		  .append("/* ]]> */\n")
 		  .append("</script>\n");
 	}
 }
diff --git a/src/main/java/org/olat/core/gui/components/tabbedpane/TabbedPaneRenderer.java b/src/main/java/org/olat/core/gui/components/tabbedpane/TabbedPaneRenderer.java
index fd5f199371fdb3c9a0f0481951361e263c98ed36..0e92f89d2f3dc8ac3347bcf3a8e0f90617e5e429 100644
--- a/src/main/java/org/olat/core/gui/components/tabbedpane/TabbedPaneRenderer.java
+++ b/src/main/java/org/olat/core/gui/components/tabbedpane/TabbedPaneRenderer.java
@@ -42,10 +42,7 @@ import org.olat.core.util.StringHelper;
  */
 public class TabbedPaneRenderer implements ComponentRenderer {
 
-	/**
-	 * 
-	 * @see org.olat.core.gui.render.ui.ComponentRenderer#render(org.olat.core.gui.render.Renderer, org.olat.core.gui.render.StringOutput, org.olat.core.gui.components.Component, org.olat.core.gui.render.URLBuilder, org.olat.core.gui.translator.Translator, org.olat.core.gui.render.RenderResult, java.lang.String[])
-	 */
+
 	@Override
 	public void render(Renderer renderer, StringOutput sb, Component source, URLBuilder ubu, Translator translator, RenderResult renderResult, String[] args) {
 		TabbedPane tb = (TabbedPane)source;
@@ -91,10 +88,6 @@ public class TabbedPaneRenderer implements ComponentRenderer {
 		sb.append("</div></div>");
 	}
 	
-	/**
-	 * 
-	 * @see org.olat.core.gui.render.ui.ComponentRenderer#renderHeaderIncludes(org.olat.core.gui.render.Renderer, org.olat.core.gui.render.StringOutput, org.olat.core.gui.components.Component, org.olat.core.gui.render.URLBuilder, org.olat.core.gui.translator.Translator)
-	 */
 	@Override
 	public void renderHeaderIncludes(Renderer renderer, StringOutput sb, Component source, URLBuilder ubu, Translator translator, RenderingState rstate) {
 		TabbedPane tp = (TabbedPane)source;
@@ -108,10 +101,6 @@ public class TabbedPaneRenderer implements ComponentRenderer {
 		}
 	}
 
-	/**
-	 * 
-	 * @see org.olat.core.gui.render.ui.ComponentRenderer#renderBodyOnLoadJSFunctionCall(org.olat.core.gui.render.Renderer, org.olat.core.gui.render.StringOutput, org.olat.core.gui.components.Component)
-	 */
 	@Override
 	public void renderBodyOnLoadJSFunctionCall(Renderer renderer, StringOutput sb, Component source, RenderingState rstate) {
 		TabbedPane tp = (TabbedPane)source;
diff --git a/src/main/java/org/olat/core/gui/components/util/UserLoggedInCounterRenderer.java b/src/main/java/org/olat/core/gui/components/util/UserLoggedInCounterRenderer.java
index b3fb6833d3fb1f9d9d55694b530e215d9bd216bd..2d5882475a87547d5fd57b844a68193a5368b741 100644
--- a/src/main/java/org/olat/core/gui/components/util/UserLoggedInCounterRenderer.java
+++ b/src/main/java/org/olat/core/gui/components/util/UserLoggedInCounterRenderer.java
@@ -22,10 +22,9 @@
 package org.olat.core.gui.components.util;
 
 import org.olat.core.gui.components.Component;
-import org.olat.core.gui.components.ComponentRenderer;
+import org.olat.core.gui.components.DefaultComponentRenderer;
 import org.olat.core.gui.render.RenderResult;
 import org.olat.core.gui.render.Renderer;
-import org.olat.core.gui.render.RenderingState;
 import org.olat.core.gui.render.StringOutput;
 import org.olat.core.gui.render.URLBuilder;
 import org.olat.core.gui.translator.Translator;
@@ -40,7 +39,7 @@ import org.olat.core.gui.translator.Translator;
  * @author Florian Gnaegi, frentix GmbH, http://www.frentix.com
  */
 
-public class UserLoggedInCounterRenderer implements ComponentRenderer {
+public class UserLoggedInCounterRenderer extends DefaultComponentRenderer {
 
 	@Override
 	public void render(Renderer renderer, StringOutput sb, Component source,
@@ -49,18 +48,4 @@ public class UserLoggedInCounterRenderer implements ComponentRenderer {
 		UserLoggedInCounter counter = (UserLoggedInCounter) source;
 		sb.append(counter.getSessionCount());
 	}
-
-	@Override
-	public void renderHeaderIncludes(Renderer renderer, StringOutput sb,
-			Component source, URLBuilder ubu, Translator translator,
-			RenderingState rstate) {
-		// nothing to include
-	}
-
-	@Override
-	public void renderBodyOnLoadJSFunctionCall(Renderer renderer,
-			StringOutput sb, Component source, RenderingState rstate) {
-		// no body js stuff
-	}
-
 }
\ No newline at end of file
diff --git a/src/main/java/org/olat/core/gui/control/JSAndCSSAdderImpl.java b/src/main/java/org/olat/core/gui/control/JSAndCSSAdderImpl.java
index 161f157bbfa7ab412b6590f5b1d438afd9921578..35e743d6ed4d26fb502e0aa2e9fe5fc996c99594 100644
--- a/src/main/java/org/olat/core/gui/control/JSAndCSSAdderImpl.java
+++ b/src/main/java/org/olat/core/gui/control/JSAndCSSAdderImpl.java
@@ -289,10 +289,6 @@ public class JSAndCSSAdderImpl implements JSAndCSSAdder, ComponentRenderer {
 		return dc;
 	}
 
-	/**
-	 * 
-	 * @see org.olat.core.gui.components.ComponentRenderer#render(org.olat.core.gui.render.Renderer, org.olat.core.gui.render.StringOutput, org.olat.core.gui.components.Component, org.olat.core.gui.render.URLBuilder, org.olat.core.gui.translator.Translator, org.olat.core.gui.render.RenderResult, java.lang.String[])
-	 */
 	@Override
 	public void render(Renderer renderer, StringOutput sb, Component source, URLBuilder ubu, Translator translator,
 			RenderResult renderResult, String[] args) {
@@ -307,8 +303,6 @@ public class JSAndCSSAdderImpl implements JSAndCSSAdder, ComponentRenderer {
 		allCssKeepSet.clear();
 		allJsKeepSet.clear();
 		
-		//sb.append("<!-- css and js include test \n");
-		//sb.append("js-files:\n");
 		// JS scripts are rendered when in pre-theme rendering phase
 		if (!postThemeRendering) {
 			for (Iterator<String> it_js = jsToRender.iterator(); it_js.hasNext();) {
@@ -318,8 +312,6 @@ public class JSAndCSSAdderImpl implements JSAndCSSAdder, ComponentRenderer {
 		}
 		
 		// sort css files
-			
-		//sb.append("css-files:\n");
 		for (Iterator<String> it_css = cssToRender.iterator(); it_css.hasNext();) {
 			String cssExpr = it_css.next();
 			// render post-theme css when in post-theme rendering phase and pre-theme
@@ -353,16 +345,12 @@ public class JSAndCSSAdderImpl implements JSAndCSSAdder, ComponentRenderer {
 		//
 	}
 
-	/**
-	 * @see org.olat.core.gui.control.JSAndCSSAdder#addRequiredRawHeader(java.lang.Class)
-	 */
+	@Override
 	public void addRequiredRawHeader(Class<?> baseClass, String rawHeader) {
 		curRawSet.add(rawHeader);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.olat.core.gui.control.JSAndCSSAdder#setRequiredRefreshInterval(java.lang.Class, int)
-	 */
+	@Override
 	public void setRequiredRefreshInterval(Class<?> baseClass, int refreshIntervall) {
 		if(refreshIntervall < MINIMAL_REFRESHINTERVAL){
 			throw new AssertException("Poll refresh intervall is smaller then defined MINIMAL value " + MINIMAL_REFRESHINTERVAL);
@@ -370,7 +358,6 @@ public class JSAndCSSAdderImpl implements JSAndCSSAdder, ComponentRenderer {
 		// idea: baseClass for later de-prioritising by configuration
 		if (this.refreshInterval == -1 || refreshIntervall < this.refreshInterval) {
 			this.refreshInterval = refreshIntervall;
-			//System.out.println("setting new refresh intervall: "+this.refreshInterval);
 		} // else we already have a request that requires a higher frequency of updates, we will take that one
 	}
 	
diff --git a/src/main/java/org/olat/core/util/mail/ui/MailContextCellRenderer.java b/src/main/java/org/olat/core/util/mail/ui/MailContextCellRenderer.java
index 5ae4a897ba561495c38f6e83e4dc60c874972433..65e305bd87a227218e086b7d6869202cd30889db 100644
--- a/src/main/java/org/olat/core/util/mail/ui/MailContextCellRenderer.java
+++ b/src/main/java/org/olat/core/util/mail/ui/MailContextCellRenderer.java
@@ -71,6 +71,7 @@ public class MailContextCellRenderer implements CustomCellRenderer {
 				URLBuilder ubu = renderer.getUrlBuilder().createCopyFor(link);
 				RenderResult renderResult = new RenderResult();
 				link.getHTMLRendererSingleton().render(renderer, sb, link, ubu, translator, renderResult, null);
+				link.setDirty(false);
 			}
 		}
 	}
diff --git a/src/main/java/org/olat/core/util/mail/ui/MailFromCellRenderer.java b/src/main/java/org/olat/core/util/mail/ui/MailFromCellRenderer.java
index c3f434408714a71db457cf2d21759342d5073e64..5e4ee37d45496547601ff2d83b70589658ed43b7 100644
--- a/src/main/java/org/olat/core/util/mail/ui/MailFromCellRenderer.java
+++ b/src/main/java/org/olat/core/util/mail/ui/MailFromCellRenderer.java
@@ -76,6 +76,7 @@ public class MailFromCellRenderer implements CustomCellRenderer {
 				URLBuilder ubu = renderer.getUrlBuilder().createCopyFor(link);
 				RenderResult renderResult = new RenderResult();
 				link.getHTMLRendererSingleton().render(renderer, sb, link, ubu, translator, renderResult, null);
+				link.setDirty(false);
 			}
 		} else if (val instanceof String) {
 			sb.append("<span>").appendHtmlEscaped((String)val).append("</span>");
diff --git a/src/main/java/org/olat/group/ui/main/BGResourcesCellRenderer.java b/src/main/java/org/olat/group/ui/main/BGResourcesCellRenderer.java
index 64b767b8b79685b9953c2d9a76638c2cb8af96e7..192c59751879f53fdce06ff840c686e0457f933f 100644
--- a/src/main/java/org/olat/group/ui/main/BGResourcesCellRenderer.java
+++ b/src/main/java/org/olat/group/ui/main/BGResourcesCellRenderer.java
@@ -22,6 +22,7 @@ package org.olat.group.ui.main;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.form.flexible.FormUIFactory;
 import org.olat.core.gui.components.form.flexible.elements.FormLink;
 import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer;
@@ -80,8 +81,10 @@ public class BGResourcesCellRenderer implements FlexiCellRenderer {
 								null, formLayout, Link.NONTRANSLATED);
 						}
 						allResourcesLink.setUserObject(item);
-						allResourcesLink.getComponent().getHTMLRendererSingleton()
-							.render(renderer, sb, allResourcesLink.getComponent(), ubu, translator, null, null);
+						Component allResourcesCmp = allResourcesLink.getComponent();
+						allResourcesCmp.getHTMLRendererSingleton()
+							.render(renderer, sb, allResourcesCmp, ubu, translator, null, null);
+						allResourcesCmp.setDirty(false);
 						break;
 					} else {
 						if(count > 0) sb.append(" ");
@@ -95,8 +98,10 @@ public class BGResourcesCellRenderer implements FlexiCellRenderer {
 							markLink.setUserObject(relation);
 							formLayout.add(name, markLink);
 						}
-						markLink.getComponent().getHTMLRendererSingleton()
-							.render(renderer, sb, markLink.getComponent(), ubu, translator, null, null);
+						Link markCmp = markLink.getComponent();
+						markCmp.getHTMLRendererSingleton()
+							.render(renderer, sb, markCmp, ubu, translator, null, null);
+						markCmp.setDirty(false);
 						count++;
 					}
 				}
diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentItemComponentRenderer.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentItemComponentRenderer.java
index 5e601afc1e4a0374ed3a498c8d05ef843ceec66d..c9a3314e00615811b1f134d122b70de8466f2af4 100644
--- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentItemComponentRenderer.java
+++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentItemComponentRenderer.java
@@ -204,6 +204,7 @@ public class AssessmentItemComponentRenderer extends AssessmentObjectComponentRe
 		if(component.isItemSessionOpen(itemSessionState, renderer.isSolutionMode())) {
 			Component submit = itemEl.getSubmitButton().getComponent();
 			submit.getHTMLRendererSingleton().render(renderer.getRenderer(), sb, submit, ubu, translator, new RenderResult(), null);
+			submit.setDirty(false);
 		}
 		
 		boolean enableAdditionalButtons = component.isEnableBack() || component.isEnableSkip()
diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectComponentRenderer.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectComponentRenderer.java
index c594c7d85a30ec5b92cca5c04edade7f01599afd..00b5267b2b208ecc6ac11a032782afc9afd68a01 100644
--- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectComponentRenderer.java
+++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectComponentRenderer.java
@@ -65,6 +65,7 @@ import org.apache.logging.log4j.Logger;
 import org.apache.velocity.VelocityContext;
 import org.apache.velocity.context.Context;
 import org.olat.core.CoreSpringFactory;
+import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.DefaultComponentRenderer;
 import org.olat.core.gui.components.form.flexible.FormItem;
 import org.olat.core.gui.components.form.flexible.FormUIFactory;
@@ -954,8 +955,10 @@ public abstract class AssessmentObjectComponentRenderer extends DefaultComponent
 			item.addFormItem(endAttemptButton);
 		}
 		endAttemptButton.setEnabled(!ended);
-		endAttemptButton.getComponent().getHTMLRendererSingleton()
-				.render(renderer.getRenderer(), sb, endAttemptButton.getComponent(), ubu, translator, new RenderResult(), null);
+		Component endAttemptCmp = endAttemptButton.getComponent();
+		endAttemptCmp.getHTMLRendererSingleton()
+				.render(renderer.getRenderer(), sb, endAttemptCmp, ubu, translator, new RenderResult(), null);
+		endAttemptCmp.setDirty(false);
 
 	}
 	
diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponentRenderer.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponentRenderer.java
index b12708f61d53b38098ac8b037391ceb74a07fd50..e2ed6463d78eca6345dd6d5c4d7cf5cc71dbc0c1 100644
--- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponentRenderer.java
+++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponentRenderer.java
@@ -260,6 +260,7 @@ public class AssessmentTestComponentRenderer extends AssessmentObjectComponentRe
 		if(component.isItemSessionOpen(itemSessionState, options.isSolutionMode())) {
 			Component submit = component.getQtiItem().getSubmitButton().getComponent();
 			submit.getHTMLRendererSingleton().render(renderer.getRenderer(), sb, submit, ubu, translator, new RenderResult(), null);
+			submit.setDirty(false);
 		}
 		//advanceTestItemAllowed /* && testSessionState.getCurrentItemKey() != null && testSessionController.mayAdvanceItemLinear() */
 		if(options.isAdvanceTestItemAllowed() ) {//TODO need to find if there is a next question
diff --git a/src/main/java/org/olat/modules/tu/TunnelRenderer.java b/src/main/java/org/olat/modules/tu/TunnelRenderer.java
index cc84d6c9e9fef47878d5156f2ef52e4db3cde0d1..f3f04b93e6584f9dd0b373f77311433568607829 100644
--- a/src/main/java/org/olat/modules/tu/TunnelRenderer.java
+++ b/src/main/java/org/olat/modules/tu/TunnelRenderer.java
@@ -59,6 +59,7 @@ public class TunnelRenderer implements ComponentRenderer {
 	 * @param args
 	 * 
 	 */
+	@Override
 	public void render(Renderer renderer, StringOutput target, Component source, URLBuilder ubu, Translator translator,
 			RenderResult renderResult, String[] args) {
 		TunnelComponent tuc = (TunnelComponent) source;
@@ -68,20 +69,14 @@ public class TunnelRenderer implements ComponentRenderer {
 		if (htmlContent != null) target.append(htmlContent);
 	}
 
-	/**
-   * 
-	 * @see org.olat.core.gui.render.ui.ComponentRenderer#renderHeaderIncludes(org.olat.core.gui.render.Renderer, org.olat.core.gui.render.StringOutput, org.olat.core.gui.components.Component, org.olat.core.gui.render.URLBuilder, org.olat.core.gui.translator.Translator)
-	 */
+	@Override
 	public void renderHeaderIncludes(Renderer renderer, StringOutput sb, Component source, URLBuilder ubu, Translator translator, RenderingState rstate) {
 		TunnelComponent tuc = (TunnelComponent) source;
 		String htmlHead = tuc.getHtmlHead();
 		if (htmlHead != null) sb.append(htmlHead);
 	}
 
-	/**
-   * 
-	 * @see org.olat.core.gui.render.ui.ComponentRenderer#renderBodyOnLoadJSFunctionCall(org.olat.core.gui.render.Renderer, org.olat.core.gui.render.StringOutput, org.olat.core.gui.components.Component)
-	 */
+	@Override
 	public void renderBodyOnLoadJSFunctionCall(Renderer renderer, StringOutput sb, Component source, RenderingState rstate) {
 		TunnelComponent tuc = (TunnelComponent) source;
 		String jsBodyOnLoad = tuc.getJsOnLoad();
diff --git a/src/main/java/org/olat/user/propertyhandlers/UserInterestsRenderer.java b/src/main/java/org/olat/user/propertyhandlers/UserInterestsRenderer.java
index bbbb252abe62b280eecd08021cfe85f45a780b3d..7d6acf32ddbe490974256793b56c137293ca04dc 100644
--- a/src/main/java/org/olat/user/propertyhandlers/UserInterestsRenderer.java
+++ b/src/main/java/org/olat/user/propertyhandlers/UserInterestsRenderer.java
@@ -57,6 +57,7 @@ class UserInterestsRenderer extends DefaultComponentRenderer {
 			if(editLink != null && editLink.isVisible()) {
 				Component cmp = editLink.getComponent();
 				cmp.getHTMLRendererSingleton().render(renderer, sb, cmp, ubu, translator, renderResult, args);
+				cmp.setDirty(false);
 			}
 		}
 	}
diff --git a/src/main/java/org/olat/user/propertyhandlers/ui/SmsPhoneComponentRenderer.java b/src/main/java/org/olat/user/propertyhandlers/ui/SmsPhoneComponentRenderer.java
index e832e16c70fa5514488324f1c94bff1a39d8ec1d..428acbfb9cb4922b1ce81764a728f65f526dc06a 100644
--- a/src/main/java/org/olat/user/propertyhandlers/ui/SmsPhoneComponentRenderer.java
+++ b/src/main/java/org/olat/user/propertyhandlers/ui/SmsPhoneComponentRenderer.java
@@ -68,6 +68,7 @@ public class SmsPhoneComponentRenderer extends DefaultComponentRenderer {
 			if(editLink != null && editLink.isVisible()) {
 				Component cmp = editLink.getComponent();
 				cmp.getHTMLRendererSingleton().render(renderer, sb, cmp, ubu, translator, renderResult, args);
+				cmp.setDirty(false);
 			}
 	
 			if(StringHelper.containsNonWhitespace(phoneNumber)) {
@@ -76,6 +77,7 @@ public class SmsPhoneComponentRenderer extends DefaultComponentRenderer {
 				if(removeLink != null && removeLink.isVisible()) {
 					Component cmp = removeLink.getComponent();
 					cmp.getHTMLRendererSingleton().render(renderer, sb, cmp, ubu, translator, renderResult, args);
+					cmp.setDirty(false);
 				}
 			}
 			sb.append("</div>");