diff --git a/org.fortiss.tooling.kernel.ui/trunk/icons/expert_view.png b/org.fortiss.tooling.kernel.ui/trunk/icons/expert_view.png
new file mode 100644
index 0000000000000000000000000000000000000000..ed3c1c4e3f8381ecd82eae3c992308a3129d5219
Binary files /dev/null and b/org.fortiss.tooling.kernel.ui/trunk/icons/expert_view.png differ
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/IModelElementHandler.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/IModelElementHandler.java
index c27bc341e67b8f9af1df7c2ec3bc113bf020563c..a4305a51f70a928bff450a4da11c9e54a6082ee3 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/IModelElementHandler.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/IModelElementHandler.java
@@ -86,4 +86,10 @@ public interface IModelElementHandler<T extends EObject> extends
 	 * in graphical editors.
 	 */
 	List<EObject> getSpecifications(T element);
+
+	/**
+	 * Returns true if the underlying element should be visible in the navigator
+	 * in the non-expert view.
+	 */
+	boolean hiddenInNonExpertView();
 }
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ModelElementHandlerBase.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ModelElementHandlerBase.java
index bd353a15deec3d8e36bbbb60551ada408281e712..bb279339fef0115e65543da742d9f6364f54691b 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ModelElementHandlerBase.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ModelElementHandlerBase.java
@@ -93,4 +93,10 @@ public abstract class ModelElementHandlerBase<T extends EObject> implements
 	public List<EObject> getSpecifications(T element) {
 		return Collections.emptyList();
 	}
+
+	/** {@inheritDoc} */
+	@Override
+	public boolean hiddenInNonExpertView() {
+		return false;
+	}
 }
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorTreeContentProvider.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorTreeContentProvider.java
index ef1a30000daf6f89c9864118c6e16473d989d05f..e12e42891b54f158602e4bda1474b17d93d7fa96 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorTreeContentProvider.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorTreeContentProvider.java
@@ -39,6 +39,9 @@ import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService;
  */
 public class NavigatorTreeContentProvider implements ITreeContentProvider {
 
+	/** Stores whether the expert view is active. **/
+	private boolean expertViewActive = false;
+
 	/** {@inheritDoc} */
 	@Override
 	public Object[] getElements(Object inputElement) {
@@ -54,22 +57,42 @@ public class NavigatorTreeContentProvider implements ITreeContentProvider {
 
 	/** {@inheritDoc} */
 	@Override
-	public Object[] getChildren(Object parentElement) {
+	public Object[] getChildren(Object parent) {
 		// delegate to the model element handlers
-		if (parentElement instanceof EObject) {
+		if (parent instanceof EObject) {
+			EObject parentElement = (EObject) parent;
 			IModelElementHandler<EObject> handler = IModelElementHandlerService.INSTANCE
-					.getModelElementHandler((EObject) parentElement);
+					.getModelElementHandler(parentElement);
 			if (handler != null) {
 				List<EObject> children = new ArrayList<EObject>();
-				children.addAll(handler.getSubnodes((EObject) parentElement));
-				children.addAll(handler
-						.getSpecifications((EObject) parentElement));
+				children.addAll(filterExpertElements(handler
+						.getSubnodes(parentElement)));
+				children.addAll(filterExpertElements(handler
+						.getSpecifications(parentElement)));
 				return children.toArray();
 			}
 		}
 		return new Object[0];
 	}
 
+	/**
+	 * If {@link #expertViewActive} is false then we filter out elements
+	 * according to {@link IModelElementHandler#hiddenInNonExpertView()}
+	 */
+	private List<EObject> filterExpertElements(List<EObject> elements) {
+		if (!expertViewActive) {
+			List<EObject> filtered = new ArrayList<EObject>();
+			for (EObject current : elements) {
+				IModelElementHandler<EObject> handler = IModelElementHandlerService.INSTANCE
+						.getModelElementHandler(current);
+				if (!handler.hiddenInNonExpertView())
+					filtered.add(current);
+			}
+			return filtered;
+		}
+		return elements;
+	}
+
 	/** {@inheritDoc} */
 	@Override
 	public Object getParent(Object element) {
@@ -100,4 +123,12 @@ public class NavigatorTreeContentProvider implements ITreeContentProvider {
 		// the input of this viewer is the persistency service singleton and
 		// therefore never changes.
 	}
+
+	/**
+	 * Toggle the expert view. When expert view is active then more objects are
+	 * displayed in the tree.
+	 */
+	public void toggleExpertView() {
+		expertViewActive = !expertViewActive;
+	}
 }
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorViewPart.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorViewPart.java
index 1c3d5c6e6b261d49d10adf3a8d00b0bb8d6b057b..35ac297c8179a6a846703e84604ecad603f2ed30 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorViewPart.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorViewPart.java
@@ -63,8 +63,8 @@ import org.fortiss.tooling.kernel.ui.service.IContextMenuService;
 import org.fortiss.tooling.kernel.ui.service.IModelEditorBindingService;
 import org.fortiss.tooling.kernel.ui.service.INavigatorService;
 import org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils;
-import org.fortiss.tooling.kernel.ui.util.PropertiesConstantUtils;
 import org.fortiss.tooling.kernel.ui.util.ModelElementLabelProvider;
+import org.fortiss.tooling.kernel.ui.util.PropertiesConstantUtils;
 
 /**
  * {@link ViewPart} of the model navigator provided by the tooling kernel.
@@ -94,6 +94,9 @@ public final class NavigatorViewPart extends ViewPart implements
 	/** Stores the toggle action for editor linkage. */
 	private Action linkWithEditorAction = null;
 
+	/** Toggle expert view filter action. */
+	private Action toggleExpertViewAction = null;
+
 	/** Dialog setting ID for the link with editor action flag. */
 	private static final String LINK_WITH_EDITOR_FLAG = "navigatorSettingLinkWithEditor";
 
@@ -188,11 +191,26 @@ public final class NavigatorViewPart extends ViewPart implements
 		linkWithEditorAction.setChecked(ToolingKernelUIActivator.getDefault()
 				.getDialogSettings().getBoolean(LINK_WITH_EDITOR_FLAG));
 
+		toggleExpertViewAction = new Action("Toggle expert view", SWT.TOGGLE) {
+
+			@Override
+			public void run() {
+				((NavigatorTreeContentProvider) viewer.getContentProvider())
+						.toggleExpertView();
+				viewer.refresh();
+			}
+		};
+
+		toggleExpertViewAction.setImageDescriptor(ToolingKernelUIActivator
+				.getImageDescriptor("icons/expert_view.png"));
+		toggleExpertViewAction.setToolTipText("Toggle expert view");
+
 		IToolBarManager toolBarManager = getViewSite().getActionBars()
 				.getToolBarManager();
 		Separator additionsSeperator = new Separator("additions");
 		additionsSeperator.setVisible(true);
 		toolBarManager.add(additionsSeperator);
+		toolBarManager.insertAfter("additions", toggleExpertViewAction);
 		toolBarManager.insertAfter("additions", linkWithEditorAction);
 	}