Index: jackrabbit-standalone/src/main/java/org/apache/jackrabbit/standalone/cli/ext/CreateWorkspace.java
===================================================================
--- jackrabbit-standalone/src/main/java/org/apache/jackrabbit/standalone/cli/ext/CreateWorkspace.java	(revision 945141)
+++ jackrabbit-standalone/src/main/java/org/apache/jackrabbit/standalone/cli/ext/CreateWorkspace.java	(working copy)
@@ -24,7 +24,7 @@
 import org.apache.commons.chain.Context;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.jackrabbit.core.WorkspaceImpl;
+import org.apache.jackrabbit.core.session.WorkspaceImpl;
 import org.apache.jackrabbit.standalone.cli.CommandHelper;
 
 /**
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/NodeImplTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/NodeImplTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/NodeImplTest.java	(working copy)
@@ -35,6 +35,8 @@
 
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
 import org.apache.jackrabbit.commons.JcrUtils;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.test.AbstractJCRTest;
 import org.apache.jackrabbit.test.NotExecutableException;
 import org.slf4j.Logger;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/ReplaceTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/ReplaceTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/ReplaceTest.java	(working copy)
@@ -19,6 +19,7 @@
 import javax.jcr.RepositoryException;
 import javax.jcr.Node;
 
+import org.apache.jackrabbit.core.session.NodeImpl;
 import org.apache.jackrabbit.test.AbstractJCRTest;
 
 /**
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/RetentionRegistryImplTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/RetentionRegistryImplTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/RetentionRegistryImplTest.java	(working copy)
@@ -34,6 +34,8 @@
 import org.apache.jackrabbit.core.retention.AbstractRetentionTest;
 import org.apache.jackrabbit.core.retention.RetentionRegistry;
 import org.apache.jackrabbit.core.retention.RetentionRegistryImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.spi.commons.conversion.PathResolver;
 import org.apache.jackrabbit.test.NotExecutableException;
 import org.apache.jackrabbit.test.RepositoryStub;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/ShareableNodeTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/ShareableNodeTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/ShareableNodeTest.java	(working copy)
@@ -21,7 +21,7 @@
 import javax.jcr.Workspace;
 import javax.jcr.NodeIterator;
 
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 
 /**
  * <code>ShareableNodeTest</code> performs query tests with shareable nodes.
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/GarbageCollectorTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/GarbageCollectorTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/GarbageCollectorTest.java	(working copy)
@@ -19,7 +19,7 @@
 import org.apache.jackrabbit.api.management.DataStoreGarbageCollector;
 import org.apache.jackrabbit.api.management.MarkEventListener;
 import org.apache.jackrabbit.core.RepositoryImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.test.AbstractJCRTest;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/GCEventListenerTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/GCEventListenerTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/GCEventListenerTest.java	(working copy)
@@ -18,7 +18,7 @@
 
 import org.apache.jackrabbit.api.management.DataStoreGarbageCollector;
 import org.apache.jackrabbit.api.management.MarkEventListener;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.test.AbstractJCRTest;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/GCThread.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/GCThread.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/GCThread.java	(working copy)
@@ -18,7 +18,7 @@
 
 import org.apache.jackrabbit.api.management.DataStoreGarbageCollector;
 import org.apache.jackrabbit.api.management.MarkEventListener;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/GCConcurrentTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/GCConcurrentTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/data/GCConcurrentTest.java	(working copy)
@@ -19,7 +19,7 @@
 import org.apache.jackrabbit.api.management.DataStoreGarbageCollector;
 import org.apache.jackrabbit.api.management.MarkEventListener;
 import org.apache.jackrabbit.core.RepositoryImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.test.AbstractJCRTest;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/integration/SessionImplTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/integration/SessionImplTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/integration/SessionImplTest.java	(working copy)
@@ -25,7 +25,7 @@
 import javax.security.auth.Subject;
 
 import org.apache.jackrabbit.core.RepositoryImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.test.AbstractJCRTest;
 import org.apache.jackrabbit.test.NotExecutableException;
 
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/nodetype/NodeTypesInContentTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/nodetype/NodeTypesInContentTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/nodetype/NodeTypesInContentTest.java	(working copy)
@@ -17,7 +17,7 @@
 package org.apache.jackrabbit.core.nodetype;
 
 import org.apache.jackrabbit.test.AbstractJCRTest;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.nodetype.xml.NodeTypeReader;
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.spi.QNodeTypeDefinition;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/observation/ShareableNodesTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/observation/ShareableNodesTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/observation/ShareableNodesTest.java	(working copy)
@@ -23,7 +23,7 @@
 
 import org.apache.jackrabbit.test.api.observation.AbstractObservationTest;
 import org.apache.jackrabbit.test.api.observation.EventResult;
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 
 /**
  * <code>ShareableNodesTest</code>...
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/xml/AccessControlImporterTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/xml/AccessControlImporterTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/xml/AccessControlImporterTest.java	(working copy)
@@ -22,8 +22,8 @@
 import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
 import org.apache.jackrabbit.commons.xml.ParsingContentHandler;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.config.ImportConfig;
 import org.apache.jackrabbit.core.security.authorization.AccessControlConstants;
 import org.apache.jackrabbit.core.security.principal.EveryonePrincipal;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/config/SecurityConfigTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/config/SecurityConfigTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/config/SecurityConfigTest.java	(working copy)
@@ -17,7 +17,7 @@
 package org.apache.jackrabbit.core.config;
 
 import org.apache.jackrabbit.core.DefaultSecurityManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.AccessManager;
 import org.apache.jackrabbit.core.security.DefaultAccessManager;
 import org.apache.jackrabbit.core.security.JackrabbitSecurityManager;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/EntryTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/EntryTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/EntryTest.java	(working copy)
@@ -17,7 +17,7 @@
 package org.apache.jackrabbit.core.security.authorization.acl;
 
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlEntry;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.authorization.AbstractEntryTest;
 import org.apache.jackrabbit.core.security.authorization.PrivilegeRegistry;
 import org.apache.jackrabbit.test.NotExecutableException;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/WriteTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/WriteTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/WriteTest.java	(working copy)
@@ -19,7 +19,7 @@
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
 import org.apache.jackrabbit.api.security.user.Group;
 import org.apache.jackrabbit.api.security.user.UserManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.authorization.AbstractWriteTest;
 import org.apache.jackrabbit.core.security.authorization.AccessControlConstants;
 import org.apache.jackrabbit.core.security.authorization.PrivilegeRegistry;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLTemplateTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLTemplateTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/acl/ACLTemplateTest.java	(working copy)
@@ -21,7 +21,7 @@
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlEntry;
 import org.apache.jackrabbit.api.security.principal.PrincipalIterator;
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.authorization.AbstractACLTemplateTest;
 import org.apache.jackrabbit.core.security.authorization.PrivilegeRegistry;
 import org.apache.jackrabbit.core.security.principal.PrincipalImpl;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/combined/WriteTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/combined/WriteTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/combined/WriteTest.java	(working copy)
@@ -19,7 +19,7 @@
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlManager;
 import org.apache.jackrabbit.api.security.user.Group;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.authorization.PrivilegeRegistry;
 import org.apache.jackrabbit.test.NotExecutableException;
 import org.slf4j.Logger;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/EntryTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/EntryTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/EntryTest.java	(working copy)
@@ -17,7 +17,7 @@
 package org.apache.jackrabbit.core.security.authorization.principalbased;
 
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlEntry;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.authorization.AbstractEntryTest;
 import org.apache.jackrabbit.spi.commons.conversion.NameResolver;
 import org.apache.jackrabbit.test.NotExecutableException;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/EvaluationUtil.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/EvaluationUtil.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/EvaluationUtil.java	(working copy)
@@ -18,7 +18,7 @@
 
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.test.NotExecutableException;
 
 import javax.jcr.AccessDeniedException;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/VersionTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/VersionTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/VersionTest.java	(working copy)
@@ -17,7 +17,7 @@
 package org.apache.jackrabbit.core.security.authorization.principalbased;
 
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.authorization.AbstractVersionManagementTest;
 import org.apache.jackrabbit.core.security.authorization.PrivilegeRegistry;
 import org.apache.jackrabbit.test.NotExecutableException;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/NodeTypeTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/NodeTypeTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/NodeTypeTest.java	(working copy)
@@ -17,7 +17,7 @@
 package org.apache.jackrabbit.core.security.authorization.principalbased;
 
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.authorization.AbstractNodeTypeManagementTest;
 import org.apache.jackrabbit.test.NotExecutableException;
 
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/LockTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/LockTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/LockTest.java	(working copy)
@@ -17,7 +17,7 @@
 package org.apache.jackrabbit.core.security.authorization.principalbased;
 
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.authorization.AbstractLockManagementTest;
 import org.apache.jackrabbit.test.NotExecutableException;
 
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/WriteTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/WriteTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/WriteTest.java	(working copy)
@@ -24,7 +24,7 @@
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
 import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.api.security.user.User;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.authorization.AbstractWriteTest;
 import org.apache.jackrabbit.core.security.authorization.PrivilegeRegistry;
 import org.apache.jackrabbit.core.security.TestPrincipal;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/ACLTemplateTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/ACLTemplateTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/authorization/principalbased/ACLTemplateTest.java	(working copy)
@@ -17,7 +17,7 @@
 package org.apache.jackrabbit.core.security.authorization.principalbased;
 
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.authorization.AbstractACLTemplateTest;
 import org.apache.jackrabbit.spi.commons.conversion.NameResolver;
 
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/AccessManagerTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/AccessManagerTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/AccessManagerTest.java	(working copy)
@@ -17,10 +17,10 @@
 package org.apache.jackrabbit.core.security;
 
 import org.apache.jackrabbit.core.id.ItemId;
-import org.apache.jackrabbit.core.ItemImpl;
+import org.apache.jackrabbit.core.session.ItemImpl;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.id.PropertyId;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.authorization.Permission;
 import org.apache.jackrabbit.spi.Path;
 import org.apache.jackrabbit.spi.commons.name.NameConstants;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/IndexNodeResolverTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/IndexNodeResolverTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/IndexNodeResolverTest.java	(working copy)
@@ -16,7 +16,7 @@
  */
 package org.apache.jackrabbit.core.security.user;
 
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.test.NotExecutableException;
 import org.apache.jackrabbit.spi.Name;
 import org.slf4j.Logger;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/AdministratorTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/AdministratorTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/AdministratorTest.java	(working copy)
@@ -20,8 +20,8 @@
 import org.apache.jackrabbit.api.security.user.Authorizable;
 import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.api.security.user.User;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.security.principal.AdminPrincipal;
 import org.apache.jackrabbit.test.NotExecutableException;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserImporterTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserImporterTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserImporterTest.java	(working copy)
@@ -25,8 +25,8 @@
 import org.apache.jackrabbit.api.security.user.User;
 import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.api.security.user.Impersonation;
-import org.apache.jackrabbit.core.SessionImpl;
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 import org.apache.jackrabbit.core.config.ImportConfig;
 import org.apache.jackrabbit.core.security.principal.PrincipalImpl;
 import org.apache.jackrabbit.core.security.user.UserImporter.ImportBehavior;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/NodeResolverTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/NodeResolverTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/NodeResolverTest.java	(working copy)
