adapted to latest EMFStore changes 
diff --git a/ECP2/org.eclipse.emf.ecp.emfstore.core/src/org/eclipse/emf/ecp/emfstore/core/internal/EMFStoreProvider.java b/ECP2/org.eclipse.emf.ecp.emfstore.core/src/org/eclipse/emf/ecp/emfstore/core/internal/EMFStoreProvider.java
index 0baee1c..f3c54d7 100644
--- a/ECP2/org.eclipse.emf.ecp.emfstore.core/src/org/eclipse/emf/ecp/emfstore/core/internal/EMFStoreProvider.java
+++ b/ECP2/org.eclipse.emf.ecp.emfstore.core/src/org/eclipse/emf/ecp/emfstore/core/internal/EMFStoreProvider.java
@@ -119,7 +119,7 @@
 	@Override

 	public EditingDomain createEditingDomain(final InternalProject project) {

 

-		EditingDomain domain = ((ESWorkspaceImpl) ESWorkspaceProvider.INSTANCE.getWorkspace()).getInternalAPIImpl()

+		EditingDomain domain = ((ESWorkspaceImpl) ESWorkspaceProvider.INSTANCE.getWorkspace()).toInternalAPI()

 			.getEditingDomain();

 		return domain;

 	}

@@ -232,7 +232,7 @@
 		if (context instanceof InternalProject) {

 			ESLocalProject projectSpace = getProjectSpace((InternalProject) context);

 

-			((ESLocalProjectImpl) projectSpace).getInternalAPIImpl().getProject().eAdapters().remove(adapter);

+			((ESLocalProjectImpl) projectSpace).toInternalAPI().getProject().eAdapters().remove(adapter);

 

 		}

 

@@ -253,7 +253,7 @@
 			if (localProject == null) {

 				return;

 			}

-			ProjectSpace projectSpace = ((ESLocalProjectImpl) localProject).getInternalAPIImpl();

