diff --git a/Data/Set/BKTree.hs b/Data/Set/BKTree.hs
--- a/Data/Set/BKTree.hs
+++ b/Data/Set/BKTree.hs
@@ -1,6 +1,6 @@
 {- | 
    Module      : Data.Set.BKTree
-   Copyright   : (c) Josef Svenningsson 2007
+   Copyright   : (c) Josef Svenningsson 2007-2010
                  (c) Henning Günter     2007
    License     : BSD-style
    Maintainer  : josef.svenningsson@gmail.com
@@ -49,6 +49,8 @@
 #endif
     )where
 
+import Data.Set.BKTree.Internal
+
 import qualified Data.IntMap as M
 import qualified Data.List as L hiding (null)
 import Prelude hiding (null)
@@ -124,14 +126,6 @@
 -- --------
 -- BKTrees
 -- --------
-
--- | The type of Burkhard-Keller trees.
-data BKTree a = Node a !Int (M.IntMap (BKTree a))
-              | Empty
-#ifdef DEBUG
-                deriving Show
-#endif
-
 
 -- | Test if the tree is empty.
 null :: BKTree a -> Bool
diff --git a/Data/Set/BKTree/Internal.hs b/Data/Set/BKTree/Internal.hs
new file mode 100644
--- /dev/null
+++ b/Data/Set/BKTree/Internal.hs
@@ -0,0 +1,20 @@
+{- | 
+   Module      : Data.Set.BKTree.Internal
+   Copyright   : (c) Josef Svenningsson 2010
+   License     : BSD-style
+   Maintainer  : josef.svenningsson@gmail.com
+   Stability   : Alpha quality. Interface may change without notice.
+   Portability : portable
+
+   This module exposes the internal representation of Burkhard-Keller trees.
+-}
+module Data.Set.BKTree.Internal where
+
+import Data.IntMap
+
+-- | The type of Burkhard-Keller trees.
+data BKTree a = Node a !Int (IntMap (BKTree a))
+              | Empty
+#ifdef DEBUG
+                deriving Show
+#endif
diff --git a/bktrees.cabal b/bktrees.cabal
--- a/bktrees.cabal
+++ b/bktrees.cabal
@@ -1,5 +1,5 @@
 name:		bktrees
-version:	0.2.2
+version:	0.3
 license:	BSD3
 license-file:	LICENSE
 author:		Josef Svenningsson
@@ -27,4 +27,5 @@
     build-depends: base < 3
 
   exposed-modules:	Data.Set.BKTree
+                        Data.Set.BKTree.Internal
   extensions:	CPP