@@ -20,7 +20,7 @@
 import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.api.security.user.Authorizable;
 import org.apache.jackrabbit.api.security.user.Group;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.spi.Name;
 import org.apache.jackrabbit.spi.commons.name.NameConstants;
 import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/NodeCreationTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/NodeCreationTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/NodeCreationTest.java	(working copy)
@@ -20,9 +20,9 @@
 import org.apache.jackrabbit.api.security.user.User;
 import org.apache.jackrabbit.api.security.user.Authorizable;
 import org.apache.jackrabbit.api.security.user.AuthorizableExistsException;
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 import org.apache.jackrabbit.core.RepositoryImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.TestPrincipal;
 import org.apache.jackrabbit.util.Text;
 import org.apache.jackrabbit.test.NotExecutableException;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/AuthorizableImplTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/AuthorizableImplTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/AuthorizableImplTest.java	(working copy)
@@ -21,9 +21,9 @@
 import org.apache.jackrabbit.api.security.user.Group;
 import org.apache.jackrabbit.api.security.user.User;
 import org.apache.jackrabbit.api.security.user.UserManager;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.PropertyImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.PropertyImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.spi.commons.conversion.NameResolver;
 import org.apache.jackrabbit.test.NotExecutableException;
 import org.apache.jackrabbit.value.StringValue;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserManagerImplTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserManagerImplTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/UserManagerImplTest.java	(working copy)
@@ -21,7 +21,7 @@
 import org.apache.jackrabbit.api.security.user.Group;
 import org.apache.jackrabbit.api.security.user.User;
 import org.apache.jackrabbit.api.security.user.UserManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.TestPrincipal;
 import org.apache.jackrabbit.test.NotExecutableException;
 import org.apache.jackrabbit.spi.commons.conversion.NameResolver;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/TraversingNodeResolverTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/TraversingNodeResolverTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/TraversingNodeResolverTest.java	(working copy)
@@ -16,7 +16,7 @@
  */
 package org.apache.jackrabbit.core.security.user;
 
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.test.NotExecutableException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/principal/PrincipalManagerTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/principal/PrincipalManagerTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/principal/PrincipalManagerTest.java	(working copy)
@@ -17,7 +17,7 @@
 package org.apache.jackrabbit.api.security.principal;
 
 import org.apache.jackrabbit.api.JackrabbitSession;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.test.AbstractJCRTest;
 import org.apache.jackrabbit.test.NotExecutableException;
 
Index: jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/AbstractUserTest.java
===================================================================
--- jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/AbstractUserTest.java	(revision 945141)
+++ jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/AbstractUserTest.java	(working copy)
@@ -17,7 +17,7 @@
 package org.apache.jackrabbit.api.security.user;
 
 import org.apache.jackrabbit.api.JackrabbitSession;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.SecurityConstants;
 import org.apache.jackrabbit.core.security.TestPrincipal;
 import org.apache.jackrabbit.test.AbstractJCRTest;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/PropertyImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/PropertyImpl.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/PropertyImpl.java	(revision 0)
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.core;
+
+import org.apache.jackrabbit.core.session.ItemManager;
+import org.apache.jackrabbit.core.session.PropertyData;
+import org.apache.jackrabbit.core.session.SessionImpl;
+
+/**
+ * <code>PropertyImpl</code> implements the <code>Property</code> interface.
+ */
+public class PropertyImpl
+        extends org.apache.jackrabbit.core.session.PropertyImpl {
+
+    public PropertyImpl(
+            ItemManager itemMgr, SessionImpl session, PropertyData data) {
+        super(itemMgr, session, data);
+    }
+
+}
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java	(revision 0)
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.core;
+
+import org.apache.jackrabbit.core.session.AbstractNodeData;
+import org.apache.jackrabbit.core.session.ItemManager;
+import org.apache.jackrabbit.core.session.SessionImpl;
+
+/**
+ * <code>NodeImpl</code> implements the <code>Node</code> interface.
+ */
+public class NodeImpl extends org.apache.jackrabbit.core.session.NodeImpl {
+
+    public NodeImpl(
+            ItemManager itemMgr, SessionImpl session, AbstractNodeData data) {
+        super(itemMgr, session, data);
+    }
+}
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TransientRepository.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TransientRepository.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TransientRepository.java	(working copy)
@@ -34,6 +34,8 @@
 import org.apache.jackrabbit.commons.AbstractRepository;
 import org.apache.jackrabbit.core.config.ConfigurationException;
 import org.apache.jackrabbit.core.config.RepositoryConfig;
+import org.apache.jackrabbit.core.session.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionListener;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryObjectModelImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryObjectModelImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryObjectModelImpl.java	(working copy)
@@ -26,8 +26,8 @@
 import javax.jcr.query.qom.Source;
 
 import org.apache.jackrabbit.commons.query.QueryObjectModelBuilderRegistry;
-import org.apache.jackrabbit.core.ItemManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.ItemManager;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.spi.commons.query.qom.QueryObjectModelTree;
 
 /**
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryHandler.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryHandler.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryHandler.java	(working copy)
@@ -16,8 +16,8 @@
  */
 package org.apache.jackrabbit.core.query;
 
-import org.apache.jackrabbit.core.ItemManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.ItemManager;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.fs.FileSystem;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.state.NodeState;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/AbstractQueryImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/AbstractQueryImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/AbstractQueryImpl.java	(working copy)
@@ -20,8 +20,8 @@
 import javax.jcr.query.InvalidQueryException;
 import javax.jcr.query.Query;
 
-import org.apache.jackrabbit.core.ItemManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.ItemManager;
+import org.apache.jackrabbit.core.session.SessionImpl;
 
 /**
  * Defines common initialization methods for all query implementations.
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryManagerImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryManagerImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryManagerImpl.java	(working copy)
@@ -29,9 +29,9 @@
 import javax.jcr.query.qom.QueryObjectModel;
 import javax.jcr.query.qom.QueryObjectModelFactory;
 
-import org.apache.jackrabbit.core.ItemManager;
+import org.apache.jackrabbit.core.session.ItemManager;
 import org.apache.jackrabbit.core.SearchManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.spi.commons.query.qom.QueryObjectModelFactoryImpl;
 import org.apache.jackrabbit.spi.commons.query.qom.QueryObjectModelTree;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/QueryImpl.java	(working copy)
@@ -16,8 +16,8 @@
  */
 package org.apache.jackrabbit.core.query;
 
-import org.apache.jackrabbit.core.ItemManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.ItemManager;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.spi.commons.conversion.NameException;
 import org.apache.jackrabbit.spi.Path;
 import org.apache.jackrabbit.spi.Name;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/NodeNameOperand.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/NodeNameOperand.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/NodeNameOperand.java	(working copy)
@@ -21,7 +21,7 @@
 import javax.jcr.RepositoryException;
 import javax.jcr.Value;
 
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.query.lucene.ScoreNode;
 
 /**
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/NodeLocalNameOperand.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/NodeLocalNameOperand.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/NodeLocalNameOperand.java	(working copy)
@@ -20,7 +20,7 @@
 import javax.jcr.RepositoryException;
 import javax.jcr.Value;
 
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.query.lucene.ScoreNode;
 import org.apache.jackrabbit.util.Text;
 
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/EvaluationContext.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/EvaluationContext.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/EvaluationContext.java	(working copy)
@@ -19,7 +19,7 @@
 import java.io.IOException;
 
 import org.apache.jackrabbit.core.query.lucene.QueryHits;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.state.ItemStateManager;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.index.IndexReader;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/HierarchyConstraint.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/HierarchyConstraint.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/HierarchyConstraint.java	(working copy)
@@ -20,7 +20,7 @@
 
 import org.apache.jackrabbit.spi.commons.query.qom.SelectorImpl;
 import org.apache.jackrabbit.core.id.NodeId;
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 
 /**
  * <code>HierarchyConstraint</code> is a base class for hierarchy related
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/DescendantNodeConstraint.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/DescendantNodeConstraint.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/DescendantNodeConstraint.java	(working copy)
@@ -24,8 +24,8 @@
 import org.apache.jackrabbit.spi.commons.query.qom.SelectorImpl;
 import org.apache.jackrabbit.spi.Name;
 import org.apache.jackrabbit.core.query.lucene.ScoreNode;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.id.NodeId;
 
 /**
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/PropertyValueOperand.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/PropertyValueOperand.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/PropertyValueOperand.java	(working copy)
@@ -23,7 +23,7 @@
 import javax.jcr.RepositoryException;
 import javax.jcr.Value;
 
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.id.PropertyId;
 import org.apache.jackrabbit.core.query.lucene.ScoreNode;
 import org.apache.jackrabbit.core.state.ItemStateException;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/ChildNodeConstraint.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/ChildNodeConstraint.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/constraint/ChildNodeConstraint.java	(working copy)
@@ -24,8 +24,8 @@
 import org.apache.jackrabbit.spi.commons.query.qom.SelectorImpl;
 import org.apache.jackrabbit.spi.Name;
 import org.apache.jackrabbit.core.query.lucene.ScoreNode;
-import org.apache.jackrabbit.core.SessionImpl;
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 
 /**
  * <code>ChildNodeConstraint</code> implements a child node constraint.
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryHitsQuery.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryHitsQuery.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryHitsQuery.java	(working copy)
@@ -26,7 +26,7 @@
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.index.TermDocs;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 
 import java.io.IOException;
 import java.util.Set;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MatchAllDocsQuery.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MatchAllDocsQuery.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MatchAllDocsQuery.java	(working copy)
@@ -16,7 +16,7 @@
  */
 package org.apache.jackrabbit.core.query.lucene;
 
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.lucene.search.Sort;
 
 import javax.jcr.RepositoryException;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryObjectModelImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryObjectModelImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryObjectModelImpl.java	(working copy)
@@ -25,8 +25,8 @@
 import javax.jcr.query.InvalidQueryException;
 import javax.jcr.query.qom.QueryObjectModelFactory;
 
-import org.apache.jackrabbit.core.ItemManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.ItemManager;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.nodetype.NodeTypeManagerImpl;
 import org.apache.jackrabbit.core.nodetype.NodeTypeImpl;
 import org.apache.jackrabbit.core.query.PropertyTypeRegistry;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SingleColumnQueryResult.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SingleColumnQueryResult.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SingleColumnQueryResult.java	(working copy)
@@ -20,8 +20,8 @@
 
 import javax.jcr.RepositoryException;
 
-import org.apache.jackrabbit.core.ItemManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.ItemManager;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.AccessManager;
 import org.apache.jackrabbit.spi.commons.query.qom.ColumnImpl;
 import org.apache.jackrabbit.spi.Path;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryResultImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryResultImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryResultImpl.java	(working copy)
@@ -29,8 +29,8 @@
 import javax.jcr.query.QueryResult;
 import javax.jcr.query.RowIterator;
 
-import org.apache.jackrabbit.core.ItemManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.ItemManager;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.AccessManager;
 import org.apache.jackrabbit.spi.Name;
 import org.apache.jackrabbit.spi.commons.query.qom.ColumnImpl;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ChildNodesQueryHits.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ChildNodesQueryHits.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ChildNodesQueryHits.java	(working copy)
@@ -16,7 +16,7 @@
  */
 package org.apache.jackrabbit.core.query.lucene;
 
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 
 import javax.jcr.Node;
 import javax.jcr.RepositoryException;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DocOrderScoreNodeIterator.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DocOrderScoreNodeIterator.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DocOrderScoreNodeIterator.java	(working copy)
