diff --git a/rank-product.cabal b/rank-product.cabal
--- a/rank-product.cabal
+++ b/rank-product.cabal
@@ -1,5 +1,5 @@
 name:                rank-product
-version:             0.1.0.0
+version:             0.1.0.1
 synopsis:            Find the rank product of a data set.
 description:         Find the rank product of a data set and get the p-value from a permutation test.
 homepage:            http://github.com/GregorySchwartz/rank-product#readme
@@ -15,8 +15,8 @@
 
 library
   hs-source-dirs:      src
-  exposed-modules:     Types
-                     , RankProduct
+  exposed-modules:     Statistics.Types
+                     , Statistics.RankProduct
   build-depends:       base >= 4.7 && < 5
                      , random-fu
   ghc-options:         -O2
diff --git a/src/RankProduct.hs b/src/RankProduct.hs
deleted file mode 100644
--- a/src/RankProduct.hs
+++ /dev/null
@@ -1,104 +0,0 @@
-{- RankProduct
-Gregory W. Schwartz
-
-Collects the functions pertaining to finding the rank product of a data set as
-well as the associated p-value.
--}
-
-{-# LANGUAGE BangPatterns #-}
-
-module RankProduct
-    ( rankList
-    , rankProduct
-    , prerankProduct
-    , rankProductPermutation
-    ) where
-
--- Standard
-import Data.Function (on)
-import Data.List
-import Data.Random
-
--- Cabal
-
--- Local
-import Types
-
--- | Rank transform a list.
-rankList :: (Ord a) => [a] -> [Int]
-rankList = fmap fst
-         . sortBy (compare `on` (fst . snd))
-         . zip [1..]
-         . sortBy (compare `on` snd)
-         . zip [1..]
-
--- | Get the rank product of a list of Entity.
-rankProduct :: [Entity] -> [RankProductEntity]
-rankProduct xs =
-    fmap (RankProductEntity . (** (1 / genericLength xs)) . fromIntegral . product)
-        . transpose
-        . fmap rankList
-        . transpose
-        . fmap unEntity
-        $ xs
-
--- | Get the rank product of a pre-ranked data set [[ranked values for a gene in
--- different data sets]].
-prerankProduct :: [RankEntity] -> [RankProductEntity]
-prerankProduct xs =
-    fmap
-        ( RankProductEntity
-        . (** (1 / genericLength xs))
-        . fromIntegral
-        . product
-        . unRankEntity
-        )
-        xs
-
--- | Get a random permutation of the RankEntity's.
-permuteEntities :: [RankEntity] -> IO [RankEntity]
-permuteEntities = fmap (fmap RankEntity . transpose)
-                . mapM (sample . shuffle)
-                . transpose
-                . fmap unRankEntity
-
--- | Convert Bool to a number.
-boolToNum :: (Num a) => Bool -> a
-boolToNum False = 0
-boolToNum True  = 1
-
--- | Get the rank product of a list of Entity as well as the permutation
--- p-value.
-rankProductPermutation :: Permutations
-                       -> [Entity]
-                       -> IO [(PValue, RankProductEntity)]
-rankProductPermutation (Permutations permutations) entities = do
-    let ranked  = fmap RankEntity
-                . transpose
-                . fmap rankList
-                . transpose
-                . fmap unEntity
-                $ entities
-        obs     = prerankProduct ranked
-        expTest (RankProductEntity o) = (<= o) . unRankProductEntity
-
-    -- Lotsa space version.
-    -- vals <- mapM (const (shuffleCosine xs ys)) . V.replicate nPerm $ 0
-    -- let exps = V.filter (\x -> abs x >= abs obs) vals
-
-    let successes :: [Int] -> Int -> IO [Int]
-        successes !acc 0  = return acc
-        successes !acc !n = do
-            shuffledEntities <- permuteEntities ranked
-
-            let res = prerankProduct shuffledEntities
-                success = zipWith (\o -> boolToNum . expTest o) obs res
-
-            successes (zipWith (+) acc success) (n - 1)
-
-    exp <- successes (take (genericLength entities) [0,0..]) permutations
-
-    let pVals =
-            fmap (\e -> PValue $ (fromIntegral e) / (fromIntegral permutations)) exp
-
-    return . zip pVals $ obs
diff --git a/src/Statistics/RankProduct.hs b/src/Statistics/RankProduct.hs
new file mode 100644
--- /dev/null
+++ b/src/Statistics/RankProduct.hs
@@ -0,0 +1,104 @@
+{- RankProduct
+Gregory W. Schwartz
+
+Collects the functions pertaining to finding the rank product of a data set as
+well as the associated p-value.
+-}
+
+{-# LANGUAGE BangPatterns #-}
+
+module Statistics.RankProduct
+    ( rankList
+    , rankProduct
+    , prerankProduct
+    , rankProductPermutation
+    ) where
+
+-- Standard
+import Data.Function (on)
+import Data.List
+import Data.Random
+
+-- Cabal
+
+-- Local
+import Statistics.Types
+
+-- | Rank transform a list.
+rankList :: (Ord a) => [a] -> [Int]
+rankList = fmap fst
+         . sortBy (compare `on` (fst . snd))
+         . zip [1..]
+         . sortBy (compare `on` snd)
+         . zip [1..]
+
+-- | Get the rank product of a list of Entity.
+rankProduct :: [Entity] -> [RankProductEntity]
+rankProduct xs =
+    fmap (RankProductEntity . (** (1 / genericLength xs)) . fromIntegral . product)
+        . transpose
+        . fmap rankList
+        . transpose
+        . fmap unEntity
+        $ xs
+
+-- | Get the rank product of a pre-ranked data set [[ranked values for a gene in
+-- different data sets]].
+prerankProduct :: [RankEntity] -> [RankProductEntity]
+prerankProduct xs =
+    fmap
+        ( RankProductEntity
+        . (** (1 / genericLength xs))
+        . fromIntegral
+        . product
+        . unRankEntity
+        )
+        xs
+
+-- | Get a random permutation of the RankEntity's.
+permuteEntities :: [RankEntity] -> IO [RankEntity]
+permuteEntities = fmap (fmap RankEntity . transpose)
+                . mapM (sample . shuffle)
+                . transpose
+                . fmap unRankEntity
+
+-- | Convert Bool to a number.
+boolToNum :: (Num a) => Bool -> a
+boolToNum False = 0
+boolToNum True  = 1
+
+-- | Get the rank product of a list of Entity as well as the permutation
+-- p-value.
+rankProductPermutation :: Permutations
+                       -> [Entity]
+                       -> IO [(PValue, RankProductEntity)]
+rankProductPermutation (Permutations permutations) entities = do
+    let ranked  = fmap RankEntity
+                . transpose
+                . fmap rankList
+                . transpose
+                . fmap unEntity
+                $ entities
+        obs     = prerankProduct ranked
+        expTest (RankProductEntity o) = (<= o) . unRankProductEntity
+
+    -- Lotsa space version.
+    -- vals <- mapM (const (shuffleCosine xs ys)) . V.replicate nPerm $ 0
+    -- let exps = V.filter (\x -> abs x >= abs obs) vals
+
+    let successes :: [Int] -> Int -> IO [Int]
+        successes !acc 0  = return acc
+        successes !acc !n = do
+            shuffledEntities <- permuteEntities ranked
+
+            let res = prerankProduct shuffledEntities
+                success = zipWith (\o -> boolToNum . expTest o) obs res
+
+            successes (zipWith (+) acc success) (n - 1)
+
+    exp <- successes (take (genericLength entities) [0,0..]) permutations
+
+    let pVals =
+            fmap (\e -> PValue $ (fromIntegral e) / (fromIntegral permutations)) exp
+
+    return . zip pVals $ obs
diff --git a/src/Statistics/Types.hs b/src/Statistics/Types.hs
new file mode 100644
--- /dev/null
+++ b/src/Statistics/Types.hs
@@ -0,0 +1,25 @@
+{- Types
+Gregory W. Schwartz
+
+Collects the types used in the program
+-}
+
+module Statistics.Types where
+
+-- Standard
+
+-- Cabal
+
+-- Local
+
+
+-- Basic
+newtype Permutations      = Permutations Int
+newtype Entity            = Entity { unEntity :: [Double] } deriving (Show)
+newtype RankEntity        = RankEntity { unRankEntity :: [Int] }
+newtype RankProductEntity = RankProductEntity
+    { unRankProductEntity :: Double
+    } deriving ((Show))
+newtype PValue            = PValue { unPValue :: Double } deriving (Show)
+
+-- Advanced
diff --git a/src/Types.hs b/src/Types.hs
deleted file mode 100644
--- a/src/Types.hs
+++ /dev/null
@@ -1,25 +0,0 @@
-{- Types
-Gregory W. Schwartz
-
-Collects the types used in the program
--}
-
-module Types where
-
--- Standard
-
--- Cabal
-
--- Local
-
-
--- Basic
-newtype Permutations      = Permutations Int
-newtype Entity            = Entity { unEntity :: [Double] } deriving (Show)
-newtype RankEntity        = RankEntity { unRankEntity :: [Int] }
-newtype RankProductEntity = RankProductEntity
-    { unRankProductEntity :: Double
-    } deriving ((Show))
-newtype PValue            = PValue { unPValue :: Double } deriving (Show)
-
--- Advanced