+			ProjectSpace projectSpace = ((ESLocalProjectImpl) localProject).toInternalAPI();

 

 			if (isAutosave()) {

 				// TODO EMFStore how to listen to operations?

@@ -305,7 +305,7 @@
 	public Iterator<EObject> getLinkElements(InternalProject project, EObject modelElement, EReference eReference) {

 		Collection<EObject> result = new HashSet<EObject>();

 		// TODO EMFStore does it work with ESLocalProject?

-		ProjectSpace projectSpace = ((ESLocalProjectImpl) getProjectSpace(project)).getInternalAPIImpl();

+		ProjectSpace projectSpace = ((ESLocalProjectImpl) getProjectSpace(project)).toInternalAPI();

 		ItemPropertyDescriptor.collectReachableObjectsOfType(new HashSet<EObject>(), result, projectSpace.getProject(),

 			eReference.getEType());

 		return result.iterator();

@@ -335,7 +335,7 @@
 

 	/** {@inheritDoc} */

 	public void delete(InternalProject project, final Collection<EObject> eObjects) {

-		final ProjectSpace projectSpace = ((ESLocalProjectImpl) getProjectSpace(project)).getInternalAPIImpl();

+		final ProjectSpace projectSpace = ((ESLocalProjectImpl) getProjectSpace(project)).toInternalAPI();

 		// TODO EMFStore how to delete eObject?

 		new EMFStoreCommand() {

 

@@ -352,8 +352,8 @@
 	/** {@inheritDoc} */

 	public void cloneProject(final InternalProject projectToClone, InternalProject targetProject) {

 		// TODO EMFStore how to clone local project?

-		ProjectSpace toClone = ((ESLocalProjectImpl) getProjectSpace(projectToClone)).getInternalAPIImpl();

-		ProjectSpace target = ((ESLocalProjectImpl) getProjectSpace(targetProject)).getInternalAPIImpl();

+		ProjectSpace toClone = ((ESLocalProjectImpl) getProjectSpace(projectToClone)).toInternalAPI();

+		ProjectSpace target = ((ESLocalProjectImpl) getProjectSpace(targetProject)).toInternalAPI();

 		target.setProject(EcoreUtil.copy(toClone.getProject()));

 	}

 

@@ -366,7 +366,7 @@
 	/** {@inheritDoc} */

 	public Notifier getRoot(InternalProject project) {

 		// TODO EMFStore other way to get root of localproject?

-		return ((ESLocalProjectImpl) getProjectSpace(project)).getInternalAPIImpl().getProject();

+		return ((ESLocalProjectImpl) getProjectSpace(project)).toInternalAPI().getProject();

 	}

 

 	@Override

@@ -499,10 +499,10 @@
 				serverInfo = EMFStoreClientUtil.createServerInfo(

 					internalRepository.getProperties().getValue(EMFStoreProvider.PROP_REPOSITORY_URL),

 					Integer.parseInt(internalRepository.getProperties().getValue(EMFStoreProvider.PROP_PORT)),

-					internalRepository.getProperties().getValue(EMFStoreProvider.PROP_CERTIFICATE)).getAPIImpl();

+					internalRepository.getProperties().getValue(EMFStoreProvider.PROP_CERTIFICATE)).toAPI();

 				workspace.addServer(serverInfo);

 			} else if (!foundExisting && !internalRepository.getProperties().hasProperties()) {

-				serverInfo = EMFStoreClientUtil.giveServerInfo("localhost", 8080).getAPIImpl();

+				serverInfo = EMFStoreClientUtil.giveServerInfo("localhost", 8080).toAPI();

 			}

 			internalRepository.setProviderSpecificData(serverInfo);

 		}

diff --git a/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/EMFStoreDirtyDecorator.java b/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/EMFStoreDirtyDecorator.java
index 0be5516..b482d84 100644
--- a/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/EMFStoreDirtyDecorator.java
+++ b/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/EMFStoreDirtyDecorator.java
@@ -60,7 +60,7 @@
 				return;

 			}

 			ProjectSpace projectSpace = ((ESLocalProjectImpl) EMFStoreProvider.INSTANCE.getProjectSpace(project))

-				.getInternalAPIImpl();

+				.toInternalAPI();

 

 			if (!observers.containsKey(element)) {

 				EMFStoreDirtyObserver emfStoreDirtyObserver = new EMFStoreDirtyObserver(projectSpace, project);

diff --git a/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/EMFStoreDirtyObserver.java b/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/EMFStoreDirtyObserver.java
index d5d9c1d..58468d8 100644
--- a/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/EMFStoreDirtyObserver.java
+++ b/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/EMFStoreDirtyObserver.java
@@ -161,7 +161,7 @@
 			if (cdo.isDelete()) {

 				lastAffected.addAll(EMFStoreDirtyDecoratorCachedTree.getInstance(internalProject).setOperationCount(

 					projectSpace.getProject().get(cdo.getModelElementId()),

-					modelElementIdToOperationCount.get(cdo.getModelElementId().getAPIImpl())));

+					modelElementIdToOperationCount.get(cdo.getModelElementId().toAPI())));

 

 				modelElementIdToOperationCount.remove(projectSpace.getProject().get(cdo.getModelElementId()));

 				// TODO: consider containments

diff --git a/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/RepositoryViewLabelDecorator.java b/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/RepositoryViewLabelDecorator.java
index 63621f7..aa537e0 100644
--- a/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/RepositoryViewLabelDecorator.java
+++ b/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/decorator/RepositoryViewLabelDecorator.java
@@ -118,7 +118,7 @@
 				// TODO cast
 				fireLabelProviderChanged(new LabelProviderChangedEvent(RepositoryViewLabelDecorator.this,
 					EMFStoreProvider.INSTANCE.getRepository(((ESServerImpl) usersession.getServer())
-						.getInternalAPIImpl())));
+						.toInternalAPI())));
 			}
 		});
 	}