@@ -16,8 +16,8 @@
  */
 package org.apache.jackrabbit.core.query.lucene;
 
-import org.apache.jackrabbit.core.ItemManager;
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.ItemManager;
+import org.apache.jackrabbit.core.session.NodeImpl;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.spi.Path;
 import org.slf4j.Logger;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java	(working copy)
@@ -39,8 +39,8 @@
 import javax.xml.parsers.ParserConfigurationException;
 
 import org.apache.jackrabbit.core.HierarchyManager;
-import org.apache.jackrabbit.core.ItemManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.ItemManager;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.fs.FileSystem;
 import org.apache.jackrabbit.core.fs.FileSystemException;
 import org.apache.jackrabbit.core.fs.FileSystemResource;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JackrabbitIndexSearcher.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JackrabbitIndexSearcher.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JackrabbitIndexSearcher.java	(working copy)
@@ -18,7 +18,7 @@
 
 import java.io.IOException;
 
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.query.lucene.constraint.EvaluationContext;
 import org.apache.jackrabbit.core.state.ItemStateManager;
 import org.apache.jackrabbit.spi.Name;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RowIteratorImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RowIteratorImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/RowIteratorImpl.java	(working copy)
@@ -16,9 +16,9 @@
  */
 package org.apache.jackrabbit.core.query.lucene;
 
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 import org.apache.jackrabbit.core.id.NodeId;
-import org.apache.jackrabbit.core.ItemManager;
+import org.apache.jackrabbit.core.session.ItemManager;
 import org.apache.jackrabbit.core.HierarchyManager;
 import org.apache.jackrabbit.spi.commons.conversion.NameException;
 import org.apache.jackrabbit.spi.Name;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractQueryImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractQueryImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractQueryImpl.java	(working copy)
@@ -18,8 +18,8 @@
 
 import org.apache.jackrabbit.core.query.ExecutableQuery;
 import org.apache.jackrabbit.core.query.PropertyTypeRegistry;
-import org.apache.jackrabbit.core.SessionImpl;
-import org.apache.jackrabbit.core.ItemManager;
+import org.apache.jackrabbit.core.session.SessionImpl;
+import org.apache.jackrabbit.core.session.ItemManager;
 import org.apache.jackrabbit.spi.Name;
 
 import javax.jcr.Value;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIteratorImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIteratorImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIteratorImpl.java	(working copy)
@@ -16,8 +16,8 @@
  */
 package org.apache.jackrabbit.core.query.lucene;
 
-import org.apache.jackrabbit.core.ItemManager;
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.ItemManager;
+import org.apache.jackrabbit.core.session.NodeImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiColumnQueryResult.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiColumnQueryResult.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiColumnQueryResult.java	(working copy)
@@ -20,8 +20,8 @@
 
 import javax.jcr.RepositoryException;
 
-import org.apache.jackrabbit.core.ItemManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.ItemManager;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.AccessManager;
 import org.apache.jackrabbit.spi.commons.query.qom.ColumnImpl;
 import org.apache.jackrabbit.spi.commons.query.qom.OrderingImpl;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeTraversingQueryHits.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeTraversingQueryHits.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeTraversingQueryHits.java	(working copy)
@@ -17,7 +17,7 @@
 package org.apache.jackrabbit.core.query.lucene;
 
 import org.apache.commons.collections.iterators.IteratorChain;
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 
 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JackrabbitQuery.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JackrabbitQuery.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JackrabbitQuery.java	(working copy)
@@ -18,7 +18,7 @@
 
 import org.apache.lucene.search.Sort;
 import org.apache.lucene.search.Query;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 
 import java.io.IOException;
 
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/QueryImpl.java	(working copy)
@@ -25,8 +25,8 @@
 import javax.jcr.query.QueryResult;
 import javax.jcr.query.qom.QueryObjectModelFactory;
 
-import org.apache.jackrabbit.core.ItemManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.ItemManager;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.nodetype.NodeTypeImpl;
 import org.apache.jackrabbit.core.query.PropertyTypeRegistry;
 import org.apache.jackrabbit.spi.Name;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DescendantSelfAxisQuery.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DescendantSelfAxisQuery.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/DescendantSelfAxisQuery.java	(working copy)
@@ -25,7 +25,7 @@
 import org.apache.lucene.search.Similarity;
 import org.apache.lucene.search.Weight;
 import org.apache.lucene.search.Sort;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ChildAxisQuery.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ChildAxisQuery.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/ChildAxisQuery.java	(working copy)
@@ -17,7 +17,7 @@
 package org.apache.jackrabbit.core.query.lucene;
 
 import org.apache.jackrabbit.core.id.NodeId;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.query.lucene.hits.AdaptingHits;
 import org.apache.jackrabbit.core.query.lucene.hits.Hits;
 import org.apache.jackrabbit.core.query.lucene.hits.ScorerHits;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryBuilder.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryBuilder.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryBuilder.java	(working copy)
@@ -35,7 +35,7 @@
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.SearchManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.query.PropertyTypeRegistry;
 import org.apache.jackrabbit.core.state.ItemStateManager;
 import org.apache.jackrabbit.spi.Name;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryFactoryImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryFactoryImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LuceneQueryFactoryImpl.java	(working copy)
@@ -31,7 +31,7 @@
 import javax.jcr.query.qom.StaticOperand;
 
 import org.apache.jackrabbit.core.HierarchyManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.spi.Name;
 import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
 import org.apache.jackrabbit.spi.commons.name.NameConstants;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TestContentLoader.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TestContentLoader.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TestContentLoader.java	(working copy)
@@ -36,6 +36,7 @@
 import org.apache.jackrabbit.api.JackrabbitNodeTypeManager;
 import org.apache.jackrabbit.api.JackrabbitWorkspace;
 import org.apache.jackrabbit.core.retention.RetentionPolicyImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 
 /**
  * Test Content Loader.
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java	(working copy)
@@ -95,6 +95,11 @@
 import org.apache.jackrabbit.core.security.JackrabbitSecurityManager;
 import org.apache.jackrabbit.core.security.authentication.AuthContext;
 import org.apache.jackrabbit.core.security.simple.SimpleSecurityManager;
+import org.apache.jackrabbit.core.session.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionListener;
+import org.apache.jackrabbit.core.session.SystemSession;
+import org.apache.jackrabbit.core.session.WorkspaceImpl;
+import org.apache.jackrabbit.core.session.XASessionImpl;
 import org.apache.jackrabbit.core.state.CacheManager;
 import org.apache.jackrabbit.core.state.ChangeLog;
 import org.apache.jackrabbit.core.state.ISMLocking;
@@ -459,7 +464,7 @@
      * @return the security manager
      * @throws RepositoryException if an error occurs.
      */
-    protected synchronized JackrabbitSecurityManager getSecurityManager()
+    public synchronized JackrabbitSecurityManager getSecurityManager()
             throws RepositoryException {
 
         if (securityMgr == null) {
@@ -728,19 +733,19 @@
         }
     }
 
