diff --git a/org.eclipse.emf.refactor.refactoring.papyrus/META-INF/MANIFEST.MF b/org.eclipse.emf.refactor.refactoring.papyrus/META-INF/MANIFEST.MF
index 98b3f53..2d93bed 100644
--- a/org.eclipse.emf.refactor.refactoring.papyrus/META-INF/MANIFEST.MF
+++ b/org.eclipse.emf.refactor.refactoring.papyrus/META-INF/MANIFEST.MF
@@ -17,3 +17,4 @@
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.ui
+Export-Package: org.eclipse.emf.refactor.refactoring.papyrus.managers
diff --git a/org.eclipse.emf.refactor.refactoring.papyrus/bin/org/eclipse/emf/refactor/refactoring/papyrus/managers/PapyrusManager.class b/org.eclipse.emf.refactor.refactoring.papyrus/bin/org/eclipse/emf/refactor/refactoring/papyrus/managers/PapyrusManager.class
new file mode 100644
index 0000000..1e1ff5e
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactoring.papyrus/bin/org/eclipse/emf/refactor/refactoring/papyrus/managers/PapyrusManager.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactoring.papyrus/bin/org/eclipse/emf/refactor/refactoring/papyrus/managers/PapyrusSelectionManager.class b/org.eclipse.emf.refactor.refactoring.papyrus/bin/org/eclipse/emf/refactor/refactoring/papyrus/managers/PapyrusSelectionManager.class
index 38d50b2..7121c12 100644
--- a/org.eclipse.emf.refactor.refactoring.papyrus/bin/org/eclipse/emf/refactor/refactoring/papyrus/managers/PapyrusSelectionManager.class
+++ b/org.eclipse.emf.refactor.refactoring.papyrus/bin/org/eclipse/emf/refactor/refactoring/papyrus/managers/PapyrusSelectionManager.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactoring.papyrus/bin/org/eclipse/emf/refactor/refactoring/papyrus/ui/PapyrusModelApplicationMenu$1.class b/org.eclipse.emf.refactor.refactoring.papyrus/bin/org/eclipse/emf/refactor/refactoring/papyrus/ui/PapyrusModelApplicationMenu$1.class
new file mode 100644
index 0000000..99c2b64
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactoring.papyrus/bin/org/eclipse/emf/refactor/refactoring/papyrus/ui/PapyrusModelApplicationMenu$1.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactoring.papyrus/bin/org/eclipse/emf/refactor/refactoring/papyrus/ui/PapyrusModelApplicationMenu.class b/org.eclipse.emf.refactor.refactoring.papyrus/bin/org/eclipse/emf/refactor/refactoring/papyrus/ui/PapyrusModelApplicationMenu.class
new file mode 100644
index 0000000..b69b21c
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactoring.papyrus/bin/org/eclipse/emf/refactor/refactoring/papyrus/ui/PapyrusModelApplicationMenu.class
Binary files differ
diff --git a/org.eclipse.emf.refactor.refactoring.papyrus/plugin.xml b/org.eclipse.emf.refactor.refactoring.papyrus/plugin.xml
index 04dc999..55e4bde 100644
--- a/org.eclipse.emf.refactor.refactoring.papyrus/plugin.xml
+++ b/org.eclipse.emf.refactor.refactoring.papyrus/plugin.xml
@@ -48,4 +48,37 @@
       </handler>
    </extension>
    
+   <extension
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            allPopups="false"
+            locationURI="popup:org.eclipse.ui.popup.any">
+         <menu
+               label="Papyrus UML Model Refactorings">
+            <visibleWhen
+                     checkEnabled="true">
+                  <iterate
+                        ifEmpty="false">
+                     <or>
+                        <instanceof
+                              value="org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart">
+                        </instanceof>
+                        <instanceof
+                              value="org.eclipse.emf.facet.infra.browser.uicore.internal.model.ModelElementItem">
+                        </instanceof>
+                     </or>
+                  </iterate>
+               </visibleWhen>
+            <dynamic
+                  class="org.eclipse.emf.refactor.refactoring.papyrus.ui.PapyrusModelApplicationMenu"
+                  id="org.eclipse.emf.refactor.papyrus.dynamicmenu">
+            </dynamic>
+         </menu>
+      </menuContribution>
+   </extension>
+   
+   
+
+
+   
 </plugin>
