diff --git a/plugins/org.eclipse.ease.modules.platform/src/org/eclipse/ease/modules/platform/uibuilder/CompositeRenderer.java b/plugins/org.eclipse.ease.modules.platform/src/org/eclipse/ease/modules/platform/uibuilder/CompositeRenderer.java
index bf72490..4593639 100644
--- a/plugins/org.eclipse.ease.modules.platform/src/org/eclipse/ease/modules/platform/uibuilder/CompositeRenderer.java
+++ b/plugins/org.eclipse.ease.modules.platform/src/org/eclipse/ease/modules/platform/uibuilder/CompositeRenderer.java
@@ -15,6 +15,7 @@
 import java.util.List;
 
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
 import org.eclipse.swt.events.PaintEvent;
 import org.eclipse.swt.events.PaintListener;
 import org.eclipse.swt.graphics.Point;
@@ -67,6 +68,11 @@
 		getLayout().numColumns = fViewModel.getColumnCount();
 
 		getParent().layout(true);
+
+		if (getParent().getParent() instanceof ScrolledComposite) {
+			((ScrolledComposite) getParent().getParent()).setMinSize(getParent().computeSize(SWT.DEFAULT, SWT.DEFAULT));
+			getParent().getParent().layout(true);
+		}
 	}
 
 	public void setShowGrid(boolean showGrid) {
diff --git a/plugins/org.eclipse.ease.modules.platform/src/org/eclipse/ease/modules/platform/uibuilder/UIBuilderModule.java b/plugins/org.eclipse.ease.modules.platform/src/org/eclipse/ease/modules/platform/uibuilder/UIBuilderModule.java
index fbc8653..e0329ba 100644
--- a/plugins/org.eclipse.ease.modules.platform/src/org/eclipse/ease/modules/platform/uibuilder/UIBuilderModule.java
+++ b/plugins/org.eclipse.ease.modules.platform/src/org/eclipse/ease/modules/platform/uibuilder/UIBuilderModule.java
@@ -60,6 +60,7 @@
 import org.eclipse.jface.viewers.ViewerColumn;
 import org.eclipse.jface.viewers.ViewerComparator;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.graphics.Image;
@@ -216,7 +217,7 @@
 	 *             when the view cannot be created
 	 */
 	@WrapToScript
-	public MPart createView(String title, @ScriptParameter(defaultValue = ScriptParameter.NULL) String iconUri,
+	public MPart createView(@ScriptParameter(defaultValue = "Dynamic View") String title, @ScriptParameter(defaultValue = ScriptParameter.NULL) String iconUri,
 			@ScriptParameter(defaultValue = ScriptParameter.NULL) String relativeTo, @ScriptParameter(defaultValue = "x") String position) throws Throwable {
 
 		final MPart part = createDynamicPart(title, iconUri);
@@ -359,7 +360,7 @@
 	}
 
 	/**
-	 * Create a new composite. Further create commands will target this composite. To revert back to the parent use {@module #popComposite()}.
+	 * Create a new composite. To activate the composite (and create elements inside) use {@module #pushComposite(Composite)}.
 	 *
 	 * @param layout
 	 *            layout data (see module documentation)
@@ -368,12 +369,11 @@
 	 *             on any SWT error
 	 */
 	@WrapToScript
-	public Composite createComposite(@ScriptParameter(defaultValue = "o o") String layout) throws Throwable {
+	public Composite createComposite(@ScriptParameter(defaultValue = "o! o!") String layout) throws Throwable {
 		return runInUIThread(new RunnableWithResult<Composite>() {
 			@Override
 			public Composite runWithTry() throws Throwable {
 				final Composite composite = new Composite(getUICompositor().getComposite(), SWT.NONE);
-
 				getUICompositor().insertElement(composite, new Location(layout));
 
 				return composite;
@@ -382,6 +382,35 @@
 	}
 
 	/**
+	 * Create a new composite inside of a scrolled composite. Scrollbars will be added dynamically in case the content does not fit into the composite area. To
+	 * activate the composite (and create elements inside) use {@module #pushComposite(Composite)}.
+	 *
+	 * @param layout
+	 *            layout data (see module documentation)
+	 * @return composite instance
+	 * @throws Throwable
+	 *             on any SWT error
+	 */
+	@WrapToScript
+	public Composite createScrolledComposite(@ScriptParameter(defaultValue = "o! o!") String layout) throws Throwable {
+		return runInUIThread(new RunnableWithResult<Composite>() {
+			@Override
+			public Composite runWithTry() throws Throwable {
+				final ScrolledComposite scrolledComposite = new ScrolledComposite(getUICompositor().getComposite(), SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
+				scrolledComposite.setExpandHorizontal(true);
+				scrolledComposite.setExpandVertical(true);
+
+				final Composite composite = new Composite(scrolledComposite, SWT.NONE);
+				scrolledComposite.setContent(composite);
+
+				getUICompositor().insertElement(scrolledComposite, new Location(layout));
+
+				return composite;
+			}
+		});
+	}
+
+	/**
 	 * Create a separator.
 	 *
 	 * @param horizontal
@@ -1249,7 +1278,7 @@
 		}
 
 		public void update() {
-			fUICompositors.get(fUICompositors.size() - 1).fRenderer.update();
+			getUICompositor().fRenderer.update();
 		}
 
 		public ResourceManager getResourceManager() {
