diff --git a/ldapserver/__init__.py b/ldapserver/__init__.py
index 44355998135573b5fe8f92172ba624aa4450ebab..c749ca5807624fb4f45ba1689d07de6093becdad 100644
--- a/ldapserver/__init__.py
+++ b/ldapserver/__init__.py
@@ -1,6 +1,8 @@
 from . import ldap
-from . import dn
 from . import exceptions
+from . import schema
+from . import rfc4518_stringprep
 
-from .server import BaseLDAPRequestHandler, LDAPRequestHandler
-from .objects import SubschemaSubentry
+from .dn import *
+from .objects import *
+from .server import *
diff --git a/ldapserver/dn.py b/ldapserver/dn.py
index 2895537b8ce7e3c5aaa0f5d32e48a6889f1fef70..eb90cbc01c216431657db6e39974a43de800fa72 100644
--- a/ldapserver/dn.py
+++ b/ldapserver/dn.py
@@ -19,7 +19,7 @@ import re
 
 from . import exceptions
 
-__all__ = ['DN', 'RDN', 'RDNAssertion']
+__all__ = ['DN', 'RDN', 'RDNAssertion', 'DNWithUID']
 
 class DN(tuple):
 	'''Distinguished Name consiting of zero ore more `RDN` objects'''
diff --git a/ldapserver/objects.py b/ldapserver/objects.py
index 0accdceffc78f142334bbaf8de453e526e07c5db..c568470d5457594086dadc236ad1fd6f68ee713e 100644
--- a/ldapserver/objects.py
+++ b/ldapserver/objects.py
@@ -4,6 +4,8 @@ import enum
 from . import ldap, exceptions
 from .dn import DN, RDN, RDNAssertion
 
+__all__ = ['AttributeDict', 'Object', 'RootDSE', 'WILDCARD_VALUE', 'ObjectTemplate', 'SubschemaSubentry']
+
 class TypeKeysView(collections.abc.Set):
 	def __init__(self, attributes):
 		self.__attributes = attributes
diff --git a/ldapserver/server.py b/ldapserver/server.py
index e50c5e28919fda7fa08be053022ca1940f161db9..3a7d5d8114c16f62fc6d57a9b46d64ffae589067 100644
--- a/ldapserver/server.py
+++ b/ldapserver/server.py
@@ -10,6 +10,8 @@ import itertools
 
 from . import asn1, exceptions, ldap, schema, objects
 
+__all__ = ['BaseLDAPRequestHandler', 'LDAPRequestHandler']
+
 def pop_control(controls, oid):
 	result = None
 	remaining_controls = []