diff --git a/dynamic-pipeline.cabal b/dynamic-pipeline.cabal
--- a/dynamic-pipeline.cabal
+++ b/dynamic-pipeline.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           dynamic-pipeline
-version:        0.1.0.4
+version:        0.1.0.5
 synopsis:       Library Type Safe implementation of Dynamic Pipeline Paradigm (DPP).
 description:    @dynamic-pipeline@ is a __/Type Safe/__ Dynamic and Parallel Streaming Library, which is an implementation of __Dynamic Pipeline Paradigm (DPP)__ 
                 proposed in this paper [DPP](https://biblioteca.sistedes.es/articulo/the-dynamic-pipeline-paradigm/).
diff --git a/src/DynamicPipeline/Channel.hs b/src/DynamicPipeline/Channel.hs
--- a/src/DynamicPipeline/Channel.hs
+++ b/src/DynamicPipeline/Channel.hs
@@ -9,27 +9,29 @@
 -- Stability   : experimental
 -- Portability : GHC
 --
-module DynamicPipeline.Channel 
-  ( ReadChannel,
-    WriteChannel,
-    DynamicPipeline.Channel.foldM,
-    foldM',
-    push,
-    pull,
-    unfoldM,
-    unfoldFile,
-    unfoldT, 
-    newChannel,
-    end
+module DynamicPipeline.Channel
+  ( ReadChannel
+  , WriteChannel
+  , DynamicPipeline.Channel.foldM
+  , foldM'
+  , push
+  , pull
+  , unfoldM
+  , unfoldFile
+  , unfoldT
+  , newChannel
+  , end
   ) where
 
-import qualified Control.Concurrent                       as CC
+import qualified Control.Concurrent                                as CC
 import           Control.Concurrent.Chan.Unagi.NoBlocking
-import           Control.Lens                             hiding ((<|))
-import           Data.ByteString                          as B
-import           Data.Foldable                            as F
+import           Control.Lens                                                                                  hiding ( (<|)
+                                                                                                                      )
+import           Data.ByteString                                   as B
+import           Data.Foldable                                     as F
 import           Data.HList
-import           Relude                                   as R
+import           GHC.IO.Handle                                     as H
+import           Relude                                            as R
 
 
 -- | 'WriteChannel' can only write values into some Channel Queue
@@ -44,7 +46,7 @@
 
 -- | 'foldM' is a /Catamorphism/ for consuming a 'ReadChannel' and do some Monadic @m@ computation with each element
 {-# INLINE foldM #-}
-foldM :: MonadIO m 
+foldM :: MonadIO m
       => ReadChannel a -- ^'ReadChannel'
       -> (a -> m ()) -- ^Computation to do with read element
       -> m ()
@@ -52,15 +54,12 @@
 
 -- | Idem 'foldM' but allows pass a monadic computation to perform at the end of the Channel
 {-# INLINE foldM' #-}
-foldM' :: MonadIO m 
+foldM' :: MonadIO m
        => ReadChannel a -- ^'ReadChannel'
        -> m () -- ^Computation to do at the end of the channel
        -> (a -> m ()) -- ^Computation to do with read element
        -> m ()
-foldM' = loop'
-  where
-    loop' c onNothing io = 
-      maybe onNothing (\e -> io e >> loop' c onNothing io) =<< liftIO (pull c)
+foldM' = loop' where loop' c onNothing io = maybe onNothing (\e -> io e >> loop' c onNothing io) =<< liftIO (pull c)
 
 -- | Push element @a@ into 'WriteChannel'
 {-# INLINE push #-}
@@ -80,27 +79,26 @@
 --
 -- | unfold from a Monadic seed @m a@ to a 'WriteChannel'
 {-# INLINE unfoldM #-}
-unfoldM :: forall m a b. MonadIO m 
+unfoldM :: forall m a b
+         . MonadIO m
         => m a -- ^Monadic Seed 
         -> (a -> b) -- ^Map input from seed to something to be written in Channel
         -> m Bool -- ^When stop unfolding
         -> WriteChannel b -- ^'WriteChannel' to write input seed elements
         -> m ()
-unfoldM = loop' 
-  where
-    loop' seed fn stopIfM writeChannel =  ifM stopIfM
-                                              (pure ())
-                                              (seed >>= flip push writeChannel . fn >> loop' seed fn stopIfM writeChannel)
+unfoldM = loop'
+ where
+  loop' seed fn stopIfM writeChannel =
+    ifM stopIfM (pure ()) (seed >>= flip push writeChannel . fn >> loop' seed fn stopIfM writeChannel)
 -- | Using 'unfoldM', unfold from file
 {-# INLINE unfoldFile #-}
-unfoldFile :: MonadIO m 
+unfoldFile :: MonadIO m
            => FilePath -- ^Seed 'FilePath' to read from
            -> WriteChannel b -- ^'WriteChannel' to write File contents
            -> (ByteString -> b) -- ^Transform 'ByteString' read from File to something meaningful for your App
            -> m ()
-unfoldFile file writeChannel fn = liftIO $
-    R.withFile file ReadMode $ \h ->
-      unfoldM (B.hGetLine h) fn (R.hIsEOF h) writeChannel
+unfoldFile file writeChannel fn =
+  liftIO $ R.withFile file ReadMode $ \h -> unfoldM (B.hGetLine h) fn (H.hIsEOF h) writeChannel
 
 -- | Idem 'unfoldM' but for 'Foldable', for example a List @[a]@. Useful for testing purpose
 {-# INLINE unfoldT #-}
@@ -109,7 +107,7 @@
 
 {-# WARNING newChannel "INTERNAL USE" #-}
 {-# NOINLINE newChannel #-}
-newChannel :: forall a. IO (WriteChannel a, ReadChannel a)
+newChannel :: forall a . IO (WriteChannel a, ReadChannel a)
 newChannel = bimap WriteChannel ReadChannel <$> newChan
 
 {-# WARNING end "INTERNAL USE" #-}
