diff --git a/src/main/java/com/google/gwtorm/jdbc/gen/AccessGen.java b/src/main/java/com/google/gwtorm/jdbc/AccessGen.java
similarity index 98%
rename from src/main/java/com/google/gwtorm/jdbc/gen/AccessGen.java
rename to src/main/java/com/google/gwtorm/jdbc/AccessGen.java
index f8496de..ea1412f 100644
--- a/src/main/java/com/google/gwtorm/jdbc/gen/AccessGen.java
+++ b/src/main/java/com/google/gwtorm/jdbc/AccessGen.java
@@ -12,20 +12,19 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.google.gwtorm.jdbc.gen;
+package com.google.gwtorm.jdbc;
 
 import com.google.gwtorm.client.Access;
 import com.google.gwtorm.client.Key;
 import com.google.gwtorm.client.OrmException;
 import com.google.gwtorm.client.impl.ListResultSet;
-import com.google.gwtorm.jdbc.JdbcAccess;
-import com.google.gwtorm.jdbc.JdbcSchema;
 import com.google.gwtorm.schema.ColumnModel;
 import com.google.gwtorm.schema.KeyModel;
 import com.google.gwtorm.schema.QueryModel;
 import com.google.gwtorm.schema.RelationModel;
 import com.google.gwtorm.schema.Util;
 import com.google.gwtorm.schema.sql.SqlDialect;
+import com.google.gwtorm.server.CodeGenSupport;
 import com.google.gwtorm.server.GeneratedClassLoader;
 
 import org.objectweb.asm.ClassWriter;
@@ -43,7 +42,7 @@
 import java.util.List;
 
 /** Generates a concrete implementation of an {@link Access} extension. */
