diff --git a/Boundary.hs b/Boundary.hs
deleted file mode 100644
--- a/Boundary.hs
+++ /dev/null
@@ -1,42 +0,0 @@
-{--
-This file is part of the OscPacking library.
-Copyright 2016 Christopher Howard.
-
-    OscPacking is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OscPacking is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OscPacking.  If not, see <http://www.gnu.org/licenses/>.
---}
-
-module Boundary where
-
-import Geometry
-
-type Boundary = Point -> Maybe Float
-
-circleB :: Point -> Float -> Boundary
-circleB originP r testP =
-  if d > r then Nothing else Just (r - d) where d = euclidean originP testP
-
-rectB :: Point -> Float -> Float -> Boundary
-rectB (bLX, bLY) width height (tPX, tPY) =
-  if or [tPX < bLX,
-         tPX > bLX + width,
-         tPY < bLY,
-         tPY > bLY + height]
-  then Nothing
-  else Just $ foldr min (1/0)
-       [tPX - bLX,
-        bLX + width - tPX,
-        tPY - bLY,
-        bLY + height - tPY]
-
-  
diff --git a/Examples.hs b/Examples.hs
deleted file mode 100644
--- a/Examples.hs
+++ /dev/null
@@ -1,63 +0,0 @@
-{--
-This file is part of the OscPacking library.
-Copyright 2016 Christopher Howard.
-
-    OscPacking is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OscPacking is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OscPacking.  If not, see <http://www.gnu.org/licenses/>.
---}
-
-module Examples where
-
-import Packing
-import Paint
-import Interpret
-import Graphics.Gloss.Interface.Pure.Display
-import Boundary
-import Geometry
-
-displayExample1 :: IO()
-displayExample1 = displayWindow (800, 600) black $
-  buildPicture (cycling 0.05 200)
-  defaultPacking { boxWidth = 800.0,
-                   boxHeight = 600.0,
-                   seedX = 42,
-                   seedY = 11,
-                   boundary = Just (rectB (20, 20) 760 560),
-                   startingCircles = [Geometry.Circle
-                                        { position = (400, 300), radius = 10 }]
-                 }
-  1000
-
-displayExample2 :: IO()
-displayExample2 = displayWindow (600, 600) black $
-  buildPicture (colorful 270)
-  defaultPacking { boxWidth = 600.0,
-                   boxHeight = 600.0,
-                   seedX = 331,
-                   seedY = 2010,
-                   boundary = Just (circleB (600.0 / 2, 600.0 / 2) 250),
-                   startingCircles = [Geometry.Circle
-                                        { position = (300, 300), radius = 10 }]
-                 }
-  1000
-
-growExample1 :: IO()
-growExample1 = growWindow (600, 600) black (colorful 55) 8
-  defaultPacking { boxWidth = 600.0,
-                   boxHeight = 600.0,
-                   seedX = 58387,
-                   seedY = 943,
-                   boundary = Just (circleB (600.0 / 2, 600.0 / 2) 250),
-                   startingCircles = [Geometry.Circle
-                                        { position = (300, 300), radius = 10 }]
-                 }
diff --git a/Geometry.hs b/Geometry.hs
deleted file mode 100644
--- a/Geometry.hs
+++ /dev/null
@@ -1,33 +0,0 @@
-{--
-This file is part of the OscPacking library.
-Copyright 2016 Christopher Howard.
-
-    OscPacking is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OscPacking is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OscPacking.  If not, see <http://www.gnu.org/licenses/>.
---}
-
-module Geometry where
-
-data Circle = Circle {
-  position :: Point,
-  radius :: Float
-  }
-
-type Point = (Float, Float)
-type Metric = Point -> Point -> Float
-
-euclidean :: Metric
-euclidean (x1, y1) (x2, y2) = sqrt ((x2 - x1)**2 + (y2 - y1)**2)
-
-distToCircle :: Point -> Circle -> Float
-distToCircle point circle = euclidean point (position circle) - radius circle
diff --git a/Graphics/OscPacking.hs b/Graphics/OscPacking.hs
new file mode 100644
--- /dev/null
+++ b/Graphics/OscPacking.hs
@@ -0,0 +1,15 @@
+module Graphics.OscPacking
+       ( module Graphics.OscPacking.Boundary
+       , module Graphics.OscPacking.Paint
+       , module Graphics.OscPacking.Interpret
+       , module Graphics.OscPacking.Geometry
+       , module Graphics.OscPacking.Packing
+       )
+       where
+
+import Graphics.OscPacking.Boundary
+import Graphics.OscPacking.Paint
+import Graphics.OscPacking.Interpret
+import Graphics.OscPacking.Geometry
+import Graphics.OscPacking.Packing
+
diff --git a/Graphics/OscPacking/Boundary.hs b/Graphics/OscPacking/Boundary.hs
new file mode 100644
--- /dev/null
+++ b/Graphics/OscPacking/Boundary.hs
@@ -0,0 +1,42 @@
+{--
+This file is part of the OscPacking library.
+Copyright 2016 Christopher Howard.
+
+    OscPacking is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OscPacking is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OscPacking.  If not, see <http://www.gnu.org/licenses/>.
+--}
+
+module Graphics.OscPacking.Boundary where
+
+import Graphics.OscPacking.Geometry
+
+type Boundary = Point -> Maybe Float
+
+circleB :: Point -> Float -> Boundary
+circleB originP r testP =
+  if d > r then Nothing else Just (r - d) where d = euclidean originP testP
+
+rectB :: Point -> Float -> Float -> Boundary
+rectB (bLX, bLY) width height (tPX, tPY) =
+  if or [tPX < bLX,
+         tPX > bLX + width,
+         tPY < bLY,
+         tPY > bLY + height]
+  then Nothing
+  else Just $ foldr min (1/0)
+       [tPX - bLX,
+        bLX + width - tPX,
+        tPY - bLY,
+        bLY + height - tPY]
+
+  
diff --git a/Graphics/OscPacking/Examples.hs b/Graphics/OscPacking/Examples.hs
new file mode 100644
--- /dev/null
+++ b/Graphics/OscPacking/Examples.hs
@@ -0,0 +1,59 @@
+{--
+This file is part of the OscPacking library.
+Copyright 2016 Christopher Howard.
+
+    OscPacking is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OscPacking is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OscPacking.  If not, see <http://www.gnu.org/licenses/>.
+--}
+
+module Graphics.OscPacking.Examples where
+
+import Graphics.Gloss.Interface.Pure.Display
+import Graphics.OscPacking
+
+displayExample1 :: IO()
+displayExample1 = displayWindow (800, 600) black $
+  buildPicture (cycling 0.05 200)
+  defaultPacking { boxWidth = 800.0,
+                   boxHeight = 600.0,
+                   seedX = 42,
+                   seedY = 11,
+                   boundary = Just (rectB (20, 20) 760 560),
+                   startingCircles = [Graphics.OscPacking.Circle
+                                        { position = (400, 300), radius = 10 }]
+                 }
+  1000
+
+displayExample2 :: IO()
+displayExample2 = displayWindow (600, 600) black $
+  buildPicture (colorful 270)
+  defaultPacking { boxWidth = 600.0,
+                   boxHeight = 600.0,
+                   seedX = 331,
+                   seedY = 2010,
+                   boundary = Just (circleB (600.0 / 2, 600.0 / 2) 250),
+                   startingCircles = [Graphics.OscPacking.Circle
+                                        { position = (300, 300), radius = 10 }]
+                 }
+  1000
+
+growExample1 :: IO()
+growExample1 = growWindow (600, 600) black (colorful 55) 8
+  defaultPacking { boxWidth = 600.0,
+                   boxHeight = 600.0,
+                   seedX = 58387,
+                   seedY = 943,
+                   boundary = Just (circleB (600.0 / 2, 600.0 / 2) 250),
+                   startingCircles = [Graphics.OscPacking.Circle
+                                        { position = (300, 300), radius = 10 }]
+                 }
diff --git a/Graphics/OscPacking/Geometry.hs b/Graphics/OscPacking/Geometry.hs
new file mode 100644
--- /dev/null
+++ b/Graphics/OscPacking/Geometry.hs
@@ -0,0 +1,33 @@
+{--
+This file is part of the OscPacking library.
+Copyright 2016 Christopher Howard.
+
+    OscPacking is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OscPacking is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OscPacking.  If not, see <http://www.gnu.org/licenses/>.
+--}
+
+module Graphics.OscPacking.Geometry where
+
+data Circle = Circle {
+  position :: Point,
+  radius :: Float
+  }
+
+type Point = (Float, Float)
+type Metric = Point -> Point -> Float
+
+euclidean :: Metric
+euclidean (x1, y1) (x2, y2) = sqrt ((x2 - x1)**2 + (y2 - y1)**2)
+
+distToCircle :: Point -> Circle -> Float
+distToCircle point circle = euclidean point (position circle) - radius circle
diff --git a/Graphics/OscPacking/Interpret.hs b/Graphics/OscPacking/Interpret.hs
new file mode 100644
--- /dev/null
+++ b/Graphics/OscPacking/Interpret.hs
@@ -0,0 +1,58 @@
+{--
+This file is part of the OscPacking library.
+Copyright 2016 Christopher Howard.
+
+    OscPacking is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OscPacking is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OscPacking.  If not, see <http://www.gnu.org/licenses/>.
+--}
+
+module Graphics.OscPacking.Interpret where
+
+import Graphics.OscPacking.Geometry
+import Graphics.Gloss.Data.Picture hiding (Circle, Point)
+import qualified Graphics.Gloss.Data.Picture as P (Picture(Circle))
+import Graphics.Gloss.Data.Color
+import Data.Colour.RGBSpace
+import Data.Colour.RGBSpace.HSL
+
+type Interpretation = [Circle] -> Picture
+
+monoWhite :: Interpretation
+monoWhite = (Pictures . map mF)
+  where mF (Circle { radius = r, position = p }) =
+          Translate (fst p) (snd p) (Color white (P.Circle r))
+
+-- hue :: Int -> Color
+hue degrees =
+  let rgb = hsl degrees 1 0.7
+      (red, green, blue) = (channelRed rgb, channelGreen rgb, channelBlue rgb)
+  in makeColor red green blue 1.0
+     
+colorful :: Float -> Interpretation
+colorful offset = (Pictures . map mF)
+  where mF (Circle { radius = r, position = p }) =
+          Translate (fst p) (snd p)
+            (Color (Graphics.OscPacking.Interpret.hue
+                      (fromInteger (mod (floor ((r + offset)**2)) 360)))
+             (P.Circle r))
+
+cycling :: Float -> Float -> Interpretation
+cycling speed offset = (Pictures . map mF)
+  where mF (Circle { radius = r, position = p }) =
+          Translate (fst p) (snd p)
+            (Color (Graphics.OscPacking.Interpret.hue
+                      (offset + (fromInteger (mod (floor ((2*pi*r) * speed)) 360))))
+             (P.Circle r))
+
+
+  
diff --git a/Graphics/OscPacking/Packing.hs b/Graphics/OscPacking/Packing.hs
new file mode 100644
--- /dev/null
+++ b/Graphics/OscPacking/Packing.hs
@@ -0,0 +1,81 @@
+{--
+This file is part of the OscPacking library.
+Copyright 2016 Christopher Howard.
+
+    OscPacking is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OscPacking is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OscPacking.  If not, see <http://www.gnu.org/licenses/>.
+--}
+
+module Graphics.OscPacking.Packing (
+  Packing(..),
+  defaultPacking,
+  pack
+  ) where
+
+import Graphics.OscPacking.Geometry
+import System.Random
+import Graphics.OscPacking.Boundary
+
+fit :: Maybe Float -> Point -> [Circle] -> Maybe Boundary -> Maybe Circle
+fit cap point srtCircles boundary = fmap
+  (\distance -> Circle { position = point, radius = distance })
+  (foldr chooseCloser (Just (1/0)) srtCircles)
+  where chooseCloser _ Nothing = Nothing
+        chooseCloser circle (Just minval) =
+          let d = distToCircle point circle in
+          if d <= 0
+            then Nothing
+            else let upperlim = case cap of
+                       Nothing -> 1 / 0
+                       Just cap' -> cap' in
+                   case boundary of
+                     Nothing -> Just (min upperlim (min d minval))
+                     Just boundary' -> case boundary' point of
+                       Nothing -> Nothing
+                       Just bDist -> Just (min bDist (min upperlim (min d minval)))
+
+data Packing = Packing {
+  boxWidth :: Float,
+  boxHeight :: Float,
+  capRadius :: Maybe Float,
+  boundary :: Maybe Boundary,
+  startingCircles :: [Circle],
+  seedX :: Int,
+  seedY :: Int
+  }
+
+defaultPacking :: Packing
+defaultPacking = Packing {
+  boxWidth = 800.0,
+  boxHeight = 600.0,
+  capRadius = Nothing,
+  boundary = Just (rectB (20, 20) 760 560),
+  startingCircles = [Circle { position = (400, 300), radius = 10 }],
+  seedX = 1,
+  seedY = 2
+  }
+
+rndPoints :: Float -> Float -> Int -> Int -> [Point]
+rndPoints width height xseed yseed = zip xvals yvals                                     
+  where (xgen, ygen) = (mkStdGen xseed, mkStdGen yseed)
+        (xvals, yvals) = (randomRs (0, width) xgen, randomRs (0, height) ygen)
+
+-- Provides /infinite/ list of Circles
+pack :: Packing -> [Circle]
+pack pkg = (startingCircles pkg) ++ build (startingCircles pkg) points
+  where points = 
+          rndPoints (boxWidth pkg) (boxHeight pkg) (seedX pkg) (seedY pkg)
+        build accCircles remPoints =
+          case fit (capRadius pkg) (head remPoints) accCircles (boundary pkg) of
+            Nothing -> build accCircles (tail remPoints)
+            Just circle -> circle : build (circle : accCircles) (tail remPoints)
diff --git a/Graphics/OscPacking/Paint.hs b/Graphics/OscPacking/Paint.hs
new file mode 100644
--- /dev/null
+++ b/Graphics/OscPacking/Paint.hs
@@ -0,0 +1,47 @@
+{--
+This file is part of the OscPacking library.
+Copyright 2016 Christopher Howard.
+
+    OscPacking is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OscPacking is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OscPacking.  If not, see <http://www.gnu.org/licenses/>.
+--}
+
+module Graphics.OscPacking.Paint where
+
+import Graphics.OscPacking.Packing
+import Graphics.OscPacking.Interpret
+import Graphics.Gloss
+
+buildPicture :: Interpretation -> Packing -> Int -> Picture
+buildPicture intp pkg maxcircles =
+  translate ((-1) * boxWidth pkg / 2) ((-1) * boxHeight pkg / 2)
+    (intp (take maxcircles (pack pkg)))
+
+displayWindow :: (Int, Int) -> Color -> Picture -> IO ()
+displayWindow (width, height) bg pic =
+  display (InWindow "KC" (width, height) (0, 0)) bg pic
+
+displayFullscreen :: (Int, Int) -> Color -> Picture -> IO ()
+displayFullscreen (width, height) bg pic =
+  display (FullScreen (width, height)) bg pic
+
+growWindow :: (Int, Int) -> Color -> Interpretation -> Int -> Packing -> IO ()
+growWindow (width, height) bg intp stepsPerSec pkg =
+  simulate (InWindow "KC" (width, height) (0, 0)) bg stepsPerSec
+    ([head circles], tail circles) toPic step
+  where circles = pack pkg
+        toPic (usedCircles, _) = translate ((-1) * boxWidth pkg / 2)
+                                   ((-1) * boxHeight pkg / 2)
+                                   (intp usedCircles)
+        step _ _ (usedCircles, remCircles) = (head remCircles : usedCircles, tail remCircles)
+
diff --git a/Interpret.hs b/Interpret.hs
deleted file mode 100644
--- a/Interpret.hs
+++ /dev/null
@@ -1,58 +0,0 @@
-{--
-This file is part of the OscPacking library.
-Copyright 2016 Christopher Howard.
-
-    OscPacking is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OscPacking is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OscPacking.  If not, see <http://www.gnu.org/licenses/>.
---}
-
-module Interpret where
-
-import Geometry
-import Graphics.Gloss.Data.Picture hiding (Circle, Point)
-import qualified Graphics.Gloss.Data.Picture as P (Picture(Circle))
-import Graphics.Gloss.Data.Color
-import Data.Colour.RGBSpace
-import Data.Colour.RGBSpace.HSL
-
-type Interpretation = [Circle] -> Picture
-
-monoWhite :: Interpretation
-monoWhite = (Pictures . map mF)
-  where mF (Circle { radius = r, position = p }) =
-          Translate (fst p) (snd p) (Color white (P.Circle r))
-
--- hue :: Int -> Color
-hue degrees =
-  let rgb = hsl degrees 1 0.7
-      (red, green, blue) = (channelRed rgb, channelGreen rgb, channelBlue rgb)
-  in makeColor red green blue 1.0
-     
-colorful :: Float -> Interpretation
-colorful offset = (Pictures . map mF)
-  where mF (Circle { radius = r, position = p }) =
-          Translate (fst p) (snd p)
-            (Color (Interpret.hue
-                      (fromInteger (mod (floor ((r + offset)**2)) 360)))
-             (P.Circle r))
-
-cycling :: Float -> Float -> Interpretation
-cycling speed offset = (Pictures . map mF)
-  where mF (Circle { radius = r, position = p }) =
-          Translate (fst p) (snd p)
-            (Color (Interpret.hue
-                      (offset + (fromInteger (mod (floor ((2*pi*r) * speed)) 360))))
-             (P.Circle r))
-
-
-  
diff --git a/Packing.hs b/Packing.hs
deleted file mode 100644
--- a/Packing.hs
+++ /dev/null
@@ -1,81 +0,0 @@
-{--
-This file is part of the OscPacking library.
-Copyright 2016 Christopher Howard.
-
-    OscPacking is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OscPacking is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OscPacking.  If not, see <http://www.gnu.org/licenses/>.
---}
-
-module Packing (
-  Packing(..),
-  defaultPacking,
-  pack
-  ) where
-
-import Geometry
-import System.Random
-import Boundary
-
-fit :: Maybe Float -> Point -> [Circle] -> Maybe Boundary -> Maybe Circle
-fit cap point srtCircles boundary = fmap
-  (\distance -> Circle { position = point, radius = distance })
-  (foldr chooseCloser (Just (1/0)) srtCircles)
-  where chooseCloser _ Nothing = Nothing
-        chooseCloser circle (Just minval) =
-          let d = distToCircle point circle in
-          if d <= 0
-            then Nothing
-            else let upperlim = case cap of
-                       Nothing -> 1 / 0
-                       Just cap' -> cap' in
-                   case boundary of
-                     Nothing -> Just (min upperlim (min d minval))
-                     Just boundary' -> case boundary' point of
-                       Nothing -> Nothing
-                       Just bDist -> Just (min bDist (min upperlim (min d minval)))
-
-data Packing = Packing {
-  boxWidth :: Float,
-  boxHeight :: Float,
-  capRadius :: Maybe Float,
-  boundary :: Maybe Boundary,
-  startingCircles :: [Circle],
-  seedX :: Int,
-  seedY :: Int
-  }
-
-defaultPacking :: Packing
-defaultPacking = Packing {
-  boxWidth = 800.0,
-  boxHeight = 600.0,
-  capRadius = Nothing,
-  boundary = Just (rectB (20, 20) 760 560),
-  startingCircles = [Circle { position = (400, 300), radius = 10 }],
-  seedX = 1,
-  seedY = 2
-  }
-
-rndPoints :: Float -> Float -> Int -> Int -> [Point]
-rndPoints width height xseed yseed = zip xvals yvals                                     
-  where (xgen, ygen) = (mkStdGen xseed, mkStdGen yseed)
-        (xvals, yvals) = (randomRs (0, width) xgen, randomRs (0, height) ygen)
-
--- Provides /infinite/ list of Circles
-pack :: Packing -> [Circle]
-pack pkg = (startingCircles pkg) ++ build (startingCircles pkg) points
-  where points = 
-          rndPoints (boxWidth pkg) (boxHeight pkg) (seedX pkg) (seedY pkg)
-        build accCircles remPoints =
-          case fit (capRadius pkg) (head remPoints) accCircles (boundary pkg) of
-            Nothing -> build accCircles (tail remPoints)
-            Just circle -> circle : build (circle : accCircles) (tail remPoints)
diff --git a/Paint.hs b/Paint.hs
deleted file mode 100644
--- a/Paint.hs
+++ /dev/null
@@ -1,47 +0,0 @@
-{--
-This file is part of the OscPacking library.
-Copyright 2016 Christopher Howard.
-
-    OscPacking is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    OscPacking is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with OscPacking.  If not, see <http://www.gnu.org/licenses/>.
---}
-
-module Paint where
-
-import Packing
-import Interpret
-import Graphics.Gloss
-
-buildPicture :: Interpretation -> Packing -> Int -> Picture
-buildPicture intp pkg maxcircles =
-  translate ((-1) * boxWidth pkg / 2) ((-1) * boxHeight pkg / 2)
-    (intp (take maxcircles (pack pkg)))
-
-displayWindow :: (Int, Int) -> Color -> Picture -> IO ()
-displayWindow (width, height) bg pic =
-  display (InWindow "KC" (width, height) (0, 0)) bg pic
-
-displayFullscreen :: (Int, Int) -> Color -> Picture -> IO ()
-displayFullscreen (width, height) bg pic =
-  display (FullScreen (width, height)) bg pic
-
-growWindow :: (Int, Int) -> Color -> Interpretation -> Int -> Packing -> IO ()
-growWindow (width, height) bg intp stepsPerSec pkg =
-  simulate (InWindow "KC" (width, height) (0, 0)) bg stepsPerSec
-    ([head circles], tail circles) toPic step
-  where circles = pack pkg
-        toPic (usedCircles, _) = translate ((-1) * boxWidth pkg / 2)
-                                   ((-1) * boxHeight pkg / 2)
-                                   (intp usedCircles)
-        step _ _ (usedCircles, remCircles) = (head remCircles : usedCircles, tail remCircles)
-
diff --git a/oscpacking.cabal b/oscpacking.cabal
--- a/oscpacking.cabal
+++ b/oscpacking.cabal
@@ -2,9 +2,12 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                oscpacking
-version:             0.1.0.0
+version:             0.2.1.1
 synopsis:            Implements an osculatory packing (kissing circles) algorithm and display.
--- description:         
+description:
+      Implements the simple algorithm for packing an area with circles that are
+      'mutually tangent'. Also provides functions for displaying as a picture or
+      an animation.
 license:             GPL-3
 license-file:        LICENSE
 author:              Christopher Howard
@@ -16,9 +19,15 @@
 cabal-version:       >=1.10
 
 library
-  exposed-modules:     Geometry, Interpret, Examples, Packing, Paint, Boundary
+  exposed-modules:     Graphics.OscPacking,
+       Graphics.OscPacking.Geometry,
+       Graphics.OscPacking.Interpret,
+       Graphics.OscPacking.Examples,
+       Graphics.OscPacking.Packing,
+       Graphics.OscPacking.Paint,
+       Graphics.OscPacking.Boundary
   -- other-modules:       
   -- other-extensions:    
-  build-depends:       base >=4.6 && <4.7, gloss >=1.7 && <1.8, colour >=2.3 && <2.4, random >=1.0 && <1.1
+  build-depends:       base >=4.6 && <4.8, gloss >=1.7 && <1.8, colour >=2.3 && <2.4, random >=1.0 && <1.1
   -- hs-source-dirs:      
   default-language:    Haskell2010