diff --git a/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/handler/CommitProjectHandler.java b/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/handler/CommitProjectHandler.java
index 7f86ca0..8c29f91 100644
--- a/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/handler/CommitProjectHandler.java
+++ b/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/handler/CommitProjectHandler.java
@@ -15,9 +15,6 @@
 import org.eclipse.emf.ecp.emfstore.core.internal.EMFStoreProvider;

 import org.eclipse.emf.ecp.spi.core.InternalProject;

 import org.eclipse.emf.emfstore.client.ESLocalProject;

-import org.eclipse.emf.emfstore.internal.client.model.ServerInfo;

-import org.eclipse.emf.emfstore.internal.client.model.impl.api.ESLocalProjectImpl;

-import org.eclipse.emf.emfstore.internal.client.model.impl.api.ESServerImpl;

 import org.eclipse.emf.emfstore.internal.client.ui.controller.UICommitProjectController;

 

 import org.eclipse.core.commands.AbstractHandler;

@@ -41,11 +38,12 @@
 		ESLocalProject localProject = EMFStoreProvider.INSTANCE.getProjectSpace(project);

 		// TODO EMFStore how to set usersession?

 		// -> why is this necessary? The project is already checked out

-		if (localProject.getUsersession() == null) {

-			ESServerImpl server = (ESServerImpl) EMFStoreProvider.INSTANCE.getServerInfo(project.getRepository());

-			ServerInfo serverInfo = server.getInternalAPIImpl();

-			((ESLocalProjectImpl) localProject).getInternalAPIImpl().setUsersession(serverInfo.getLastUsersession());

-		}

+		// if (localProject.getUsersession() == null) {

+		// ESServerImpl server = (ESServerImpl) EMFStoreProvider.INSTANCE.getServerInfo(project.getRepository());

+		// ServerInfo serverInfo = server.getInternalAPIImpl();

+		// RunESCommand

+		// ((ESLocalProjectImpl) localProject).getInternalAPIImpl().setUsersession(serverInfo.getLastUsersession());

+		// }

 		// ESUIControllerFactory.INSTANCE.commitProject(HandlerUtil.getActiveShell(event), projectSpace);

 		new UICommitProjectController(HandlerUtil.getActiveShell(event), localProject).execute();

 		// is structural because of possible merge

diff --git a/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/handler/ShareProjectHandler.java b/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/handler/ShareProjectHandler.java
index d1a1fbc..8ac82d2 100644
--- a/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/handler/ShareProjectHandler.java
+++ b/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/handler/ShareProjectHandler.java
@@ -17,6 +17,7 @@
 import org.eclipse.emf.ecp.spi.core.InternalProject;

 import org.eclipse.emf.ecp.spi.core.InternalRepository;

 import org.eclipse.emf.emfstore.client.ESLocalProject;

+import org.eclipse.emf.emfstore.client.util.RunESCommand;

 import org.eclipse.emf.emfstore.internal.client.model.ServerInfo;

 import org.eclipse.emf.emfstore.internal.client.model.impl.api.ESLocalProjectImpl;

 import org.eclipse.emf.emfstore.internal.client.model.impl.api.ESServerImpl;

@@ -29,6 +30,8 @@
 import org.eclipse.jface.wizard.WizardDialog;

 import org.eclipse.ui.handlers.HandlerUtil;

 

+import java.util.concurrent.Callable;