-public class AccessGen implements Opcodes {
+class AccessGen implements Opcodes {
   private static final String REL_ALIAS = "T";
 
   private static enum DmlType {
@@ -70,8 +69,7 @@
   private String implTypeName;
   private Type entityType;
 
-
-  public AccessGen(final GeneratedClassLoader loader,
+  AccessGen(final GeneratedClassLoader loader,
       final RelationModel rm, final SqlDialect sd) {
     classLoader = loader;
     model = rm;
@@ -80,7 +78,7 @@
         Type.getObjectType(model.getEntityTypeClassName().replace('.', '/'));
   }
 
-  public <A extends Access<?, ?>> Class<A> create() throws OrmException {
+  <A extends Access<?, ?>> Class<A> create() throws OrmException {
     init();
     implementConstructor();
     implementGetString("getRelationName", model.getRelationName());
diff --git a/src/main/java/com/google/gwtorm/jdbc/Database.java b/src/main/java/com/google/gwtorm/jdbc/Database.java
index 976998b..e1982d5 100644
--- a/src/main/java/com/google/gwtorm/jdbc/Database.java
+++ b/src/main/java/com/google/gwtorm/jdbc/Database.java
@@ -19,7 +19,6 @@
 import com.google.gwtorm.client.OrmException;
 import com.google.gwtorm.client.Schema;
 import com.google.gwtorm.client.SchemaFactory;
-import com.google.gwtorm.jdbc.gen.AccessGen;
 import com.google.gwtorm.schema.RelationModel;
 import com.google.gwtorm.schema.SchemaModel;
 import com.google.gwtorm.schema.java.JavaSchemaModel;
diff --git a/src/main/java/com/google/gwtorm/protobuf/CodecGen.java b/src/main/java/com/google/gwtorm/protobuf/CodecGen.java
index 9c9ed27..05e5d6d 100644
--- a/src/main/java/com/google/gwtorm/protobuf/CodecGen.java
+++ b/src/main/java/com/google/gwtorm/protobuf/CodecGen.java
@@ -16,10 +16,10 @@
 
 import com.google.gwtorm.client.Column;
 import com.google.gwtorm.client.OrmException;
-import com.google.gwtorm.jdbc.gen.CodeGenSupport;
 import com.google.gwtorm.schema.ColumnModel;
 import com.google.gwtorm.schema.Util;
 import com.google.gwtorm.schema.java.JavaColumnModel;
+import com.google.gwtorm.server.CodeGenSupport;
 import com.google.gwtorm.server.GeneratedClassLoader;
 import com.google.protobuf.ByteString;
 import com.google.protobuf.CodedInputStream;
diff --git a/src/main/java/com/google/gwtorm/schema/sql/SqlBooleanTypeInfo.java b/src/main/java/com/google/gwtorm/schema/sql/SqlBooleanTypeInfo.java
index afea6b3..57f8fe8 100644
--- a/src/main/java/com/google/gwtorm/schema/sql/SqlBooleanTypeInfo.java
+++ b/src/main/java/com/google/gwtorm/schema/sql/SqlBooleanTypeInfo.java
@@ -14,8 +14,8 @@
 
 package com.google.gwtorm.schema.sql;
 
-import com.google.gwtorm.jdbc.gen.CodeGenSupport;
 import com.google.gwtorm.schema.ColumnModel;
+import com.google.gwtorm.server.CodeGenSupport;
 
 import org.objectweb.asm.Label;
 import org.objectweb.asm.Opcodes;
diff --git a/src/main/java/com/google/gwtorm/schema/sql/SqlByteArrayTypeInfo.java b/src/main/java/com/google/gwtorm/schema/sql/SqlByteArrayTypeInfo.java
index 12ed53a..eb0f840 100644
--- a/src/main/java/com/google/gwtorm/schema/sql/SqlByteArrayTypeInfo.java
+++ b/src/main/java/com/google/gwtorm/schema/sql/SqlByteArrayTypeInfo.java
@@ -14,8 +14,8 @@
 
 package com.google.gwtorm.schema.sql;
 
-import com.google.gwtorm.jdbc.gen.CodeGenSupport;
 import com.google.gwtorm.schema.ColumnModel;
+import com.google.gwtorm.server.CodeGenSupport;
 
 import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.Type;
diff --git a/src/main/java/com/google/gwtorm/schema/sql/SqlCharTypeInfo.java b/src/main/java/com/google/gwtorm/schema/sql/SqlCharTypeInfo.java
index 890600f..510993a 100644
--- a/src/main/java/com/google/gwtorm/schema/sql/SqlCharTypeInfo.java
+++ b/src/main/java/com/google/gwtorm/schema/sql/SqlCharTypeInfo.java
@@ -14,8 +14,8 @@
 
 package com.google.gwtorm.schema.sql;
 
-import com.google.gwtorm.jdbc.gen.CodeGenSupport;
 import com.google.gwtorm.schema.ColumnModel;
+import com.google.gwtorm.server.CodeGenSupport;
 
 import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.Type;
diff --git a/src/main/java/com/google/gwtorm/schema/sql/SqlStringTypeInfo.java b/src/main/java/com/google/gwtorm/schema/sql/SqlStringTypeInfo.java
index 2ca7522..2c32f1e 100644
--- a/src/main/java/com/google/gwtorm/schema/sql/SqlStringTypeInfo.java
+++ b/src/main/java/com/google/gwtorm/schema/sql/SqlStringTypeInfo.java
@@ -15,8 +15,8 @@
 package com.google.gwtorm.schema.sql;
 
 import com.google.gwtorm.client.Column;
-import com.google.gwtorm.jdbc.gen.CodeGenSupport;
 import com.google.gwtorm.schema.ColumnModel;
+import com.google.gwtorm.server.CodeGenSupport;
 
 import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.Type;
diff --git a/src/main/java/com/google/gwtorm/schema/sql/SqlTypeInfo.java b/src/main/java/com/google/gwtorm/schema/sql/SqlTypeInfo.java
index ba9064e..f238541 100644
--- a/src/main/java/com/google/gwtorm/schema/sql/SqlTypeInfo.java
+++ b/src/main/java/com/google/gwtorm/schema/sql/SqlTypeInfo.java
@@ -14,8 +14,8 @@
 
 package com.google.gwtorm.schema.sql;
 
-import com.google.gwtorm.jdbc.gen.CodeGenSupport;
 import com.google.gwtorm.schema.ColumnModel;
+import com.google.gwtorm.server.CodeGenSupport;
 
 import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.Type;
diff --git a/src/main/java/com/google/gwtorm/jdbc/gen/CodeGenSupport.java b/src/main/java/com/google/gwtorm/server/CodeGenSupport.java
similarity index 98%
rename from src/main/java/com/google/gwtorm/jdbc/gen/CodeGenSupport.java
rename to src/main/java/com/google/gwtorm/server/CodeGenSupport.java
index 2d78ccc..71756ee 100644
--- a/src/main/java/com/google/gwtorm/jdbc/gen/CodeGenSupport.java
+++ b/src/main/java/com/google/gwtorm/server/CodeGenSupport.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.google.gwtorm.jdbc.gen;
+package com.google.gwtorm.server;
 
 import com.google.gwtorm.schema.ColumnModel;
 
@@ -197,7 +197,7 @@
     return Type.getObjectType(n.replace('.', '/'));
   }
 
-  static Type toType(final ColumnModel c) {
+  public static Type toType(final ColumnModel c) {
     if (c.isSqlPrimitive()) {
       return Type.getType(c.getPrimitiveType());
     }