diff --git a/org.eclipse.emf.refactor.refactoring.papyrus/src/org/eclipse/emf/refactor/refactoring/papyrus/managers/PapyrusManager.java b/org.eclipse.emf.refactor.refactoring.papyrus/src/org/eclipse/emf/refactor/refactoring/papyrus/managers/PapyrusManager.java
new file mode 100644
index 0000000..a7c5c76
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactoring.papyrus/src/org/eclipse/emf/refactor/refactoring/papyrus/managers/PapyrusManager.java
@@ -0,0 +1,29 @@
+package org.eclipse.emf.refactor.refactoring.papyrus.managers;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+
+public class PapyrusManager {
+
+	private static PapyrusManager instance;
+	private Diagram diagram;
+	
+	private PapyrusManager() {
+		setDiagram(null);
+		System.out.println("PapyrusManager initialized!");
+	}
+	
+	public static PapyrusManager getInstance() {
+		if (instance == null) {
+			instance = new PapyrusManager();
+		}
+		return instance;
+	}
+
+	public Diagram getDiagram() {
+		return diagram;
+	}
+
+	public void setDiagram(Diagram diagram) {
+		this.diagram = diagram;
+	}
+}
diff --git a/org.eclipse.emf.refactor.refactoring.papyrus/src/org/eclipse/emf/refactor/refactoring/papyrus/managers/PapyrusSelectionManager.java b/org.eclipse.emf.refactor.refactoring.papyrus/src/org/eclipse/emf/refactor/refactoring/papyrus/managers/PapyrusSelectionManager.java
index 36e6e55..cd97759 100644
--- a/org.eclipse.emf.refactor.refactoring.papyrus/src/org/eclipse/emf/refactor/refactoring/papyrus/managers/PapyrusSelectionManager.java
+++ b/org.eclipse.emf.refactor.refactoring.papyrus/src/org/eclipse/emf/refactor/refactoring/papyrus/managers/PapyrusSelectionManager.java
@@ -3,13 +3,49 @@
 import java.util.List;
 
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.facet.infra.browser.uicore.internal.model.ModelElementItem;
 import org.eclipse.emf.refactor.refactoring.managers.SelectionManager;
 import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
+import org.eclipse.gmf.runtime.notation.Diagram;
 import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
 
 @SuppressWarnings("restriction")
 public class PapyrusSelectionManager extends SelectionManager {
+	
+	public static List<EObject> getENotationSelection() {
+		ISelection selection = 
+				PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+				.getSelectionService().getSelection(); 
+		List<EObject> r = SelectionManager.getESelection(selection);
+		for (Object o : getSelection(selection)) {
+			if (o instanceof IGraphicalEditPart) {
+		   	System.out.println("instanceof IGraphicalEditPart");
+		    	IGraphicalEditPart gep = (IGraphicalEditPart) o;
+		    	System.out.println("element: " + gep.resolveSemanticElement());
+		    	System.out.println("notation view: " + gep.getNotationView());
+		    	System.out.println("notation view element: " + gep.getNotationView().getElement());
+		    	EObject root = EcoreUtil.getRootContainer(gep.getNotationView());
+		    	System.out.println("root: " + root);
+		    	r.add(gep.getNotationView().getElement());
+		    	PapyrusManager.getInstance().setDiagram((Diagram) root);
+		    	r.add(root);
+		    } else {
+		    	return null;
+		    }
+		}
+		return r;
+	}
+	
+	public static List<EObject> getESelection() {
+		ISelection selection = 
+				PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+				.getSelectionService().getSelection(); 
+		return getESelection(selection);
+	}
 
 	public static List<EObject> getESelection(ISelection selection) {
 		if (selection == null)
@@ -34,5 +70,16 @@
 		}
 		return r;
 	}
