diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,4 +1,9 @@
-# Version 0.4
+# Version 0.5
+
+  * Removed implicit Prelude from cabal
+
+
+# Version 0.4 (2016-12-22)
 
   * reimplemented resampling function
   * Implemented Sessions
diff --git a/src/Data/TimeSeries.hs b/src/Data/TimeSeries.hs
--- a/src/Data/TimeSeries.hs
+++ b/src/Data/TimeSeries.hs
@@ -1,7 +1,15 @@
 -- | TimeSeries library
-module Data.TimeSeries (module X) where
-  import Data.TimeSeries.Series as X
-  import Data.TimeSeries.Stats as X
-  import Data.TimeSeries.Time as X
-  import Data.TimeSeries.IO.CSVReader as X
-  import Data.TimeSeries.IO.CSVWriter as X
+module Data.TimeSeries
+    ( module Data.TimeSeries.Series
+    , module Data.TimeSeries.Stats
+    , module Data.TimeSeries.Time
+    , module Data.TimeSeries.IO.CSVReader
+    , module Data.TimeSeries.IO.CSVWriter
+    ) where
+
+
+import Data.TimeSeries.Series
+import Data.TimeSeries.Stats
+import Data.TimeSeries.Time
+import Data.TimeSeries.IO.CSVReader
+import Data.TimeSeries.IO.CSVWriter
diff --git a/src/Data/TimeSeries/IO/CSVReader.hs b/src/Data/TimeSeries/IO/CSVReader.hs
--- a/src/Data/TimeSeries/IO/CSVReader.hs
+++ b/src/Data/TimeSeries/IO/CSVReader.hs
@@ -1,12 +1,21 @@
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE OverloadedStrings #-}
 
+{-|
+Module:      Data.TimeSeries.IO.CSVReader
+Copyright:   (c) 2016 Krzysztof Langner
+License:     BSD3
+Stability:   experimental
+Portability: portable
+Reading Time Series from CSV file
+-}
 module Data.TimeSeries.IO.CSVReader
     ( HasHeader(..)
     , loadCSV
     )where
 
 
+import Prelude
 import qualified Data.ByteString.Lazy as BS
 import qualified Data.Text as T
 import qualified Data.Csv as CSV
@@ -18,6 +27,7 @@
                                         , series
                                         )
 
+-- | Define if csv file has header
 data HasHeader = HasHeader | NoHeader
 
 -- | Load data from CSV file and create Time Series from it