+

 /**

  * This is the EMFStore ShareProject Handler delegating to the EMFStore {@link UIShareProjectController}.

  * 

@@ -50,14 +53,19 @@
 			// TODO internal cast again

 			InternalRepository repository = (InternalRepository) rw.getSelectedRepository();

 			project.undispose(repository);

-			ESLocalProject localProject = EMFStoreProvider.INSTANCE.getProjectSpace(project);

+			final ESLocalProject localProject = EMFStoreProvider.INSTANCE.getProjectSpace(project);

 

 			// TODO Ugly

 			if (localProject.getUsersession() == null) {

 				ESServerImpl server = (ESServerImpl) EMFStoreProvider.INSTANCE.getServerInfo(project.getRepository());

-				ServerInfo serverInfo = server.getInternalAPIImpl();

-				((ESLocalProjectImpl) localProject).getInternalAPIImpl()

-					.setUsersession(serverInfo.getLastUsersession());

+				final ServerInfo serverInfo = server.toInternalAPI();

+				RunESCommand.run(new Callable<Void>() {

+					public Void call() throws Exception {

+						((ESLocalProjectImpl) localProject).toInternalAPI().setUsersession(

+							serverInfo.getLastUsersession());

+						return null;

+					}

+				});

 			}

 			// TODO EMFStore Constructor is missing

 			new UIShareProjectController(HandlerUtil.getActiveShell(event), localProject).execute();

diff --git a/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/handler/UpdateProjectHandler.java b/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/handler/UpdateProjectHandler.java
index 3bc00eb..9c56b41 100644
--- a/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/handler/UpdateProjectHandler.java
+++ b/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/handler/UpdateProjectHandler.java
@@ -42,8 +42,8 @@
 		// TODO EMFStore how to set user session?

 		if (projectSpace.getUsersession() == null) {

 			ESServer serverInfo = EMFStoreProvider.INSTANCE.getServerInfo(project.getRepository());

-			((ESLocalProjectImpl) projectSpace).getInternalAPIImpl().setUsersession(

-				((ESUsersessionImpl) serverInfo.getLastUsersession()).getInternalAPIImpl());

+			((ESLocalProjectImpl) projectSpace).toInternalAPI().setUsersession(

+				((ESUsersessionImpl) serverInfo.getLastUsersession()).toInternalAPI());

 		}

 		new UIUpdateProjectController(HandlerUtil.getActiveShell(event), projectSpace).execute();

 		project.notifyObjectsChanged(new Object[] { project }, true);

diff --git a/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/handler/UpdateProjectToVersionHandler.java b/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/handler/UpdateProjectToVersionHandler.java
index dd45b9a..d90c13e 100644
--- a/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/handler/UpdateProjectToVersionHandler.java
+++ b/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/handler/UpdateProjectToVersionHandler.java
@@ -42,8 +42,8 @@
 		// TODO Ugly
 		if (projectSpace.getUsersession() == null) {
 			ESServer serverInfo = EMFStoreProvider.INSTANCE.getServerInfo(project.getRepository());
-			((ESLocalProjectImpl) projectSpace).getInternalAPIImpl().setUsersession(
-				((ESUsersessionImpl) serverInfo.getLastUsersession()).getInternalAPIImpl());
+			((ESLocalProjectImpl) projectSpace).toInternalAPI().setUsersession(
+				((ESUsersessionImpl) serverInfo.getLastUsersession()).toInternalAPI());
 		}
 		new UIUpdateProjectToVersionController(HandlerUtil.getActiveShell(event), projectSpace).execute();
 		project.notifyObjectsChanged(new Object[] { project }, true);
diff --git a/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/property/EMFStoreIsServerAdminTester.java b/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/property/EMFStoreIsServerAdminTester.java
index b89e537..c31dc21 100644
--- a/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/property/EMFStoreIsServerAdminTester.java
+++ b/ECP2/org.eclipse.emf.ecp.emfstore.ui/src/org/eclipse/emf/ecp/emfstore/internal/ui/property/EMFStoreIsServerAdminTester.java
@@ -48,7 +48,7 @@
 		}
 
 		ServerInfo serverInfo = ((ESServerImpl) EMFStoreProvider.INSTANCE.getServerInfo(repository))
-			.getInternalAPIImpl();
+			.toInternalAPI();
 		Usersession usersession = serverInfo.getLastUsersession();
 		boolean isAdmin = false;
 		if (usersession != null && usersession.getACUser() != null) {