diff --git a/spice.cabal b/spice.cabal
--- a/spice.cabal
+++ b/spice.cabal
@@ -1,5 +1,5 @@
 name:                spice
-version:             0.1.0.0
+version:             0.1.0.1
 synopsis:            An FRP-based game engine written in Haskell.
 description:         An FRP-based game engine written in Haskell. - See the homepage for more information.
 homepage:            http://github.com/crockeo/spice
diff --git a/src/FRP/Spice.hs b/src/FRP/Spice.hs
--- a/src/FRP/Spice.hs
+++ b/src/FRP/Spice.hs
@@ -1,8 +1,16 @@
-module FRP.Spice (module Rexport) where
+{-|
+  This module re-exports some other modules in the spice library so that you
+  needn't import all of them explicitly.
+-}
+module FRP.Spice ( module FRP.Spice.Config
+                 , module FRP.Spice.Engine
+                 , module FRP.Spice.Input
+                 , module FRP.Spice.Game
+                 ) where
 
 -----------------------
 -- Rexported Imports --
-import FRP.Spice.Config as Rexport
-import FRP.Spice.Engine as Rexport
-import FRP.Spice.Input  as Rexport
-import FRP.Spice.Game   as Rexport
+import FRP.Spice.Config
+import FRP.Spice.Engine
+import FRP.Spice.Input
+import FRP.Spice.Game
diff --git a/src/FRP/Spice/Config.hs b/src/FRP/Spice/Config.hs
--- a/src/FRP/Spice/Config.hs
+++ b/src/FRP/Spice/Config.hs
@@ -1,3 +1,6 @@
+{-|
+  This module handles the configuration for the project.
+-}
 module FRP.Spice.Config where
 
 --------------------
@@ -7,7 +10,10 @@
 ----------
 -- Code --
 
--- The window config
+{-|
+  A datatype to configure the window settings when creating an OpenGL context
+  using @'FRP.Spice.Engine.startEngine'@ in the engine.
+-}
 data WindowConfig = WindowConfig { getWindowWidth      :: Int
                                  , getWindowHeight     :: Int
                                  , getWindowFullscreen :: Bool
@@ -16,7 +22,15 @@
                                  }
   deriving (Eq, Show, Read)
 
--- The default window config
+{-|
+  The default for @'WindowConfig'@
+
+  > getWindowWidth      = 640
+  > getWindowHeight     = 480
+  > getWindowFullscreen = False
+  > getWindowResizeable = False
+  > getWindowTitle      = "Spice Application"
+-}
 defaultWindowConfig :: WindowConfig
 defaultWindowConfig = WindowConfig { getWindowWidth      = 640
                                    , getWindowHeight     = 480
@@ -25,7 +39,5 @@
                                    , getWindowTitle      = "Spice Application"
                                    }
 
--- A default instance for the window
--- config
 instance Default WindowConfig where
   def = defaultWindowConfig
diff --git a/src/FRP/Spice/Engine.hs b/src/FRP/Spice/Engine.hs
--- a/src/FRP/Spice/Engine.hs
+++ b/src/FRP/Spice/Engine.hs
@@ -1,3 +1,7 @@
+{-|
+  This module handles starting the engine. This is done via the use of the
+  @'startEngine'@ function.
+-}
 module FRP.Spice.Engine where
 
 --------------------
@@ -19,7 +23,12 @@
 ----------
 -- Code --
 
--- Starting the engine
+{-|
+  Starting the spice engine with the parameters prescribed in the
+  @'WindowConfig'@. It updates and renders the @'Game'@ automatically so all
+  you need to to is set up the @'WindowConfig'@ and make a datatype with an
+  instance of @'Game'@.
+-}
 startEngine :: Game a => WindowConfig -> a -> IO ()
 startEngine wc game = do
   -- Opening the window
