diff --git a/dsmc.cabal b/dsmc.cabal
--- a/dsmc.cabal
+++ b/dsmc.cabal
@@ -1,31 +1,15 @@
 name:                dsmc
-description:         Direct Simulation Monte Carlo is the numerical
-                     used to model the behavior of rarefied gas flows.
-                     This implementation supports complex bodies
-                     defined using Constructive Solid Geometry, using
-                     uniform grids and ray-casting. Specular, diffuse
-                     and CLL gas-surface interaction models are
-                     provided. Macroscopic parameters of number
-                     density, absolute velocity, pressure and
-                     translational temperature are obtained as the
-                     result of the simulation. The library employs
-                     parallelism on all steps of the DSMC algorithm.
-                     See the dsmc-tools package for command-line
-                     interfaces to the library.
-version:             0.1.0.0
+version:             0.1.0.1
 synopsis:            DSMC library for rarefied gas dynamics
 license:             BSD3
 license-file:        LICENSE
 author:              Dmitry Dzhus
 maintainer:          dima@dzhus.org
 category:            Physics
+
 build-type:          Simple
 cabal-version:       >=1.8
-tested-with:         GHC == 7.4.1
-
-source-repository head
-  type: git
-  location: https://github.com/dzhus/dsmc/
+tested-with:         GHC == 7.6.1
 
 library
   ghc-options: -Wall -O2 -funbox-strict-fields -Odph -rtsopts -fno-liberate-case -funfolding-use-threshold1000 -funfolding-keeness-factor1000 -fllvm -optlo-O3
@@ -52,14 +36,14 @@
   build-depends:
     attoparsec   == 0.10.*,
     base         == 4.*,
-    bytestring   == 0.9.*,
-    containers   == 0.4.*,
+    bytestring   == 0.10.*,
+    containers   == 0.5.*,
     entropy      == 0.2.*,
     hslogger     == 1.2.*,
-    mwc-random   >= 0.12.0.1,
+    mwc-random   == 0.12.*,
     parallel     == 3.2.*,
-    primitive    == 0.4.*,
+    primitive    == 0.5.*,
     repa         == 3.2.*,
     strict       == 0.3.*,
     transformers == 0.3.*,
-    vector       == 0.9.*
+    vector       == 0.10.*
diff --git a/src/DSMC/Cells.hs b/src/DSMC/Cells.hs
--- a/src/DSMC/Cells.hs
+++ b/src/DSMC/Cells.hs
@@ -75,15 +75,10 @@
 -- >     cell1     c2     c3
 -- >     l1=9      l2=4   l3=6
 --
--- By using this storage scheme we allow fast particle classification
--- (see 'classifyParticles'). Slicing from contiguous memory block to
--- obtain contents of single cell is O(1) operation, and we maintain
--- data locality.
---
 -- Note that any extra data about cells (like position or volume)
 -- should be maintained separately from cell contents. We use this
 -- approach because collision sampling and macroscopic parameter
--- calculation require different extra arguments.
+-- calculation require different
 data Cells = Cells !CellContents !Int !(VU.Vector Int) !(VU.Vector Int)
 
 
@@ -115,7 +110,7 @@
 classifyAll :: Classifier -> Ensemble -> (VU.Vector Int)
 classifyAll classify ens = runST $ do
   classes' <- R.computeP $ R.map classify ens
-  return $! R.toUnboxed classes'
+  return $ R.toUnboxed classes'
 
 
 -- | Classify particle ensemble into @N@ cells using the classifier
@@ -147,7 +142,7 @@
   lengths <- VU.unsafeFreeze lengths'
 
   -- Starting positions for cells inside cell array
-  let !starts = VU.prescanl' (+) 0 lengths
+  let starts = VU.prescanl' (+) 0 lengths
 
   -- Calculate indices for particles inside classified grand vector of
   -- cell contents (inverse mapping index)
@@ -165,7 +160,7 @@
                     (\(R.Z R.:. position) ->
                            ens VU.! (classifiedIds VU.! position))
 
-  return $! Cells (R.toUnboxed classifiedEns) cellCount starts lengths
+  return $ Cells (R.toUnboxed classifiedEns) cellCount starts lengths
 
 
 -- | Domain divided in uniform grid with given steps by X, Y and Z
diff --git a/src/DSMC/Macroscopic.hs b/src/DSMC/Macroscopic.hs
--- a/src/DSMC/Macroscopic.hs
+++ b/src/DSMC/Macroscopic.hs
@@ -117,7 +117,7 @@
               -> BasicMacroParameters
               -> IntensiveMacroParameters
 makeIntensive !m !w !vol !(n, vel, c) =
-  if (n == 0 || vol == 0)
+  if n == 0
   then (0, (0, 0, 0), 0, 0)
   else (numDens, vel, c * dens / 3, m * c / (3 * boltzmann))
    where
diff --git a/src/DSMC/Particles.hs b/src/DSMC/Particles.hs
--- a/src/DSMC/Particles.hs
+++ b/src/DSMC/Particles.hs
@@ -53,8 +53,8 @@
             deriving (Show)
 
 
--- | Calculate what model concentration will simulate real flow
--- concentration wrt statistical weight of single particle.
+-- | Calculate model concentration to simulate real flow concentration
+-- wrt statistical weight of single particle as set in flow options.
 modelConcentration :: Flow -> Double
 modelConcentration flow = (concentration flow) / (statWeight flow)
 
@@ -68,16 +68,17 @@
 emptyEnsemble = fromUnboxed1 $ VU.empty
 
 
--- | Amount of particles in ensemble.
+-- | Amount of particles in an ensemble.
 ensembleSize :: Ensemble -> Int
 ensembleSize ens = n where (R.Z R.:. n) = R.extent ens
 
+
 -- | Print particles, one per row, using the format:
 --
 -- > x y z u v w
 --
 -- where @x y z@ are position coordinates and @u v w@ are velocity
--- components.
+-- components. This is handy for debugging purposes.
 printEnsemble :: Ensemble -> IO ()
 printEnsemble particles = do
   VU.forM_ (R.toUnboxed particles)
diff --git a/src/DSMC/Traceables/Parser.hs b/src/DSMC/Traceables/Parser.hs
--- a/src/DSMC/Traceables/Parser.hs
+++ b/src/DSMC/Traceables/Parser.hs
@@ -74,21 +74,21 @@
 
 
 -- | Transformer which adds lookup table to underlying monad.
-type Table a k v = StateT (M.Map k v) a
+type TableT a k v = StateT (M.Map k v) a
 
 
 -- | Add entry to the lookup table.
-addEntry :: (Ord k, Monad a) => k -> v -> Table a k v ()
+addEntry :: (Ord k, Monad a) => k -> v -> TableT a k v ()
 addEntry key value = liftM (M.insert key value) get >>= put
 
 
 -- | Lookup entry in the table.
-getEntry :: (Ord k, Monad a) => k -> Table a k v (Maybe v)
+getEntry :: (Ord k, Monad a) => k -> TableT a k v (Maybe v)
 getEntry key = liftM (M.lookup key) get
 
 
 -- | Parser with lookup table.
-type CSGParser = Table Parser String T.Body
+type CSGParser = TableT Parser String T.Body
 
 
 lp :: Parser Char
diff --git a/src/Data/Splittable.hs b/src/Data/Splittable.hs
--- a/src/Data/Splittable.hs
+++ b/src/Data/Splittable.hs
@@ -1,3 +1,9 @@
+{-|
+
+Splittable containers abstraction.
+
+-}
+
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE UndecidableInstances #-}
 
