diff --git a/sandbox/src/main/java/org/springframework/ldap/pool/DelegatingContext.java b/sandbox/src/main/java/org/springframework/ldap/pool/DelegatingContext.java
index deb421fe..c7823098 100644
--- a/sandbox/src/main/java/org/springframework/ldap/pool/DelegatingContext.java
+++ b/sandbox/src/main/java/org/springframework/ldap/pool/DelegatingContext.java
@@ -30,7 +30,7 @@ import org.apache.commons.pool.KeyedObjectPool;
/**
* @author Eric Dalquist eric.dalquist@doit.wisc.edu
*/
-class DelegatingContext implements Context {
+public class DelegatingContext implements Context {
private KeyedObjectPool keyedObjectPool;
private Context delegateContext;
private final DirContextType dirContextType;
diff --git a/sandbox/src/main/java/org/springframework/ldap/pool/DelegatingDirContext.java b/sandbox/src/main/java/org/springframework/ldap/pool/DelegatingDirContext.java
index c8ab8a91..5fae8e5e 100644
--- a/sandbox/src/main/java/org/springframework/ldap/pool/DelegatingDirContext.java
+++ b/sandbox/src/main/java/org/springframework/ldap/pool/DelegatingDirContext.java
@@ -32,7 +32,7 @@ import org.apache.commons.pool.KeyedObjectPool;
/**
* @author Eric Dalquist eric.dalquist@doit.wisc.edu
*/
-class DelegatingDirContext extends DelegatingContext implements DirContext {
+public class DelegatingDirContext extends DelegatingContext implements DirContext {
private DirContext delegateDirContext;
public DelegatingDirContext(KeyedObjectPool keyedObjectPool, DirContext delegateDirContext, DirContextType dirContextType) {
diff --git a/sandbox/src/main/java/org/springframework/ldap/pool/DelegatingLdapContext.java b/sandbox/src/main/java/org/springframework/ldap/pool/DelegatingLdapContext.java
index 3ba492a5..dc63cd01 100644
--- a/sandbox/src/main/java/org/springframework/ldap/pool/DelegatingLdapContext.java
+++ b/sandbox/src/main/java/org/springframework/ldap/pool/DelegatingLdapContext.java
@@ -29,7 +29,7 @@ import org.apache.commons.pool.KeyedObjectPool;
/**
* @author Eric Dalquist eric.dalquist@doit.wisc.edu
*/
-class DelegatingLdapContext extends DelegatingDirContext implements LdapContext {
+public class DelegatingLdapContext extends DelegatingDirContext implements LdapContext {
private LdapContext delegateLdapContext;
public DelegatingLdapContext(KeyedObjectPool keyedObjectPool, LdapContext delegateLdapContext, DirContextType dirContextType) {
diff --git a/sandbox/src/main/java/org/springframework/ldap/pool/DirContextPoolableObjectFactory.java b/sandbox/src/main/java/org/springframework/ldap/pool/factory/DirContextPoolableObjectFactory.java
similarity index 95%
rename from sandbox/src/main/java/org/springframework/ldap/pool/DirContextPoolableObjectFactory.java
rename to sandbox/src/main/java/org/springframework/ldap/pool/factory/DirContextPoolableObjectFactory.java
index 405e4208..8f042dcf 100644
--- a/sandbox/src/main/java/org/springframework/ldap/pool/DirContextPoolableObjectFactory.java
+++ b/sandbox/src/main/java/org/springframework/ldap/pool/factory/DirContextPoolableObjectFactory.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.ldap.pool;
+package org.springframework.ldap.pool.factory;
import javax.naming.directory.DirContext;
@@ -23,6 +23,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.pool.BaseKeyedPoolableObjectFactory;
import org.springframework.ldap.core.ContextSource;
+import org.springframework.ldap.pool.DirContextType;
import org.springframework.ldap.pool.validation.DirContextValidator;
/**
diff --git a/sandbox/src/main/java/org/springframework/ldap/pool/PoolingContextSource.java b/sandbox/src/main/java/org/springframework/ldap/pool/factory/PoolingContextSource.java
similarity index 96%
rename from sandbox/src/main/java/org/springframework/ldap/pool/PoolingContextSource.java
rename to sandbox/src/main/java/org/springframework/ldap/pool/factory/PoolingContextSource.java
index 19339dc7..74403920 100644
--- a/sandbox/src/main/java/org/springframework/ldap/pool/PoolingContextSource.java
+++ b/sandbox/src/main/java/org/springframework/ldap/pool/factory/PoolingContextSource.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.ldap.pool;
+package org.springframework.ldap.pool.factory;
import java.util.HashMap;
import java.util.Map;
@@ -30,6 +30,9 @@ import org.apache.commons.pool.impl.GenericObjectPool;
import org.springframework.dao.DataAccessResourceFailureException;
import org.springframework.ldap.NamingException;
import org.springframework.ldap.core.ContextSource;
+import org.springframework.ldap.pool.DelegatingDirContext;
+import org.springframework.ldap.pool.DelegatingLdapContext;
+import org.springframework.ldap.pool.DirContextType;
import org.springframework.ldap.pool.validation.DirContextValidator;
/**
diff --git a/sandbox/src/test/java/org/springframework/ldap/pool/DirContextPoolableObjectFactoryTest.java b/sandbox/src/test/java/org/springframework/ldap/pool/factory/DirContextPoolableObjectFactoryTest.java
similarity index 95%
rename from sandbox/src/test/java/org/springframework/ldap/pool/DirContextPoolableObjectFactoryTest.java
rename to sandbox/src/test/java/org/springframework/ldap/pool/factory/DirContextPoolableObjectFactoryTest.java
index 1b5bbcc5..6ee17e49 100644
--- a/sandbox/src/test/java/org/springframework/ldap/pool/DirContextPoolableObjectFactoryTest.java
+++ b/sandbox/src/test/java/org/springframework/ldap/pool/factory/DirContextPoolableObjectFactoryTest.java
@@ -13,12 +13,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.springframework.ldap.pool;
+package org.springframework.ldap.pool.factory;
import javax.naming.directory.DirContext;
import org.easymock.MockControl;
import org.springframework.ldap.core.ContextSource;
+import org.springframework.ldap.pool.AbstractPoolTestCase;
+import org.springframework.ldap.pool.DirContextType;
import org.springframework.ldap.pool.validation.DirContextValidator;
/**
diff --git a/sandbox/src/test/java/org/springframework/ldap/pool/PoolingContextSourceTest.java b/sandbox/src/test/java/org/springframework/ldap/pool/factory/PoolingContextSourceTest.java
similarity index 96%
rename from sandbox/src/test/java/org/springframework/ldap/pool/PoolingContextSourceTest.java
rename to sandbox/src/test/java/org/springframework/ldap/pool/factory/PoolingContextSourceTest.java
index aaf3b668..6f6c0e4e 100644
--- a/sandbox/src/test/java/org/springframework/ldap/pool/PoolingContextSourceTest.java
+++ b/sandbox/src/test/java/org/springframework/ldap/pool/factory/PoolingContextSourceTest.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.springframework.ldap.pool;
+package org.springframework.ldap.pool.factory;
import javax.naming.directory.DirContext;
import javax.naming.ldap.LdapContext;
@@ -21,7 +21,8 @@ import javax.naming.ldap.LdapContext;
import org.easymock.MockControl;
import org.springframework.dao.DataAccessResourceFailureException;
import org.springframework.ldap.core.ContextSource;
-import org.springframework.ldap.pool.PoolingContextSource.WhenExhaustedAction;
+import org.springframework.ldap.pool.AbstractPoolTestCase;
+import org.springframework.ldap.pool.factory.PoolingContextSource.WhenExhaustedAction;
import org.springframework.ldap.pool.validation.DirContextValidator;
/**