diff --git a/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/hyperlinkadapter/AbstractHyperlinkAdapter.java b/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/hyperlinkadapter/AbstractHyperlinkAdapter.java
index 8581958..a501a0b 100644
--- a/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/hyperlinkadapter/AbstractHyperlinkAdapter.java
+++ b/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/hyperlinkadapter/AbstractHyperlinkAdapter.java
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.amalgam.explorer.activity.ui.api.hyperlinkadapter;
 
+import org.eclipse.amalgam.explorer.activity.ui.api.manager.ActivityExplorerManager;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.sirius.business.api.session.Session;
 import org.eclipse.ui.forms.events.HyperlinkAdapter;
@@ -24,28 +25,33 @@
 	 * Root Element of the Semantic model.
 	 */
 	protected EObject _root;
-	/**
-	 * Sirius session.
-	 */
-	private Session _session;
 
 	/**
 	 * Constructor.
 	 * 
-	 * @param project_p
+	 * @param root
 	 */
-	public AbstractHyperlinkAdapter(EObject root_p, Session session_p) {
-		_root = root_p;
-		_session = session_p;
+	public AbstractHyperlinkAdapter(EObject root) {
+		_root = root;
 	}
 
 	/**
+   * Constructor.
+   * 
+   * @param root
+   */
+	@Deprecated
+  public AbstractHyperlinkAdapter(EObject root, Session session) {
+    this(root);
+  }
+	
+	/**
 	 * Get the model element that the run is performed against.<br>
 	 * 
-	 * @param project_p
+	 * @param root
 	 * @return
 	 */
-	protected EObject getModelElement(EObject root_p) {
+	protected EObject getModelElement(EObject root) {
 		return _root;
 	}
 
@@ -53,16 +59,16 @@
 	 * @see org.eclipse.ui.forms.events.HyperlinkAdapter#linkActivated(org.eclipse.ui.forms.events.HyperlinkEvent)
 	 */
 	@Override
-	public void linkActivated(HyperlinkEvent event_p) {
-		linkPressed(event_p, _root, _session);
+	public void linkActivated(HyperlinkEvent event) {
+		linkPressed(event, _root, ActivityExplorerManager.INSTANCE.getSession());
 	}
 
 	/**
 	 * Called when link is activated i.e pressed by the end-user.
 	 * 
-	 * @param event_p
-	 * @param project_p
-	 * @param session_p
+	 * @param event
+	 * @param root
+	 * @param session
 	 */
-	protected abstract void linkPressed(HyperlinkEvent event_p, EObject project_p, Session session_p);
+	protected abstract void linkPressed(HyperlinkEvent event, EObject root, Session session);
 }
diff --git a/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/hyperlinkadapter/AbstractNewDiagramHyperlinkAdapter.java b/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/hyperlinkadapter/AbstractNewDiagramHyperlinkAdapter.java
index 2f16326..1c80829 100644
--- a/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/hyperlinkadapter/AbstractNewDiagramHyperlinkAdapter.java
+++ b/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/hyperlinkadapter/AbstractNewDiagramHyperlinkAdapter.java
@@ -36,11 +36,10 @@
 	/**
 	 * Constructor.
 	 * 
-	 * @param project_p
-	 * @param session_p
+	 * @param project
 	 */
-	public AbstractNewDiagramHyperlinkAdapter(EObject project_p, Session session_p) {
-		super(project_p, session_p);
+	public AbstractNewDiagramHyperlinkAdapter(EObject project) {
+		super(project);
 	}
 
 	/**
@@ -48,28 +47,28 @@
 	 * {@link #getModelElement(Project))} and the current session.<br>
 	 * Must be in the UI thread.
 	 */
-	protected boolean createDiagram(final EObject project_p, final Session session_p) {
+	protected boolean createDiagram(final EObject project, final Session session) {
 		final boolean flag[] = { true };
 
-		if (project_p != null && session_p != null) {
-			RecordingCommand cmd = new RecordingCommand(TransactionUtil.getEditingDomain(project_p)) {
+		if (project != null && session != null) {
+			RecordingCommand cmd = new RecordingCommand(TransactionUtil.getEditingDomain(project)) {
 				@Override
 				protected void doExecute() {
 					//
-					EObject modelElement = project_p;
-					RepresentationDescription diagramRepresentation = getDiagramRepresentation(session_p, modelElement);
+					EObject modelElement = project;
+					RepresentationDescription diagramRepresentation = getDiagramRepresentation(session, modelElement);
 					// Preconditions
 					if ((null == diagramRepresentation)
 							|| !DialectManager.INSTANCE.canCreate(modelElement, diagramRepresentation)) {
 						flag[0] = false;
 					} else {
 						NewRepresentationAction newDiagramAction = new NewRepresentationAction(diagramRepresentation,
-								modelElement, session_p);
+								modelElement, session);
 						newDiagramAction.run();
 					}
 				}
 			};
-			TransactionUtil.getEditingDomain(project_p).getCommandStack().execute(cmd);
+			TransactionUtil.getEditingDomain(project).getCommandStack().execute(cmd);
 		} else {
 			flag[0] = false;
 		}
@@ -78,22 +77,22 @@
 	}
 
 	@Override
-	protected void linkPressed(HyperlinkEvent event_p, EObject root_p, Session session_p) {
-		if (root_p != null && !createDiagram(root_p, session_p)) {
-			handleDiagramCreationError(event_p, root_p);
+	protected void linkPressed(HyperlinkEvent event, EObject root, Session session) {
+		if (root != null && !createDiagram(root, session)) {
+			handleDiagramCreationError(event, root);
 		}
 	}
 
 	/**
 	 * Handle creation error.
 	 * 
-	 * @param event_p
-	 * @param project_p
+	 * @param event
+	 * @param project
 	 */
-	protected void handleDiagramCreationError(HyperlinkEvent event_p, EObject project_p) {
+	protected void handleDiagramCreationError(HyperlinkEvent event, EObject project) {
 		String msg = Messages.AbstractNewDiagramHyperlinkAdapter_DiagramCreation_Error_Msg_Part1
 				+ getRepresentationName() + Messages.AbstractNewDiagramHyperlinkAdapter_DiagramCreation_Error_Msg_Part2;
-		AbstractHyperlink widget = (AbstractHyperlink) event_p.widget;
+		AbstractHyperlink widget = (AbstractHyperlink) event.widget;
 		MessageDialog.openError(widget.getDisplay().getActiveShell(), widget.getText(), msg);
 		// _logger.error(new EmbeddedMessage(msg,
 		// IReportManagerDefaultComponents.DIAGRAM, project_p));
@@ -106,9 +105,9 @@
 	 * @return <code>null</code> if not found.
 	 */
 
-	protected RepresentationDescription getDiagramRepresentation(Session session_p, EObject modelElement) {
+	protected RepresentationDescription getDiagramRepresentation(Session session, EObject modelElement) {
 		// Get active viewpoints.
-		Collection<Viewpoint> activeViewpoints = session_p.getSelectedViewpoints(false);
+		Collection<Viewpoint> activeViewpoints = session.getSelectedViewpoints(false);
 		Collection<RepresentationDescription> diagramDescriptions = DialectManager.INSTANCE
 				.getAvailableRepresentationDescriptions(activeViewpoints, modelElement);
 		// Get search diagram name.
diff --git a/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/hyperlinkadapter/BlankHyperLinkAdapter.java b/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/hyperlinkadapter/BlankHyperLinkAdapter.java
index 39a061c..f6f0b5f 100644
--- a/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/hyperlinkadapter/BlankHyperLinkAdapter.java
+++ b/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/hyperlinkadapter/BlankHyperLinkAdapter.java
@@ -18,11 +18,11 @@
 public class BlankHyperLinkAdapter extends AbstractHyperlinkAdapter {
 
 	public BlankHyperLinkAdapter() {
-		super(ActivityExplorerManager.INSTANCE.getRootSemanticModel(), ActivityExplorerManager.INSTANCE.getSession());
+		super(ActivityExplorerManager.INSTANCE.getRootSemanticModel());
 	}
 
 	@Override
-	protected void linkPressed(HyperlinkEvent event_p, EObject project_p, Session session_p) {
+	protected void linkPressed(HyperlinkEvent event, EObject project, Session session) {
 		// TODO Auto-generated method stub
 
 	}
diff --git a/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/hyperlinkadapter/NewDiagramHyperLinkAdapter.java b/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/hyperlinkadapter/NewDiagramHyperLinkAdapter.java
index 309053a..da95f64 100644
--- a/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/hyperlinkadapter/NewDiagramHyperLinkAdapter.java
+++ b/plugins/org.eclipse.amalgam.explorer.activity.ui/src/org/eclipse/amalgam/explorer/activity/ui/api/hyperlinkadapter/NewDiagramHyperLinkAdapter.java
@@ -17,7 +17,7 @@
 	protected String name;
 
 	public NewDiagramHyperLinkAdapter() {
-		super(ActivityExplorerManager.INSTANCE.getRootSemanticModel(), ActivityExplorerManager.INSTANCE.getSession());
+		super(ActivityExplorerManager.INSTANCE.getRootSemanticModel());
 	}
 
 	@Override