+
+	public static void getDiagram() {
+		IWorkbenchWindow[] iwws = PlatformUI.getWorkbench().getWorkbenchWindows();
+		for (IWorkbenchWindow iww : iwws) {
+			System.out.println("IWorkbenchWindow: " + iww);
+			IWorkbenchPage[] iwps = iww.getPages();
+			for (IWorkbenchPage iwp : iwps) {
+				System.out.println("IWorkbenchPage: " + iwp);
+			}
+		}
+	}
 	
 }
diff --git a/org.eclipse.emf.refactor.refactoring.papyrus/src/org/eclipse/emf/refactor/refactoring/papyrus/ui/PapyrusModelApplicationMenu.java b/org.eclipse.emf.refactor.refactoring.papyrus/src/org/eclipse/emf/refactor/refactoring/papyrus/ui/PapyrusModelApplicationMenu.java
new file mode 100644
index 0000000..e75fd04
--- /dev/null
+++ b/org.eclipse.emf.refactor.refactoring.papyrus/src/org/eclipse/emf/refactor/refactoring/papyrus/ui/PapyrusModelApplicationMenu.java
@@ -0,0 +1,73 @@
+package org.eclipse.emf.refactor.refactoring.papyrus.ui;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.refactor.refactoring.configuration.managers.ConfigurationManager;
+import org.eclipse.emf.refactor.refactoring.core.Refactoring;
+import org.eclipse.emf.refactor.refactoring.managers.ProjectManager;
+import org.eclipse.emf.refactor.refactoring.papyrus.managers.PapyrusSelectionManager;
+import org.eclipse.jface.action.ContributionItem;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.Shell;
+
+public class PapyrusModelApplicationMenu extends ContributionItem {
+
+	private final List<EObject> selection;
+
+	public PapyrusModelApplicationMenu() {
+		selection = PapyrusSelectionManager.getENotationSelection();
+		System.out.println("PapyrusNotationApplicationMenu::selection: " +  selection);
+	}
+
+	public PapyrusModelApplicationMenu(String id) {
+		super(id);
+		selection = PapyrusSelectionManager.getENotationSelection();
+		System.out.println("PapyrusNotationApplicationMenu::selection: " +  selection);
+	}
+	
+	@Override
+	public void fill(Menu menu, int index) {			
+		ConfigurationManager.getInstance();
+		IProject project = ProjectManager.getActualProject();
+		LinkedList<Refactoring> refactorings = 
+				ConfigurationManager.getSelectedRefactorings(project);	
+		for(final Refactoring r : refactorings){
+			if(r.getGui().showInMenu(this.selection)){	
+				MenuItem menuItem = new MenuItem(menu, SWT.CHECK, index);
+				menuItem.setText(r.getName());
+				menuItem.addSelectionListener(new SelectionAdapter() {
+					public void widgetSelected(SelectionEvent e) {
+						try {
+							//1. Set Selection:
+							r.getController().setSelection(selection);							
+							//2. Preselect Values:
+							r.getController().getDataManagementObject()
+													.preselect(selection);							
+							//3. Show Refactoring-Gui:
+							Shell shell = 
+									Display.getDefault().getActiveShell();
+							RefactoringWizardOpenOperation dialog = 
+								new RefactoringWizardOpenOperation
+														(r.getGui().show());
+							dialog.run(shell, "Refactoring: " + r.getName());
+							
+						} catch (Exception e2) {
+							MessageDialog
+								.openError(null, "Error", e2.getMessage());
+						}
+					}
+				});
+			}			
+		}	
+	}
+}
\ No newline at end of file