-    protected NamespaceRegistryImpl getNamespaceRegistry() {
+    public NamespaceRegistryImpl getNamespaceRegistry() {
         return nsReg;
     }
 
-    protected NodeTypeRegistry getNodeTypeRegistry() {
+    public NodeTypeRegistry getNodeTypeRegistry() {
         return ntReg;
     }
 
-    protected InternalVersionManager getVersionManager() {
+    public InternalVersionManager getVersionManager() {
         return vMgr;
     }
 
-    protected NodeId getRootNodeId() {
+    public NodeId getRootNodeId() {
         return rootNodeId;
     }
 
@@ -750,7 +755,7 @@
      * @return the names of all workspaces in this repository.
      * @see javax.jcr.Workspace#getAccessibleWorkspaceNames()
      */
-    protected String[] getWorkspaceNames() {
+    public String[] getWorkspaceNames() {
         synchronized (wspInfos) {
             return wspInfos.keySet().toArray(new String[wspInfos.keySet().size()]);
         }
@@ -766,7 +771,7 @@
      * @throws NoSuchWorkspaceException If the named workspace does not exist.
      * @throws RepositoryException If this repository has been shut down.
      */
-    protected WorkspaceInfo getWorkspaceInfo(String workspaceName)
+    public WorkspaceInfo getWorkspaceInfo(String workspaceName)
             throws NoSuchWorkspaceException, RepositoryException {
         // check sanity of this instance
         sanityCheck();
@@ -796,7 +801,7 @@
      *                             already exists or if another error occurs
      * @see SessionImpl#createWorkspace(String)
      */
-    protected void createWorkspace(String workspaceName)
+    public void createWorkspace(String workspaceName)
             throws RepositoryException {
         synchronized (wspInfos) {
             if (wspInfos.containsKey(workspaceName)) {
@@ -868,7 +873,7 @@
      *                             exists or if another error occurs
      * @see SessionImpl#createWorkspace(String,InputSource)
      */
-    protected void createWorkspace(String workspaceName,
+    public void createWorkspace(String workspaceName,
                                    InputSource configTemplate)
             throws RepositoryException {
 
@@ -881,7 +886,7 @@
         }
     }
 
-    SharedItemStateManager getWorkspaceStateManager(String workspaceName)
+    public SharedItemStateManager getWorkspaceStateManager(String workspaceName)
             throws NoSuchWorkspaceException, RepositoryException {
         // check sanity of this instance
         sanityCheck();
@@ -907,7 +912,7 @@
         manager.setCheckReferences(enabled);
     }
 
-    ObservationDispatcher getObservationDispatcher(String workspaceName)
+    public ObservationDispatcher getObservationDispatcher(String workspaceName)
             throws NoSuchWorkspaceException, RepositoryException {
         // check sanity of this instance
         sanityCheck();
@@ -928,7 +933,7 @@
      * @throws RepositoryException      if an error occurs while opening the
      *                                  search index.
      */
-    SearchManager getSearchManager(String workspaceName)
+    public SearchManager getSearchManager(String workspaceName)
             throws NoSuchWorkspaceException, RepositoryException {
         // check sanity of this instance
         sanityCheck();
@@ -945,7 +950,7 @@
      * @throws NoSuchWorkspaceException if such a workspace does not exist
      * @throws RepositoryException      if some other error occurs
      */
-    LockManagerImpl getLockManager(String workspaceName) throws
+    public LockManagerImpl getLockManager(String workspaceName) throws
             NoSuchWorkspaceException, RepositoryException {
         // check sanity of this instance
         sanityCheck();
@@ -962,7 +967,7 @@
      * @throws NoSuchWorkspaceException if such a workspace does not exist
      * @throws RepositoryException      if some other error occurs
      */
-    RetentionRegistry getRetentionRegistry(String workspaceName) throws NoSuchWorkspaceException, RepositoryException {
+    public RetentionRegistry getRetentionRegistry(String workspaceName) throws NoSuchWorkspaceException, RepositoryException {
         // check sanity of this instance
         sanityCheck();
         return getWorkspaceInfo(workspaceName).getRetentionRegistry();
@@ -1031,7 +1036,7 @@
      *                                  workspace
      * @throws RepositoryException      if another error occurs
      */
-    protected final SessionImpl createSession(Subject subject,
+    public final SessionImpl createSession(Subject subject,
                                               String workspaceName)
             throws NoSuchWorkspaceException, AccessDeniedException,
             RepositoryException {
@@ -1049,7 +1054,7 @@
      *
      * @param session the session to register
      */
-    protected void onSessionCreated(SessionImpl session) {
+    public void onSessionCreated(SessionImpl session) {
         synchronized (activeSessions) {
             session.addListener(this);
             activeSessions.put(session, session);
@@ -1252,7 +1257,7 @@
      * Returns the repository file system.
      * @return repository file system
      */
-    protected FileSystem getFileSystem() {
+    public FileSystem getFileSystem() {
         return repStore;
     }
 
@@ -1638,7 +1643,7 @@
      * representing the same named workspace, i.e. the same physical
      * storage.
      */
-    protected class WorkspaceInfo implements UpdateEventListener {
+    public class WorkspaceInfo implements UpdateEventListener {
 
         /**
          * workspace configuration (passed in constructor)
@@ -1810,7 +1815,7 @@
          * @throws RepositoryException if the persistence manager could not be
          * instantiated/initialized
          */
-        protected PersistenceManager getPersistenceManager()
+        public PersistenceManager getPersistenceManager()
                 throws RepositoryException {
             if (!isInitialized()) {
                 throw new IllegalStateException("workspace '" + getName()
@@ -1966,7 +1971,7 @@
          *         initialized, <code>false</code> if it is already initialized.
          * @throws RepositoryException if an error occurred during the initialization
          */
-        final boolean initialize() throws RepositoryException {
+        public final boolean initialize() throws RepositoryException {
             // check initialize status
             try {
                 initLock.readLock().acquire();
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/VersionManagerImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/VersionManagerImpl.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/VersionManagerImpl.java	(working copy)
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
 import java.util.ArrayList;
 import java.util.Calendar;
@@ -34,6 +34,8 @@
 import javax.jcr.version.VersionHistory;
 import javax.jcr.version.VersionManager;
 
+import org.apache.jackrabbit.core.HierarchyManager;
+import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.id.ItemId;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.security.authorization.Permission;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/AbstractNodeData.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/AbstractNodeData.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/AbstractNodeData.java	(working copy)
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
 import javax.jcr.nodetype.NodeDefinition;
 import javax.jcr.RepositoryException;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/ItemValidator.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/ItemValidator.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/ItemValidator.java	(working copy)
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
 import javax.jcr.InvalidItemStateException;
 import javax.jcr.ItemNotFoundException;
@@ -28,6 +28,7 @@
 import javax.jcr.nodetype.ItemDefinition;
 import javax.jcr.version.VersionException;
 
+import org.apache.jackrabbit.core.HierarchyManager;
 import org.apache.jackrabbit.core.id.ItemId;
 import org.apache.jackrabbit.core.lock.LockManager;
 import org.apache.jackrabbit.core.nodetype.EffectiveNodeType;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionImpl.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionImpl.java	(working copy)
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
 import org.apache.commons.collections.IteratorUtils;
 import org.apache.commons.collections.map.ReferenceMap;
@@ -22,6 +22,9 @@
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
 import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.commons.AbstractSession;
+import org.apache.jackrabbit.core.HierarchyManager;
+import org.apache.jackrabbit.core.NodeTypeInstanceHandler;
+import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.RepositoryImpl.WorkspaceInfo;
 import org.apache.jackrabbit.core.cluster.ClusterException;
 import org.apache.jackrabbit.core.cluster.ClusterNode;
@@ -325,7 +328,8 @@
                                                     SharedItemStateManager stateMgr,
                                                     RepositoryImpl rep,
                                                     SessionImpl session) {
-        return new WorkspaceImpl(wspConfig, stateMgr, rep, session);
+        return new org.apache.jackrabbit.core.WorkspaceImpl(
+                wspConfig, stateMgr, rep, session);
     }
 
     /**
@@ -495,7 +499,7 @@
      * @return internal retention manager
      * @throws RepositoryException
      */
-    protected RetentionRegistry getRetentionRegistry() throws RepositoryException {
+    public RetentionRegistry getRetentionRegistry() throws RepositoryException {
         return wsp.getRetentionRegistry();
     }
 
@@ -516,7 +520,7 @@
      * @param value attribute value
      * @since Apache Jackrabbit 1.6
      */
-    protected void setAttribute(String name, Object value) {
+    public void setAttribute(String name, Object value) {
         if (value != null) {
             attributes.put(name, value);
         } else {
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/PropertyImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/PropertyImpl.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/PropertyImpl.java	(working copy)
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
 import java.io.InputStream;
 import java.io.IOException;
@@ -57,7 +57,8 @@
 /**
  * <code>PropertyImpl</code> implements the <code>Property</code> interface.
  */
-public class PropertyImpl extends ItemImpl implements Property {
+public class PropertyImpl
+        extends org.apache.jackrabbit.core.ItemImpl implements Property {
 
     private static Logger log = LoggerFactory.getLogger(PropertyImpl.class);
 
@@ -71,7 +72,8 @@
      * @param session    the <code>Session</code> through which this <code>Property</code> is acquired
      * @param data       the property data
      */
-    PropertyImpl(ItemManager itemMgr, SessionImpl session, PropertyData data) {
+    protected PropertyImpl(
+            ItemManager itemMgr, SessionImpl session, PropertyData data) {
         super(itemMgr, session, data);
         this.data = data;
         // value will be read on demand
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/NodeImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/NodeImpl.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/NodeImpl.java	(working copy)
@@ -14,8 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
+import static org.apache.jackrabbit.spi.commons.name.NameConstants.JCR_CURRENT_LIFECYCLE_STATE;
+import static org.apache.jackrabbit.spi.commons.name.NameConstants.JCR_ISCHECKEDOUT;
+import static org.apache.jackrabbit.spi.commons.name.NameConstants.JCR_LIFECYCLE_POLICY;
+import static org.apache.jackrabbit.spi.commons.name.NameConstants.MIX_LIFECYCLE;
+import static org.apache.jackrabbit.spi.commons.name.NameConstants.MIX_REFERENCEABLE;
+
 import java.io.InputStream;
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -69,6 +75,7 @@
 import org.apache.jackrabbit.commons.JcrUtils;
 import org.apache.jackrabbit.commons.iterator.NodeIteratorAdapter;
 import org.apache.jackrabbit.commons.iterator.PropertyIteratorAdapter;
+import org.apache.jackrabbit.core.HierarchyManager;
 import org.apache.jackrabbit.core.id.ItemId;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.id.PropertyId;
@@ -95,7 +102,6 @@
 import org.apache.jackrabbit.spi.commons.conversion.MalformedPathException;
 import org.apache.jackrabbit.spi.commons.conversion.NameException;
 import org.apache.jackrabbit.spi.commons.name.NameConstants;
-import static org.apache.jackrabbit.spi.commons.name.NameConstants.*;
 import org.apache.jackrabbit.spi.commons.name.PathBuilder;
 import org.apache.jackrabbit.spi.commons.name.PathFactoryImpl;
 import org.apache.jackrabbit.spi.commons.nodetype.NodeDefinitionImpl;
@@ -109,7 +115,8 @@
 /**
  * <code>NodeImpl</code> implements the <code>Node</code> interface.
  */
-public class NodeImpl extends ItemImpl implements Node {
+public class NodeImpl
+        extends org.apache.jackrabbit.core.ItemImpl implements Node {
 
     private static Logger log = LoggerFactory.getLogger(NodeImpl.class);
 
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/LazyItemIterator.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/LazyItemIterator.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/LazyItemIterator.java	(working copy)
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
 import java.util.ArrayList;
 import java.util.List;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/NodeDataRef.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/NodeDataRef.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/NodeDataRef.java	(working copy)
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
 import javax.jcr.nodetype.ItemDefinition;
 import javax.jcr.RepositoryException;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/BatchedItemOperations.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/BatchedItemOperations.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/BatchedItemOperations.java	(working copy)
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -34,6 +34,8 @@
 import javax.jcr.nodetype.ConstraintViolationException;
 import javax.jcr.version.VersionException;
 
+import org.apache.jackrabbit.core.HierarchyManager;
+import org.apache.jackrabbit.core.HierarchyManagerImpl;
 import org.apache.jackrabbit.core.id.ItemId;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.id.PropertyId;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/PropertyData.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/PropertyData.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/PropertyData.java	(working copy)
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
 import javax.jcr.nodetype.PropertyDefinition;
 import javax.jcr.RepositoryException;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/NodeData.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/NodeData.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/NodeData.java	(working copy)
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
 import org.apache.jackrabbit.core.state.NodeState;
 
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/WorkspaceImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/WorkspaceImpl.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/WorkspaceImpl.java	(working copy)
@@ -14,19 +14,19 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
 import javax.jcr.AccessDeniedException;
 import javax.jcr.InvalidItemStateException;
 import javax.jcr.ItemExistsException;
 import javax.jcr.NamespaceRegistry;
 import javax.jcr.NoSuchWorkspaceException;
+import javax.jcr.Node;
+import javax.jcr.NodeIterator;
 import javax.jcr.PathNotFoundException;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.UnsupportedRepositoryOperationException;
-import javax.jcr.Node;
-import javax.jcr.NodeIterator;
 import javax.jcr.lock.LockException;
 import javax.jcr.nodetype.ConstraintViolationException;
 import javax.jcr.nodetype.NodeTypeManager;
@@ -38,6 +38,10 @@
 
 import org.apache.jackrabbit.api.JackrabbitWorkspace;
 import org.apache.jackrabbit.commons.AbstractWorkspace;
+import org.apache.jackrabbit.core.CachingHierarchyManager;
+import org.apache.jackrabbit.core.HierarchyManager;
+import org.apache.jackrabbit.core.RepositoryImpl;
+import org.apache.jackrabbit.core.SearchManager;
 import org.apache.jackrabbit.core.config.WorkspaceConfig;
 import org.apache.jackrabbit.core.id.ItemId;
 import org.apache.jackrabbit.core.id.NodeId;
@@ -263,7 +267,8 @@
 
     VersionManagerImpl getVersionManagerImpl() {
         if (versionMgr == null) {
-            versionMgr = new VersionManagerImpl(session, stateMgr, hierMgr);
+            versionMgr = new org.apache.jackrabbit.core.VersionManagerImpl(
+                    session, stateMgr, hierMgr);
         }
         return versionMgr;
     }
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/ItemImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/ItemImpl.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/ItemImpl.java	(working copy)
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -46,6 +46,7 @@
 import javax.jcr.nodetype.NodeType;
 import javax.jcr.version.VersionException;
 
+import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.id.ItemId;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.id.PropertyId;
@@ -121,7 +122,7 @@
      * @param session   the <code>Session</code> through which this <code>Item</code> is acquired
      * @param data      ItemData of this <code>Item</code>
      */
-    ItemImpl(ItemManager itemMgr, SessionImpl session, ItemData data) {
+    protected ItemImpl(ItemManager itemMgr, SessionImpl session, ItemData data) {
         this.session = session;
         rep = (RepositoryImpl) session.getRepository();
         stateMgr = session.getItemStateManager();
@@ -194,7 +195,7 @@
      *
      * @return state associated with this <code>Item</code>
      */
-    ItemState getItemState() {
+    protected ItemState getItemState() {
         return data.getState();
     }
 
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/ItemLifeCycleListener.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/ItemLifeCycleListener.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/ItemLifeCycleListener.java	(working copy)
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
 import org.apache.jackrabbit.core.id.ItemId;
 
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/XAWorkspace.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/XAWorkspace.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/XAWorkspace.java	(working copy)
@@ -14,17 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
+import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.config.WorkspaceConfig;
+import org.apache.jackrabbit.core.state.LocalItemStateManager;
 import org.apache.jackrabbit.core.state.SharedItemStateManager;
 import org.apache.jackrabbit.core.state.XAItemStateManager;
-import org.apache.jackrabbit.core.state.LocalItemStateManager;
 
 /**
  * Workspace extension that works in an XA environment.
  */
-public class XAWorkspace extends WorkspaceImpl {
+public class XAWorkspace extends org.apache.jackrabbit.core.WorkspaceImpl {
 
     /**
      * Protected constructor.
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/ProtectedItemModifier.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/ProtectedItemModifier.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/ProtectedItemModifier.java	(working copy)
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
 import javax.jcr.AccessDeniedException;
 import javax.jcr.ItemExistsException;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/ItemData.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/ItemData.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/ItemData.java	(working copy)
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
 import javax.jcr.nodetype.ItemDefinition;
 import javax.jcr.RepositoryException;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SystemSession.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SystemSession.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SystemSession.java	(working copy)
@@ -14,12 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
+import java.security.Principal;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
-import java.security.Principal;
 
 import javax.jcr.AccessDeniedException;
 import javax.jcr.PathNotFoundException;
@@ -28,6 +28,8 @@
 import javax.jcr.security.Privilege;
 import javax.security.auth.Subject;
 
+import org.apache.jackrabbit.core.HierarchyManager;
+import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.config.WorkspaceConfig;
 import org.apache.jackrabbit.core.id.ItemId;
 import org.apache.jackrabbit.core.security.AMContext;
@@ -43,7 +45,8 @@
 /**
  * A <code>SystemSession</code> ...
  */
-class SystemSession extends SessionImpl {
+@SuppressWarnings("deprecation")
+public class SystemSession extends org.apache.jackrabbit.core.SessionImpl {
 
     /**
      * Package private factory method
@@ -53,7 +56,7 @@
      * @return
      * @throws RepositoryException
      */
-    static SystemSession create(RepositoryImpl rep, WorkspaceConfig wspConfig)
+    public static SystemSession create(RepositoryImpl rep, WorkspaceConfig wspConfig)
             throws RepositoryException {
         // create subject with SystemPrincipal
         Set<SystemPrincipal> principals = new HashSet<SystemPrincipal>();
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/ItemManager.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/ItemManager.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/ItemManager.java	(working copy)
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
 import java.io.PrintStream;
 import java.util.ArrayList;
@@ -32,12 +32,13 @@
 import javax.jcr.nodetype.ConstraintViolationException;
 
 import org.apache.commons.collections.map.ReferenceMap;
+import org.apache.jackrabbit.core.HierarchyManager;
 import org.apache.jackrabbit.core.id.ItemId;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.id.PropertyId;
-import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
 import org.apache.jackrabbit.core.nodetype.EffectiveNodeType;
 import org.apache.jackrabbit.core.nodetype.NodeTypeConflictException;
+import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
 import org.apache.jackrabbit.core.security.AccessManager;
 import org.apache.jackrabbit.core.state.ChildNodeEntry;
 import org.apache.jackrabbit.core.state.ItemState;
@@ -52,8 +53,8 @@
 import org.apache.jackrabbit.core.version.VersionImpl;
 import org.apache.jackrabbit.spi.Name;
 import org.apache.jackrabbit.spi.Path;
+import org.apache.jackrabbit.spi.QNodeDefinition;
 import org.apache.jackrabbit.spi.QPropertyDefinition;
-import org.apache.jackrabbit.spi.QNodeDefinition;
 import org.apache.jackrabbit.spi.commons.name.NameConstants;
 import org.apache.jackrabbit.spi.commons.nodetype.NodeDefinitionImpl;
 import org.apache.jackrabbit.spi.commons.nodetype.PropertyDefinitionImpl;
@@ -835,13 +836,13 @@
             return new VersionHistoryImpl(this, session, data);
         } else {
             // create node object
-            return new NodeImpl(this, session, data);
+            return new org.apache.jackrabbit.core.NodeImpl(this, session, data);
         }
     }
 
     private PropertyImpl createPropertyInstance(PropertyData data) {
         // check special nodes
-        return new PropertyImpl(this, session, data);
+        return new org.apache.jackrabbit.core.PropertyImpl(this, session, data);
     }
 
     //---------------------------------------------------< item cache methods >
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionListener.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionListener.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/SessionListener.java	(working copy)
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
 /**
  * The <code>SessionListener</code> interface allows an implementing
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/XASessionImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/XASessionImpl.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/session/XASessionImpl.java	(working copy)
@@ -14,9 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.core;
+package org.apache.jackrabbit.core.session;
 
 import org.apache.jackrabbit.api.XASession;
+import org.apache.jackrabbit.core.InternalXAResource;
+import org.apache.jackrabbit.core.RepositoryImpl;
+import org.apache.jackrabbit.core.TransactionContext;
 import org.apache.jackrabbit.core.config.WorkspaceConfig;
 import org.apache.jackrabbit.core.lock.LockManager;
 import org.apache.jackrabbit.core.lock.LockManagerImpl;
@@ -43,7 +46,7 @@
 /**
  * Session extension that provides XA support.
  */
-public class XASessionImpl extends SessionImpl
+public class XASessionImpl extends org.apache.jackrabbit.core.SessionImpl
         implements XASession, XAResource {
 
     /**
@@ -100,7 +103,7 @@
      *                               workspace
      * @throws RepositoryException   if another error occurs
      */
-    protected XASessionImpl(RepositoryImpl rep, AuthContext loginContext,
+    public XASessionImpl(RepositoryImpl rep, AuthContext loginContext,
                             WorkspaceConfig wspConfig)
             throws AccessDeniedException, RepositoryException {
 
@@ -119,7 +122,7 @@
      *                               to the specified workspace
      * @throws RepositoryException   if another error occurs
      */
-    protected XASessionImpl(RepositoryImpl rep, Subject subject,
+    public XASessionImpl(RepositoryImpl rep, Subject subject,
                             WorkspaceConfig wspConfig)
             throws AccessDeniedException, RepositoryException {
 
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeManagerImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeManagerImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeManagerImpl.java	(working copy)
@@ -49,7 +49,7 @@
 import org.apache.jackrabbit.commons.cnd.CompactNodeTypeDefReader;
 import org.apache.jackrabbit.commons.cnd.ParseException;
 import org.apache.jackrabbit.commons.iterator.NodeTypeIteratorAdapter;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.data.DataStore;
 import org.apache.jackrabbit.core.nodetype.xml.NodeTypeReader;
 import org.apache.jackrabbit.core.util.Dumpable;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/virtual/VirtualNodeTypeStateManager.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/virtual/VirtualNodeTypeStateManager.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/nodetype/virtual/VirtualNodeTypeStateManager.java	(working copy)
@@ -25,9 +25,9 @@
 import javax.jcr.PropertyIterator;
 import javax.jcr.RepositoryException;
 
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.PropertyImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.PropertyImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.nodetype.NodeTypeImpl;
 import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemImpl.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/ItemImpl.java	(revision 0)
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.core;
+
+import org.apache.jackrabbit.core.session.ItemData;
+import org.apache.jackrabbit.core.session.ItemManager;
+import org.apache.jackrabbit.core.session.SessionImpl;
+
+/**
+ * <code>ItemImpl</code> implements the <code>Item</code> interface.
+ */
+public abstract class ItemImpl
+        extends org.apache.jackrabbit.core.session.ItemImpl {
+
+    protected ItemImpl(ItemManager itemMgr, SessionImpl session, ItemData data) {
+        super(itemMgr, session, data);
+    }
+
+}
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authentication/DefaultLoginModule.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authentication/DefaultLoginModule.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authentication/DefaultLoginModule.java	(working copy)
@@ -19,7 +19,7 @@
 import org.apache.jackrabbit.api.security.user.Authorizable;
 import org.apache.jackrabbit.api.security.user.User;
 import org.apache.jackrabbit.api.security.user.UserManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProvider.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProvider.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProvider.java	(working copy)
@@ -23,7 +23,7 @@
 import org.apache.jackrabbit.api.security.user.Authorizable;
 import org.apache.jackrabbit.api.security.user.Group;
 import org.apache.jackrabbit.api.security.user.UserManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.SystemPrincipal;
 import org.apache.jackrabbit.core.security.user.UserManagerImpl;
 import org.apache.jackrabbit.spi.commons.conversion.NameResolver;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/simple/SimpleSecurityManager.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/simple/SimpleSecurityManager.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/simple/SimpleSecurityManager.java	(working copy)
@@ -39,7 +39,7 @@
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
 import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.core.RepositoryImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.config.AccessManagerConfig;
 import org.apache.jackrabbit.core.config.LoginModuleConfig;
 import org.apache.jackrabbit.core.config.SecurityConfig;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/combined/CombinedProvider.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/combined/CombinedProvider.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/combined/CombinedProvider.java	(working copy)
@@ -24,7 +24,7 @@
 import org.apache.jackrabbit.core.security.authorization.AccessControlUtils;
 import org.apache.jackrabbit.core.security.authorization.AbstractCompiledPermissions;
 import org.apache.jackrabbit.core.security.authorization.principalbased.ACLProvider;
-import org.apache.jackrabbit.core.ItemImpl;
+import org.apache.jackrabbit.core.session.ItemImpl;
 import org.apache.jackrabbit.spi.Path;
 import org.apache.jackrabbit.spi.commons.name.PathFactoryImpl;
 import javax.jcr.security.AccessControlPolicy;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/principalbased/ACLEditor.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/principalbased/ACLEditor.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/principalbased/ACLEditor.java	(working copy)
@@ -24,9 +24,9 @@
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlEntry;
 import org.apache.jackrabbit.api.security.user.Authorizable;
 import org.apache.jackrabbit.api.security.user.UserManager;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.ProtectedItemModifier;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.ProtectedItemModifier;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.authorization.AccessControlConstants;
 import org.apache.jackrabbit.core.security.authorization.AccessControlEditor;
 import org.apache.jackrabbit.core.security.authorization.Permission;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/principalbased/ACLProvider.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/principalbased/ACLProvider.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/principalbased/ACLProvider.java	(working copy)
@@ -41,9 +41,9 @@
 import javax.jcr.security.Privilege;
 
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
-import org.apache.jackrabbit.core.ItemImpl;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.ItemImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.observation.SynchronousEventListener;
 import org.apache.jackrabbit.core.security.SecurityConstants;
 import org.apache.jackrabbit.core.security.authorization.AbstractAccessControlProvider;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/principalbased/ACLTemplate.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/principalbased/ACLTemplate.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/principalbased/ACLTemplate.java	(working copy)
@@ -17,8 +17,8 @@
 package org.apache.jackrabbit.core.security.authorization.principalbased;
 
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.authorization.AccessControlEntryImpl;
 import org.apache.jackrabbit.core.security.authorization.AbstractACLTemplate;
 import org.apache.jackrabbit.spi.Name;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/AbstractAccessControlProvider.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/AbstractAccessControlProvider.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/AbstractAccessControlProvider.java	(working copy)
@@ -25,7 +25,7 @@
 import javax.jcr.observation.ObservationManager;
 import javax.jcr.security.Privilege;
 
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.SystemPrincipal;
 import org.apache.jackrabbit.core.security.principal.AdminPrincipal;
 import org.apache.jackrabbit.spi.Path;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/acl/ACLEditor.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/acl/ACLEditor.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/acl/ACLEditor.java	(working copy)
@@ -18,9 +18,9 @@
 
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlEntry;
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlPolicy;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.ProtectedItemModifier;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.ProtectedItemModifier;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.authorization.AccessControlConstants;
 import org.apache.jackrabbit.core.security.authorization.AccessControlEditor;
 import org.apache.jackrabbit.core.security.authorization.AccessControlUtils;
@@ -76,7 +76,7 @@
             // TODO: review and find better solution
             privilegeRegistry = new PrivilegeRegistry(session);
         } else {
-            throw new IllegalArgumentException("org.apache.jackrabbit.core.SessionImpl expected. Found " + editingSession.getClass());
+            throw new IllegalArgumentException("org.apache.jackrabbit.core.session.SessionImpl expected. Found " + editingSession.getClass());
         }
         this.utils = utils;
     }
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/acl/ACLProvider.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/acl/ACLProvider.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/acl/ACLProvider.java	(working copy)
@@ -37,10 +37,10 @@
 import javax.jcr.security.Privilege;
 
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
-import org.apache.jackrabbit.core.ItemImpl;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.PropertyImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.ItemImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.PropertyImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.observation.SynchronousEventListener;
 import org.apache.jackrabbit.core.security.SecurityConstants;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/acl/ACLTemplate.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/acl/ACLTemplate.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/acl/ACLTemplate.java	(working copy)
@@ -34,8 +34,8 @@
 
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.authorization.AbstractACLTemplate;
 import org.apache.jackrabbit.core.security.authorization.AccessControlConstants;
 import org.apache.jackrabbit.core.security.authorization.AccessControlEntryImpl;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/AccessControlUtils.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/AccessControlUtils.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/AccessControlUtils.java	(working copy)
@@ -17,7 +17,7 @@
 package org.apache.jackrabbit.core.security.authorization;
 
 import org.apache.jackrabbit.spi.Path;
-import org.apache.jackrabbit.core.ItemImpl;
+import org.apache.jackrabbit.core.session.ItemImpl;
 
 import javax.jcr.RepositoryException;
 
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/AccessControlProviderFactoryImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/AccessControlProviderFactoryImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/AccessControlProviderFactoryImpl.java	(working copy)
@@ -20,7 +20,7 @@
 import org.apache.jackrabbit.core.config.WorkspaceSecurityConfig;
 import org.apache.jackrabbit.core.security.authorization.acl.ACLProvider;
 import org.apache.jackrabbit.core.security.user.UserAccessControlProvider;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.RepositoryImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserImpl.java	(working copy)
@@ -19,7 +19,7 @@
 import org.apache.jackrabbit.api.security.principal.ItemBasedPrincipal;
 import org.apache.jackrabbit.api.security.user.Impersonation;
 import org.apache.jackrabbit.api.security.user.User;
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 import org.apache.jackrabbit.core.security.authentication.CryptedSimpleCredentials;
 import org.apache.jackrabbit.core.security.principal.AdminPrincipal;
 
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserImporter.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserImporter.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserImporter.java	(working copy)
@@ -23,8 +23,8 @@
 import org.apache.jackrabbit.api.security.user.User;
 import org.apache.jackrabbit.api.security.user.Impersonation;
 import org.apache.jackrabbit.api.security.principal.PrincipalIterator;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.xml.DefaultProtectedPropertyImporter;
 import org.apache.jackrabbit.core.xml.PropInfo;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/ImpersonationImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/ImpersonationImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/ImpersonationImpl.java	(working copy)
@@ -28,8 +28,8 @@
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
 import org.apache.jackrabbit.api.security.user.Authorizable;
 import org.apache.jackrabbit.api.security.user.Impersonation;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.PropertyImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.PropertyImpl;
 import org.apache.jackrabbit.core.security.SystemPrincipal;
 import org.apache.jackrabbit.core.security.principal.AdminPrincipal;
 import org.apache.jackrabbit.core.security.principal.PrincipalImpl;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/AuthorizableImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/AuthorizableImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/AuthorizableImpl.java	(working copy)
@@ -20,9 +20,9 @@
 import org.apache.jackrabbit.api.security.user.Authorizable;
 import org.apache.jackrabbit.api.security.user.Group;
 import org.apache.jackrabbit.api.security.user.User;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.SessionImpl;
-import org.apache.jackrabbit.core.PropertyImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
+import org.apache.jackrabbit.core.session.PropertyImpl;
 import org.apache.jackrabbit.core.nodetype.NodeTypeImpl;
 import org.apache.jackrabbit.core.security.principal.PrincipalImpl;
 import org.apache.jackrabbit.spi.Name;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserManagerImpl.java	(working copy)
@@ -22,11 +22,12 @@
 import org.apache.jackrabbit.api.security.user.User;
 import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.api.security.principal.ItemBasedPrincipal;
-import org.apache.jackrabbit.core.ItemImpl;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.ProtectedItemModifier;
-import org.apache.jackrabbit.core.SessionImpl;
-import org.apache.jackrabbit.core.SessionListener;
+import org.apache.jackrabbit.core.session.ItemImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.ProtectedItemModifier;
+import org.apache.jackrabbit.core.session.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionListener;
+import org.apache.jackrabbit.core.session.SystemSession;
 import org.apache.jackrabbit.core.security.principal.PrincipalImpl;
 import org.apache.jackrabbit.core.security.SystemPrincipal;
 import org.apache.jackrabbit.core.id.NodeId;
@@ -300,7 +301,7 @@
          * workaround: compare the class name and check if the subject contains
          * the system principal.
          */
-        isSystemUserManager = "org.apache.jackrabbit.core.SystemSession".equals(session.getClass().getName()) && 
+        isSystemUserManager = session instanceof SystemSession &&
                 !session.getSubject().getPrincipals(SystemPrincipal.class).isEmpty();
     }
     
@@ -809,14 +810,14 @@
 
     //----------------------------------------------------< SessionListener >---
     /**
-     * @see SessionListener#loggingOut(org.apache.jackrabbit.core.SessionImpl)
+     * @see SessionListener#loggingOut(org.apache.jackrabbit.core.session.SessionImpl)
      */
     public void loggingOut(SessionImpl session) {
         // nothing to do.
     }
 
     /**
-     * @see SessionListener#loggedOut(org.apache.jackrabbit.core.SessionImpl)
+     * @see SessionListener#loggedOut(org.apache.jackrabbit.core.session.SessionImpl)
      */
     public void loggedOut(SessionImpl session) {
         // and logout the session unless it is the logged-out session itself.
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/TraversingNodeResolver.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/TraversingNodeResolver.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/TraversingNodeResolver.java	(working copy)
@@ -18,7 +18,7 @@
 package org.apache.jackrabbit.core.security.user;
 
 import org.apache.jackrabbit.commons.iterator.NodeIteratorAdapter;
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 import org.apache.jackrabbit.spi.Name;
 import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
 import org.slf4j.Logger;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserAccessControlProvider.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserAccessControlProvider.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserAccessControlProvider.java	(working copy)
@@ -21,9 +21,9 @@
 import org.apache.jackrabbit.api.security.user.Authorizable;
 import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.api.security.principal.ItemBasedPrincipal;
-import org.apache.jackrabbit.core.ItemImpl;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.ItemImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.observation.SynchronousEventListener;
 import org.apache.jackrabbit.core.security.authorization.AbstractAccessControlProvider;
 import org.apache.jackrabbit.core.security.authorization.AbstractCompiledPermissions;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/GroupImpl.java	(working copy)
@@ -20,8 +20,8 @@
 import org.apache.jackrabbit.api.security.user.Group;
 import org.apache.jackrabbit.api.security.user.User;
 import org.apache.jackrabbit.api.security.user.UserManager;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.PropertyImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.PropertyImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserPerWorkspaceUserManager.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserPerWorkspaceUserManager.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/UserPerWorkspaceUserManager.java	(working copy)
@@ -16,7 +16,7 @@
  */
 package org.apache.jackrabbit.core.security.user;
 
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/UserPerWorkspaceSecurityManager.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/UserPerWorkspaceSecurityManager.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/UserPerWorkspaceSecurityManager.java	(working copy)
@@ -28,6 +28,8 @@
 import org.apache.jackrabbit.core.security.simple.SimpleWorkspaceAccessManager;
 import org.apache.jackrabbit.core.security.user.UserPerWorkspaceUserManager;
 import org.apache.jackrabbit.core.security.user.UserManagerImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
+import org.apache.jackrabbit.core.session.SystemSession;
 
 import javax.jcr.Credentials;
 import javax.jcr.Repository;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/VersionManagerImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/VersionManagerImpl.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/VersionManagerImpl.java	(revision 0)
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.core;
+
+import org.apache.jackrabbit.core.session.SessionImpl;
+import org.apache.jackrabbit.core.state.UpdatableItemStateManager;
+
+/**
+ * Implementation of the {@link javax.jcr.version.VersionManager}.
+ * <p/>
+ * This class implements the JCR Version Manager interface but most of the
+ * operations are performed in the super classes. this is only cosmetic to
+ * avoid huge source files.
+ */
+public class VersionManagerImpl
+        extends org.apache.jackrabbit.core.session.VersionManagerImpl {
+
+    public VersionManagerImpl(
+            SessionImpl session, UpdatableItemStateManager stateMgr,
+            HierarchyManager hierMgr) {
+        super(session, stateMgr, hierMgr);
+    }
+
+}
\ No newline at end of file
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SearchManager.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SearchManager.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SearchManager.java	(working copy)
@@ -47,6 +47,8 @@
 import org.apache.jackrabbit.core.query.QueryHandlerContext;
 import org.apache.jackrabbit.core.query.QueryHandlerFactory;
 import org.apache.jackrabbit.core.query.QueryObjectModelImpl;
+import org.apache.jackrabbit.core.session.ItemManager;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.state.ItemStateException;
 import org.apache.jackrabbit.core.state.NodeState;
 import org.apache.jackrabbit.core.state.SharedItemStateManager;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java	(revision 0)
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.core;
+
+import javax.jcr.AccessDeniedException;
+import javax.jcr.RepositoryException;
+import javax.security.auth.Subject;
+
+import org.apache.jackrabbit.core.config.WorkspaceConfig;
+import org.apache.jackrabbit.core.security.authentication.AuthContext;
+
+/**
+ * A <code>SessionImpl</code> ...
+ */
+public class SessionImpl
+        extends org.apache.jackrabbit.core.session.SessionImpl {
+
+    protected SessionImpl(
+            RepositoryImpl rep, AuthContext loginContext, WorkspaceConfig wspConfig)
+            throws AccessDeniedException, RepositoryException {
+        super(rep, loginContext, wspConfig);
+    }
+
+    protected SessionImpl(
+            RepositoryImpl rep, Subject subject, WorkspaceConfig wspConfig)
+            throws AccessDeniedException, RepositoryException {
+        super(rep, subject, wspConfig);
+    }
+
+}
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/LockManager.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/LockManager.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/LockManager.java	(working copy)
@@ -16,8 +16,8 @@
  */
 package org.apache.jackrabbit.core.lock;
 
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.spi.Path;
 
 import javax.jcr.RepositoryException;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/XALockImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/XALockImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/XALockImpl.java	(working copy)
@@ -16,7 +16,7 @@
  */
 package org.apache.jackrabbit.core.lock;
 
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 
 import javax.jcr.RepositoryException;
 
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/LockInfo.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/LockInfo.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/LockInfo.java	(working copy)
@@ -16,7 +16,7 @@
  */
 package org.apache.jackrabbit.core.lock;
 
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.id.NodeId;
 
 import javax.jcr.RepositoryException;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/LockManagerImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/LockManagerImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/LockManagerImpl.java	(working copy)
@@ -21,12 +21,12 @@
 import org.apache.commons.io.IOUtils;
 import org.apache.jackrabbit.core.id.ItemId;
 import org.apache.jackrabbit.core.id.NodeId;
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 import org.apache.jackrabbit.core.id.PropertyId;
-import org.apache.jackrabbit.core.SessionImpl;
-import org.apache.jackrabbit.core.SessionListener;
+import org.apache.jackrabbit.core.session.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionListener;
 import org.apache.jackrabbit.core.TransactionContext;
-import org.apache.jackrabbit.core.WorkspaceImpl;
+import org.apache.jackrabbit.core.session.WorkspaceImpl;
 import org.apache.jackrabbit.core.cluster.ClusterOperation;
 import org.apache.jackrabbit.core.cluster.LockEventChannel;
 import org.apache.jackrabbit.core.cluster.LockEventListener;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/SessionLockManager.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/SessionLockManager.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/SessionLockManager.java	(working copy)
@@ -17,9 +17,9 @@
 package org.apache.jackrabbit.core.lock;
 
 import javax.jcr.lock.Lock;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.SessionImpl;
-import org.apache.jackrabbit.core.ItemValidator;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
+import org.apache.jackrabbit.core.session.ItemValidator;
 import org.apache.jackrabbit.core.security.authorization.Permission;
 import org.apache.jackrabbit.spi.commons.name.NameConstants;
 import org.slf4j.Logger;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/LockImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/LockImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/LockImpl.java	(working copy)
@@ -16,8 +16,8 @@
  */
 package org.apache.jackrabbit.core.lock;
 
-import org.apache.jackrabbit.core.SessionImpl;
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 import org.apache.jackrabbit.core.security.authorization.Permission;
 
 import javax.jcr.Node;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/XALockManager.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/XALockManager.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/XALockManager.java	(working copy)
@@ -17,8 +17,8 @@
 package org.apache.jackrabbit.core.lock;
 
 import org.apache.jackrabbit.core.InternalXAResource;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.TransactionContext;
 import org.apache.jackrabbit.core.TransactionException;
 import org.apache.jackrabbit.spi.Path;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/XAEnvironment.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/XAEnvironment.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/lock/XAEnvironment.java	(working copy)
@@ -17,9 +17,9 @@
 package org.apache.jackrabbit.core.lock;
 
 import org.apache.jackrabbit.core.TransactionException;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.SessionImpl;
-import org.apache.jackrabbit.core.XAWorkspace;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
+import org.apache.jackrabbit.core.session.XAWorkspace;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/GarbageCollector.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/GarbageCollector.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/data/GarbageCollector.java	(working copy)
@@ -21,8 +21,8 @@
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.id.PropertyId;
 import org.apache.jackrabbit.core.RepositoryImpl;
-import org.apache.jackrabbit.core.SessionImpl;
-import org.apache.jackrabbit.core.SessionListener;
+import org.apache.jackrabbit.core.session.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionListener;
 import org.apache.jackrabbit.core.observation.SynchronousEventListener;
 import org.apache.jackrabbit.core.persistence.IterablePersistenceManager;
 import org.apache.jackrabbit.core.state.ItemStateException;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/JackrabbitRepositoryStub.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/JackrabbitRepositoryStub.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/JackrabbitRepositoryStub.java	(working copy)
@@ -33,6 +33,7 @@
 
 import org.apache.commons.io.IOUtils;
 import org.apache.jackrabbit.core.config.RepositoryConfig;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.test.NotExecutableException;
 import org.apache.jackrabbit.test.RepositoryStub;
 import org.apache.jackrabbit.test.RepositoryStubException;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryManagerImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryManagerImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryManagerImpl.java	(working copy)
@@ -27,6 +27,8 @@
 import org.apache.jackrabbit.core.data.GarbageCollector;
 import org.apache.jackrabbit.core.persistence.IterablePersistenceManager;
 import org.apache.jackrabbit.core.persistence.PersistenceManager;
+import org.apache.jackrabbit.core.session.SessionImpl;
+import org.apache.jackrabbit.core.session.SystemSession;
 import org.apache.jackrabbit.core.version.InternalVersionManagerImpl;
 
 /**
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionImpl.java	(working copy)
@@ -16,11 +16,11 @@
  */
 package org.apache.jackrabbit.core.version;
 
-import org.apache.jackrabbit.core.ItemManager;
-import org.apache.jackrabbit.core.AbstractNodeData;
+import org.apache.jackrabbit.core.session.ItemManager;
+import org.apache.jackrabbit.core.session.AbstractNodeData;
 import org.apache.jackrabbit.core.id.NodeId;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import javax.jcr.version.Version;
 import javax.jcr.version.VersionHistory;
 import org.slf4j.Logger;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionIteratorImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionIteratorImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionIteratorImpl.java	(working copy)
@@ -17,7 +17,7 @@
 package org.apache.jackrabbit.core.version;
 
 import org.apache.jackrabbit.core.id.NodeId;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImplMerge.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImplMerge.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImplMerge.java	(working copy)
@@ -32,8 +32,8 @@
 import javax.jcr.version.VersionException;
 
 import org.apache.jackrabbit.core.HierarchyManager;
-import org.apache.jackrabbit.core.ItemValidator;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.ItemValidator;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.id.ItemId;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.security.authorization.Permission;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImplConfig.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImplConfig.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImplConfig.java	(working copy)
@@ -25,7 +25,7 @@
 
 import org.apache.jackrabbit.core.HierarchyManager;
 import org.apache.jackrabbit.core.RepositoryImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.state.ItemStateException;
 import org.apache.jackrabbit.core.state.UpdatableItemStateManager;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionHistoryImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionHistoryImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionHistoryImpl.java	(working copy)
@@ -16,11 +16,10 @@
  */
 package org.apache.jackrabbit.core.version;
 
-import org.apache.jackrabbit.core.AbstractNodeData;
-import org.apache.jackrabbit.core.ItemManager;
+import org.apache.jackrabbit.core.session.AbstractNodeData;
+import org.apache.jackrabbit.core.session.ItemManager;
 import org.apache.jackrabbit.core.id.NodeId;
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.authorization.Permission;
 import org.apache.jackrabbit.spi.Name;
 import org.apache.jackrabbit.spi.commons.conversion.NameException;
@@ -46,7 +45,9 @@
 /**
  * Base implementation of the {@link javax.jcr.version.VersionHistory} interface.
  */
-public class VersionHistoryImpl extends NodeImpl implements VersionHistory {
+@SuppressWarnings("deprecation")
+public class VersionHistoryImpl
+        extends org.apache.jackrabbit.core.NodeImpl implements VersionHistory {
 
     /**
      * Logger instance.
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/InternalVersionManagerImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/InternalVersionManagerImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/InternalVersionManagerImpl.java	(working copy)
@@ -29,7 +29,7 @@
 import javax.jcr.version.VersionException;
 
 import org.apache.commons.collections.map.ReferenceMap;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.cluster.UpdateEventChannel;
 import org.apache.jackrabbit.core.cluster.UpdateEventListener;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImplRestore.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImplRestore.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImplRestore.java	(working copy)
@@ -31,8 +31,8 @@
 import javax.jcr.version.VersionManager;
 
 import org.apache.jackrabbit.core.HierarchyManager;
-import org.apache.jackrabbit.core.ItemValidator;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.ItemValidator;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.security.authorization.Permission;
 import org.apache.jackrabbit.core.state.ChildNodeEntry;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/InternalXAVersionManager.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/InternalXAVersionManager.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/InternalXAVersionManager.java	(working copy)
@@ -25,7 +25,7 @@
 import javax.jcr.version.VersionException;
 
 import org.apache.jackrabbit.core.InternalXAResource;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.TransactionContext;
 import org.apache.jackrabbit.core.TransactionException;
 import org.apache.jackrabbit.core.id.ItemId;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/NodeStateEx.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/NodeStateEx.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/NodeStateEx.java	(working copy)
@@ -26,7 +26,7 @@
 import javax.jcr.nodetype.ConstraintViolationException;
 import javax.jcr.nodetype.NoSuchNodeTypeException;
 
-import org.apache.jackrabbit.core.PropertyImpl;
+import org.apache.jackrabbit.core.session.PropertyImpl;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.id.PropertyId;
 import org.apache.jackrabbit.core.nodetype.EffectiveNodeType;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImplBase.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImplBase.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/VersionManagerImplBase.java	(working copy)
@@ -29,8 +29,8 @@
 import javax.jcr.version.Version;
 
 import org.apache.jackrabbit.core.HierarchyManager;
-import org.apache.jackrabbit.core.SessionImpl;
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 import org.apache.jackrabbit.core.value.InternalValue;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/DefaultSecurityManager.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/DefaultSecurityManager.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/DefaultSecurityManager.java	(working copy)
@@ -62,6 +62,8 @@
 import org.apache.jackrabbit.core.security.principal.PrincipalProviderRegistry;
 import org.apache.jackrabbit.core.security.principal.ProviderRegistryImpl;
 import org.apache.jackrabbit.core.security.user.UserManagerImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
+import org.apache.jackrabbit.core.session.SystemSession;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/EventImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/EventImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/EventImpl.java	(working copy)
@@ -22,7 +22,7 @@
 import org.apache.jackrabbit.api.observation.JackrabbitEvent;
 import javax.jcr.observation.Event;
 import org.apache.jackrabbit.core.id.NodeId;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.value.InternalValue;
 import org.apache.jackrabbit.spi.commons.conversion.MalformedPathException;
 import org.apache.jackrabbit.spi.Path;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/ObservationManagerImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/ObservationManagerImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/ObservationManagerImpl.java	(working copy)
@@ -16,8 +16,8 @@
  */
 package org.apache.jackrabbit.core.observation;
 
-import org.apache.jackrabbit.core.ItemManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.ItemManager;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.cluster.ClusterNode;
 import org.apache.jackrabbit.core.nodetype.NodeTypeImpl;
@@ -85,7 +85,7 @@
      * @param dispatcher observation dispatcher
      * @param session the <code>Session</code> this ObservationManager
      *                belongs to.
-     * @param itemMgr {@link org.apache.jackrabbit.core.ItemManager} of the passed
+     * @param itemMgr {@link org.apache.jackrabbit.core.session.ItemManager} of the passed
      *                <code>Session</code>.
      * @throws NullPointerException if <code>dispatcher</code>, <code>session</code>
      *                              or <code>itemMgr</code> is <code>null</code>.
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/DelegatingObservationDispatcher.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/DelegatingObservationDispatcher.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/DelegatingObservationDispatcher.java	(working copy)
@@ -16,7 +16,7 @@
  */
 package org.apache.jackrabbit.core.observation;
 
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.state.ChangeLog;
 import org.apache.jackrabbit.spi.Path;
 import org.slf4j.Logger;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/EventFilter.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/EventFilter.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/EventFilter.java	(working copy)
@@ -19,8 +19,8 @@
 import java.util.Iterator;
 import java.util.Set;
 
-import org.apache.jackrabbit.core.ItemManager;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.ItemManager;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.nodetype.NodeTypeImpl;
 import org.apache.jackrabbit.spi.commons.conversion.MalformedPathException;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/EventConsumer.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/EventConsumer.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/EventConsumer.java	(working copy)
@@ -29,7 +29,7 @@
 import javax.jcr.observation.EventIterator;
 import javax.jcr.observation.EventListener;
 
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.id.ItemId;
 import org.apache.jackrabbit.core.state.ItemState;
 import org.apache.jackrabbit.spi.Path;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/EventStateCollection.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/EventStateCollection.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/observation/EventStateCollection.java	(working copy)
@@ -19,7 +19,7 @@
 import org.apache.jackrabbit.core.HierarchyManager;
 import org.apache.jackrabbit.core.id.ItemId;
 import org.apache.jackrabbit.core.id.NodeId;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.nodetype.NodeTypeImpl;
 import org.apache.jackrabbit.core.state.ChangeLog;
 import org.apache.jackrabbit.core.state.ItemState;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/WorkspaceImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/WorkspaceImpl.java	(revision 0)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/WorkspaceImpl.java	(revision 0)
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.core;
+
+import org.apache.jackrabbit.core.config.WorkspaceConfig;
+import org.apache.jackrabbit.core.session.SessionImpl;
+import org.apache.jackrabbit.core.state.SharedItemStateManager;
+
+/**
+ * A <code>WorkspaceImpl</code> ...
+ */
+public class WorkspaceImpl
+        extends org.apache.jackrabbit.core.session.WorkspaceImpl {
+
+    public WorkspaceImpl(
+            WorkspaceConfig wspConfig, SharedItemStateManager stateMgr,
+            RepositoryImpl rep, SessionImpl session) {
+        super(wspConfig, stateMgr, rep, session);
+    }
+
+}
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/SessionImporter.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/SessionImporter.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/SessionImporter.java	(working copy)
@@ -33,8 +33,8 @@
 import javax.jcr.nodetype.ConstraintViolationException;
 import javax.jcr.nodetype.NodeDefinition;
 
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.config.ImportConfig;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.security.authorization.Permission;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/ProtectedPropertyImporter.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/ProtectedPropertyImporter.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/ProtectedPropertyImporter.java	(working copy)
@@ -18,7 +18,7 @@
 
 import javax.jcr.RepositoryException;
 
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 import org.apache.jackrabbit.core.util.ReferenceChangeTracker;
 import org.apache.jackrabbit.core.state.NodeState;
 import org.apache.jackrabbit.spi.QPropertyDefinition;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/WorkspaceImporter.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/WorkspaceImporter.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/WorkspaceImporter.java	(working copy)
@@ -31,10 +31,10 @@
 import javax.jcr.nodetype.ConstraintViolationException;
 import javax.jcr.version.VersionException;
 
-import org.apache.jackrabbit.core.BatchedItemOperations;
+import org.apache.jackrabbit.core.session.BatchedItemOperations;
 import org.apache.jackrabbit.core.HierarchyManager;
-import org.apache.jackrabbit.core.SessionImpl;
-import org.apache.jackrabbit.core.WorkspaceImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
+import org.apache.jackrabbit.core.session.WorkspaceImpl;
 import org.apache.jackrabbit.core.config.ImportConfig;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.id.PropertyId;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/ProtectedNodeImporter.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/ProtectedNodeImporter.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/ProtectedNodeImporter.java	(working copy)
@@ -16,7 +16,7 @@
  */
 package org.apache.jackrabbit.core.xml;
 
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 import org.apache.jackrabbit.core.util.ReferenceChangeTracker;
 import org.apache.jackrabbit.core.state.NodeState;
 import org.apache.jackrabbit.api.JackrabbitSession;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/AccessControlImporter.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/AccessControlImporter.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/AccessControlImporter.java	(working copy)
@@ -40,7 +40,7 @@
 import org.apache.jackrabbit.api.JackrabbitSession;
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlManager;
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 import org.apache.jackrabbit.core.util.ReferenceChangeTracker;
 import org.apache.jackrabbit.core.id.NodeId;
 import org.apache.jackrabbit.core.security.authorization.AccessControlConstants;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/DefaultProtectedPropertyImporter.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/DefaultProtectedPropertyImporter.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/DefaultProtectedPropertyImporter.java	(working copy)
@@ -18,7 +18,7 @@
 
 import javax.jcr.RepositoryException;
 
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 import org.apache.jackrabbit.core.util.ReferenceChangeTracker;
 import org.apache.jackrabbit.core.state.NodeState;
 import org.apache.jackrabbit.api.JackrabbitSession;
@@ -57,7 +57,7 @@
     /**
      * Always returns <code>false</code>.
      *
-     * @see ProtectedPropertyImporter#handlePropInfo(org.apache.jackrabbit.core.NodeImpl, PropInfo, QPropertyDefinition)
+     * @see ProtectedPropertyImporter#handlePropInfo(NodeImpl, PropInfo, QPropertyDefinition)
      */
     public boolean handlePropInfo(NodeImpl parent, PropInfo protectedPropInfo, QPropertyDefinition def) throws RepositoryException {
         return false;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/DefaultProtectedNodeImporter.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/DefaultProtectedNodeImporter.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/DefaultProtectedNodeImporter.java	(working copy)
@@ -20,7 +20,7 @@
 
 import javax.jcr.RepositoryException;
 
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 import org.apache.jackrabbit.core.util.ReferenceChangeTracker;
 import org.apache.jackrabbit.core.state.NodeState;
 import org.apache.jackrabbit.api.JackrabbitSession;
@@ -52,7 +52,7 @@
     /**
      * Always returns <code>false</code>.
      *
-     * @see ProtectedNodeImporter#start(org.apache.jackrabbit.core.NodeImpl)
+     * @see ProtectedNodeImporter#start(NodeImpl)
      */
     public boolean start(NodeImpl protectedParent) throws RepositoryException {
         return false;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/PropInfo.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/PropInfo.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/PropInfo.java	(working copy)
@@ -21,7 +21,7 @@
 import javax.jcr.Value;
 import javax.jcr.nodetype.ConstraintViolationException;
 
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 import org.apache.jackrabbit.core.nodetype.EffectiveNodeType;
 import org.apache.jackrabbit.core.state.NodeState;
 import org.apache.jackrabbit.spi.Name;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/retention/RetentionRegistryImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/retention/RetentionRegistryImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/retention/RetentionRegistryImpl.java	(working copy)
@@ -20,10 +20,10 @@
 import javax.jcr.retention.Hold;
 import javax.jcr.retention.RetentionPolicy;
 import org.apache.jackrabbit.core.id.NodeId;
-import org.apache.jackrabbit.core.NodeImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
 import org.apache.jackrabbit.core.id.PropertyId;
-import org.apache.jackrabbit.core.PropertyImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.PropertyImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.fs.FileSystem;
 import org.apache.jackrabbit.core.fs.FileSystemException;
 import org.apache.jackrabbit.core.fs.FileSystemResource;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/retention/RetentionManagerImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/retention/RetentionManagerImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/retention/RetentionManagerImpl.java	(working copy)
@@ -16,10 +16,10 @@
  */
 package org.apache.jackrabbit.core.retention;
 
-import org.apache.jackrabbit.core.NodeImpl;
-import org.apache.jackrabbit.core.PropertyImpl;
-import org.apache.jackrabbit.core.ProtectedItemModifier;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.NodeImpl;
+import org.apache.jackrabbit.core.session.PropertyImpl;
+import org.apache.jackrabbit.core.session.ProtectedItemModifier;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.core.security.authorization.Permission;
 import org.apache.jackrabbit.spi.Name;
 import org.apache.jackrabbit.spi.NameFactory;
Index: jackrabbit-core/src/main/java/org/apache/jackrabbit/core/retention/HoldImpl.java
===================================================================
--- jackrabbit-core/src/main/java/org/apache/jackrabbit/core/retention/HoldImpl.java	(revision 945141)
+++ jackrabbit-core/src/main/java/org/apache/jackrabbit/core/retention/HoldImpl.java	(working copy)
@@ -21,8 +21,8 @@
 import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl;
 import org.apache.jackrabbit.spi.commons.conversion.NameResolver;
 import org.apache.jackrabbit.core.id.NodeId;
-import org.apache.jackrabbit.core.PropertyImpl;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.PropertyImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import javax.jcr.retention.Hold;
 
 import javax.jcr.Value;
Index: jackrabbit-core/src/main/javadoc/org/apache/jackrabbit/core/package.html
===================================================================
--- jackrabbit-core/src/main/javadoc/org/apache/jackrabbit/core/package.html	(revision 945141)
+++ jackrabbit-core/src/main/javadoc/org/apache/jackrabbit/core/package.html	(working copy)
@@ -33,23 +33,23 @@
     </tr>
     <tr>
       <td>{@link javax.jcr.Session Session}</td>
-      <td>{@link org.apache.jackrabbit.core.SessionImpl SessionImpl}</td>
+      <td>{@link org.apache.jackrabbit.core.session.SessionImpl SessionImpl}</td>
     </tr>
     <tr>
       <td>{@link javax.jcr.Workspace Workspace}</td>
-      <td>{@link org.apache.jackrabbit.core.WorkspaceImpl WorkspaceImpl}</td>
+      <td>{@link org.apache.jackrabbit.core.session.WorkspaceImpl WorkspaceImpl}</td>
     </tr>
     <tr>
       <td>{@link javax.jcr.Item Item}</td>
-      <td>{@link org.apache.jackrabbit.core.ItemImpl ItemImpl}</td>
+      <td>{@link org.apache.jackrabbit.core.session.ItemImpl ItemImpl}</td>
     </tr>
     <tr>
       <td>{@link javax.jcr.Property Property}</td>
-      <td>{@link org.apache.jackrabbit.core.PropertyImpl PropertyImpl}</td>
+      <td>{@link org.apache.jackrabbit.core.session.PropertyImpl PropertyImpl}</td>
     </tr>
     <tr>
       <td>{@link javax.jcr.Node Node}</td>
-      <td>{@link org.apache.jackrabbit.core.NodeImpl NodeImpl}</td>
+      <td>{@link org.apache.jackrabbit.core.session.NodeImpl NodeImpl}</td>
     </tr>
   </tbody>
 </table>
Index: jackrabbit-jcr-rmi/src/test/java/org/apache/jackrabbit/rmi/RepositoryStubImpl.java
===================================================================
--- jackrabbit-jcr-rmi/src/test/java/org/apache/jackrabbit/rmi/RepositoryStubImpl.java	(revision 945141)
+++ jackrabbit-jcr-rmi/src/test/java/org/apache/jackrabbit/rmi/RepositoryStubImpl.java	(working copy)
@@ -31,7 +31,7 @@
 import javax.jcr.SimpleCredentials;
 
 import org.apache.jackrabbit.core.JackrabbitRepositoryStub;
-import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.session.SessionImpl;
 import org.apache.jackrabbit.rmi.client.ClientAdapterFactory;
 import org.apache.jackrabbit.rmi.client.LocalAdapterFactory;
 import org.apache.jackrabbit.rmi.remote.RemoteRepository;