diff --git a/src/FRP/Spice/Game.hs b/src/FRP/Spice/Game.hs
--- a/src/FRP/Spice/Game.hs
+++ b/src/FRP/Spice/Game.hs
@@ -1,3 +1,7 @@
+{-|
+  This module provides the API which people must use to define a game within
+  the scope of Spice.
+-}
 module FRP.Spice.Game where
 
 -------------------
@@ -7,7 +11,16 @@
 ----------
 -- Code --
 
--- The game instance, to be used with updating and rendering
+{-|
+  A synonym to make the update function more self-documenting.
+-}
+type DeltaTime = Float
+
+{-|
+  The class which is to be used in the @'FRP.Spice.Engine.startEngine'@
+  function. @'update'@ provides the API to update on every tick (purely), an
+   @'render'@ provides the API to render every frame.
+-}
 class Game a where
-  update :: Float -> Input -> a -> a
+  update :: DeltaTime -> Input -> a -> a
   render :: a -> IO ()
diff --git a/src/FRP/Spice/Input.hs b/src/FRP/Spice/Input.hs
--- a/src/FRP/Spice/Input.hs
+++ b/src/FRP/Spice/Input.hs
@@ -1,3 +1,6 @@
+{-|
+  This module provides everything relating to input in the scope of spice.
+-}
 module FRP.Spice.Input ( module Rexport
                        , Sinks (..)
                        , Input (..)
@@ -31,23 +34,36 @@
 ----------
 -- Code --
 
--- The sinks
+{-|
+  A wrapper around the sinks for the mouse position, the key states, and the
+  mouse button states.
+-}
 data Sinks = Sinks { mousePositionSinks :: Vector Float -> IO ()
                    , keyboardSinks      :: Map Key (Bool -> IO ())
                    , mouseSinks         :: Map MouseButton (Bool -> IO ())
                    }
 
+{-|
+  A container for all of the states themselves. It is used as a @'Signal'@
+  @'Input'@ in the @'InputContainer'@ (which is necessary to use it within
+  Elerea's FRP network).
+-}
 data Input = Input { mousePosition :: Vector Float
                    , keyboard      :: Map Key Bool
                    , mouse         :: Map MouseButton Bool
                    }
 
--- The container to go around the
+{-|
+  A container around @'Sinks'@ and @'Signal'@ @'Input'@ so that one needn't
+  pass around a tuple.
+-}
 data InputContainer = InputContainer { getSinks :: Sinks
                                      , getInput :: Signal Input
                                      }
 
--- Creating the input container for use in the program
+{-|
+  Making an @'InputContainer'@ filled with all necessary externals.
+-}
 makeInputContainer :: IO InputContainer
 makeInputContainer = do
   mousePositionExternals <- MousePosition.externals
@@ -72,17 +88,25 @@
                         , getInput = input
                         }
 
--- Creating callbacks for each type
+{-|
+  Creating a callback to update the mouse position's state.
+-}
 makeMousePositionCallback :: InputContainer -> MousePosCallback
 makeMousePositionCallback ic (Position x y) =
   mousePositionSinks (getSinks ic) $ Vector (fromIntegral x / 320 - 1) ((-fromIntegral y) / 240 - 1)
 
+{-|
+  Creating a callback to update the keyboard's states.
+-}
 makeKeyboardCallback :: InputContainer -> KeyCallback
 makeKeyboardCallback ic key state =
   keyboardSinks (getSinks ic) ! key $ case state of
     Press   -> True
     Release -> False
 
+{-|
+  Creating a callback to update the mouse buttons' states.
+-}
 makeMouseCallback :: InputContainer -> MouseButtonCallback
 makeMouseCallback ic button state =
   mouseSinks (getSinks ic) ! button $ case state of
diff --git a/src/FRP/Spice/Input/Keyboard.hs b/src/FRP/Spice/Input/Keyboard.hs
--- a/src/FRP/Spice/Input/Keyboard.hs
+++ b/src/FRP/Spice/Input/Keyboard.hs
@@ -1,3 +1,6 @@
+{-|
+  The keyboard specific section of input.
+-}
 module FRP.Spice.Input.Keyboard where
 
 --------------------
@@ -11,18 +14,28 @@
 ----------
 -- Code --
 
--- A set of all keys available via GLFW
+{-|
+  A list of all possible keys used in the GLFW API.
+-}
 keys :: [Key]
 keys = map toEnum [0 .. 318]
 
--- Getting the externals for all of the keys
+{-|
+  A Map from @'Key'@ to the externals created for every single
+  key.
+-}
 externals :: IO (Map Key (Signal Bool, Bool -> IO ()))
 externals = liftM fromList $ mapM (\k -> liftM ((,) k) $ external False) keys
 
--- Getting the signals from the externals
+{-|
+  Creating the @'Signal'@ of a @'Map'@ from @'Key'@ to @'Bool'@ from a @'Map'@
+  of @'externals'@.
+-}
 signals :: Map Key (Signal Bool, Bool -> IO ()) -> Signal (Map Key Bool)
 signals = T.sequence . fmap fst
 
--- Getting the sinks from the externals
+{-|
+  Making a @'Map'@ from @'Key'@ to sink from a @'Map'@ of @'externals'@.
+-}
 sinks :: Map Key (Signal Bool, Bool -> IO ()) -> Map Key (Bool -> IO ())
 sinks = fmap snd
diff --git a/src/FRP/Spice/Input/Mouse.hs b/src/FRP/Spice/Input/Mouse.hs
--- a/src/FRP/Spice/Input/Mouse.hs
+++ b/src/FRP/Spice/Input/Mouse.hs
@@ -1,3 +1,6 @@
+{-|
+  The mouse (button) specific section of input.
+-}
 module FRP.Spice.Input.Mouse where
 
 --------------------
diff --git a/src/FRP/Spice/Input/MousePosition.hs b/src/FRP/Spice/Input/MousePosition.hs
--- a/src/FRP/Spice/Input/MousePosition.hs
+++ b/src/FRP/Spice/Input/MousePosition.hs
@@ -1,3 +1,6 @@
+{-|
+  The mouse (position) specific section of input.
+-}
 module FRP.Spice.Input.MousePosition where
 
 --------------------
diff --git a/src/FRP/Spice/Math/Vector.hs b/src/FRP/Spice/Math/Vector.hs
--- a/src/FRP/Spice/Math/Vector.hs
+++ b/src/FRP/Spice/Math/Vector.hs
@@ -1,3 +1,6 @@
+{-|
+  This module provides a @'Vector'@ datatype as described below.
+-}
 module FRP.Spice.Math.Vector where
 
 --------------------
@@ -8,18 +11,28 @@
 ----------
 -- Code --
 
--- The vector datatype
+{-|
+  A datatype that houses two values of a given type. It is provided with a
+  @'Num'@ instance so that, when used with number types it can function
+  similarly (though not exactly) to a mathematical vector.
+-}
 data Vector a = Vector a a
 
--- Default instance
+{-|
+  The default for the @'Vector'@.
+-}
 instance Default a => Default (Vector a) where
   def = Vector def def
 
--- Show instance
+{-|
+  Displaying the @'Vector'@.
+-}
 instance Show a => Show (Vector a) where
   show (Vector x y) = mconcat ["Vector ", show x, " ", show y]
 
--- Num instance
+{-|
+  Performs operations on the matching fields of the other @'Vector'@.
+-}
 instance Num a => Num (Vector a) where
   (Vector x1 y1) + (Vector x2 y2) = Vector (x1 + x2) (y1 + y2)
   (Vector x1 y1) * (Vector x2 y2) = Vector (x1 * x2) (y1 * y2)
@@ -30,6 +43,8 @@
   signum (Vector x y) = Vector (signum x) (signum y)
   negate (Vector x y) = Vector (negate x) (negate y)
 
--- Functor instance
+{-|
+  Maps over both values in the @'Vector'@
+-}
 instance Functor Vector where
   fmap fn (Vector x y) = Vector (fn x) (fn y)