diff --git a/src/Data/TimeSeries/IO/CSVWriter.hs b/src/Data/TimeSeries/IO/CSVWriter.hs
--- a/src/Data/TimeSeries/IO/CSVWriter.hs
+++ b/src/Data/TimeSeries/IO/CSVWriter.hs
@@ -1,4 +1,12 @@
 {-# LANGUAGE OverloadedStrings #-}
+{-|
+Module:      Data.TimeSeries.IO.CSVWriter
+Copyright:   (c) 2016 Krzysztof Langner
+License:     BSD3
+Stability:   experimental
+Portability: portable
+Write Time Series to the csv file.
+-}
 
 module Data.TimeSeries.IO.CSVWriter( saveCSV ) where
 
diff --git a/src/Data/TimeSeries/Series.hs b/src/Data/TimeSeries/Series.hs
--- a/src/Data/TimeSeries/Series.hs
+++ b/src/Data/TimeSeries/Series.hs
@@ -37,9 +37,10 @@
 import Data.TimeSeries.Time (TimeResolution, nextTime)
 
 
--- | Data points is single index value od time series
-data DataPoint a = DP { dpIndex :: !UTCTime
-                      , dpValue :: a }
+-- | Data points is a time indexed value
+data DataPoint a = DP { dpIndex :: !UTCTime     -- ^ Get data point index.
+                      , dpValue :: a            -- ^ Get data point value.
+                      }
                  deriving (Show, Eq)
 
 instance Functor DataPoint where
@@ -61,12 +62,12 @@
     length = size
 
 
--- | Create empty series
+-- | Create empty series.
 emptySeries :: Series a
 emptySeries = Series []
 
 
--- | Create series
+-- | Create series from UTCTime and value.
 series :: [(UTCTime, a)] -> Series a
 series xs = Series $ map (uncurry DP) xs
 
@@ -82,12 +83,12 @@
     where idx = map (posixSecondsToUTCTime . fromIntegral) ts
 
 
--- | Convert Time Series to list
+-- | Convert Time Series to the list.
 toList :: Series a -> [(UTCTime, a)]
 toList (Series xs) = map (\(DP x y) -> (x, y)) xs
 
 
--- | Get series values
+-- | Get series values as list.
 values :: Series a -> [a]
 values ts = map snd (toList ts)
 
@@ -115,7 +116,7 @@
           safeHead (i:_) = Just i
 
 
--- | Return series subset
+-- | Return series subset.
 -- Complexity O(n)
 --
 -- >slice (Series [DP 1 41.3, DP 2 52.22, DP 3 3.0]) 2 3 == Series [DP 2 52.22, DP 3 3.0]
@@ -128,7 +129,7 @@
 slice start end (Series xs) = Series [DP x y | DP x y <- xs, x >= start && x <= end]
 
 
--- | Apply function to rolling window to create new Series
+-- | Apply rolling window to create a new Series.
 -- Rolling window is also called Sliding Window.
 rolling ::  TimeResolution  -- ^ Window size
         -> ([a] -> b)       -- ^ Function applied to each window
@@ -151,7 +152,7 @@
 isInTimeRange dt (DP i _) (DP j _) = j < nextTime dt i
 
 
--- | Resample Time series
+-- | Resample Series.
 resample :: Fractional a
          => UTCTime             -- ^ Starting time
          -> TimeResolution      -- ^ Resampling resolution
diff --git a/src/Data/TimeSeries/Sessions.hs b/src/Data/TimeSeries/Sessions.hs
--- a/src/Data/TimeSeries/Sessions.hs
+++ b/src/Data/TimeSeries/Sessions.hs
@@ -1,9 +1,19 @@
+{-|
+Module:      Data.TimeSeries.Sessions
+Copyright:   (c) 2016 Krzysztof Langner
+License:     BSD3
+Stability:   experimental
+Portability: portable
+Operation on sessions.
+-}
 
 module Data.TimeSeries.Sessions
     ( Session(..)
     , find
     ) where
 
+
+import Prelude
 import Data.Time (UTCTime)
 import Data.TimeSeries.Series (Series, toList)
 
@@ -12,14 +22,17 @@
 
 -- | Session is a time range of a single event
 --   Some examples:
+--
 --     * Session with web application
+--
 --     * Rain event
+--
 data Session = Session { sessionStart :: UTCTime
                        , sessionEnd :: UTCTime }
                        deriving (Eq, Show)
 
 
--- | Find all session in a given time series
+-- | Find all session in a given Time Series
 find :: TimeResolution -> Series Bool -> [Session]
 find dt ts = map (uncurry Session) xs'
     where
diff --git a/src/Data/TimeSeries/Stats.hs b/src/Data/TimeSeries/Stats.hs
--- a/src/Data/TimeSeries/Stats.hs
+++ b/src/Data/TimeSeries/Stats.hs
@@ -1,3 +1,11 @@
+{-|
+Module:      Data.TimeSeries.Stats
+Copyright:   (c) 2016 Krzysztof Langner
+License:     BSD3
+Stability:   experimental
+Portability: portable
+Calculate Series statistics.
+-}
 
 module Data.TimeSeries.Stats
     ( mean
diff --git a/src/Data/TimeSeries/Time.hs b/src/Data/TimeSeries/Time.hs
--- a/src/Data/TimeSeries/Time.hs
+++ b/src/Data/TimeSeries/Time.hs
@@ -1,4 +1,11 @@
--- | Helper functions operating on date and Time
+{-|
+Module:      Data.TimeSeries.Time
+Copyright:   (c) 2016 Krzysztof Langner
+License:     BSD3
+Stability:   experimental
+Portability: portable
+Helper functions operating on date and Time
+-}
 module Data.TimeSeries.Time
     ( TimeResolution
     , days
@@ -8,6 +15,7 @@
     , years
     ) where
 
+import Prelude (Integer, Int, fromIntegral, (*))
 import Data.Time( UTCTime(..)
                 , NominalDiffTime
                 , addDays
diff --git a/test-src/Data/TimeSeries/IO/CSVSpec.hs b/test-src/Data/TimeSeries/IO/CSVSpec.hs
--- a/test-src/Data/TimeSeries/IO/CSVSpec.hs
+++ b/test-src/Data/TimeSeries/IO/CSVSpec.hs
@@ -1,5 +1,6 @@
 module Data.TimeSeries.IO.CSVSpec (spec) where
 
+import Prelude
 import Test.Hspec
 import Data.Text.Time (parseISODateTime)
 
diff --git a/test-src/Data/TimeSeries/SeriesSpec.hs b/test-src/Data/TimeSeries/SeriesSpec.hs
--- a/test-src/Data/TimeSeries/SeriesSpec.hs
+++ b/test-src/Data/TimeSeries/SeriesSpec.hs
@@ -1,5 +1,6 @@
 module Data.TimeSeries.SeriesSpec (spec) where
 
+import Prelude
 import Test.Hspec
 import Control.Arrow (first)
 import Data.Time (UTCTime)
diff --git a/test-src/Data/TimeSeries/SessionsSpec.hs b/test-src/Data/TimeSeries/SessionsSpec.hs
--- a/test-src/Data/TimeSeries/SessionsSpec.hs
+++ b/test-src/Data/TimeSeries/SessionsSpec.hs
@@ -1,5 +1,6 @@
 module Data.TimeSeries.SessionsSpec (spec) where
 
+import Prelude
 import Test.Hspec
 import Data.Time.Clock.POSIX (posixSecondsToUTCTime, utcTimeToPOSIXSeconds)
 import Data.Time (NominalDiffTime)
diff --git a/test-src/Data/TimeSeries/StatsSpec.hs b/test-src/Data/TimeSeries/StatsSpec.hs
new file mode 100644
--- /dev/null
+++ b/test-src/Data/TimeSeries/StatsSpec.hs
@@ -0,0 +1,28 @@
+module Data.TimeSeries.StatsSpec (spec) where
+
+import Prelude
+import Test.Hspec
+import Data.Time.Clock.POSIX (posixSecondsToUTCTime, utcTimeToPOSIXSeconds)
+
+import qualified Data.TimeSeries as TS
+
+
+spec :: Spec
+spec =
+
+  describe "Base" $ do
+
+    it "mean" $ do
+        let idx = [1..]
+        let values = [1.0, 2.0, 3.0] :: [Double]
+        TS.mean (TS.tsSeries idx values) `shouldBe` 2.0
+
+    it "variance" $ do
+        let idx = [1..]
+        let values = [1.0..6.0] :: [Double]
+        TS.variance (TS.tsSeries idx values) `shouldBe` 35/12
+
+    it "standard deviation" $ do
+        let idx = [1..]
+        let values = [1.0..6.0] :: [Double]
+        TS.std (TS.tsSeries idx values) `shouldBe` sqrt (35/12)
diff --git a/test-src/Data/TimeSeries/TimeSpec.hs b/test-src/Data/TimeSeries/TimeSpec.hs
--- a/test-src/Data/TimeSeries/TimeSpec.hs
+++ b/test-src/Data/TimeSeries/TimeSpec.hs
@@ -1,5 +1,6 @@
 module Data.TimeSeries.TimeSpec (spec) where
 
+import Prelude
 import Data.Time hiding (months)
 import Test.Hspec
 import Test.QuickCheck
diff --git a/test-src/Spec.hs b/test-src/Spec.hs
--- a/test-src/Spec.hs
+++ b/test-src/Spec.hs
@@ -1,3 +1,5 @@
+
+import Prelude
 import Test.Hspec
 import qualified Data.TimeSeries.SeriesSpec
 import qualified Data.TimeSeries.SessionsSpec
diff --git a/timeseries.cabal b/timeseries.cabal
--- a/timeseries.cabal
+++ b/timeseries.cabal
@@ -1,5 +1,5 @@
 name:           timeseries
-version:        0.4.0
+version:        0.4.1
 synopsis:       Library for Time Series processing
 License:        BSD3
 License-file:   LICENSE
@@ -28,6 +28,8 @@
 library
   hs-source-dirs:   src
   default-language: Haskell2010
+  default-extensions:
+                    NoImplicitPrelude
   ghc-options:      -O2 -Wall -fwarn-tabs -funbox-strict-fields
   build-depends:
                     base >= 4.7 && < 5,
@@ -52,6 +54,8 @@
   type:             exitcode-stdio-1.0
   main-is:          Spec.hs
   default-language: Haskell2010
+  default-extensions:
+                    NoImplicitPrelude
   ghc-options:      -threaded -rtsopts -fsimpl-tick-factor=500
   build-depends:
                     base >= 4 && <5,
@@ -72,6 +76,7 @@
                     Data.TimeSeries.Stats
                     Data.TimeSeries.Time
                     Data.TimeSeries.SeriesSpec
+                    Data.TimeSeries.StatsSpec
                     Data.TimeSeries.SessionsSpec
                     Data.TimeSeries.TimeSpec
                     Data.TimeSeries.IO.CSVReader
