diff --git a/Control/Concurrent/SCC/Combinators.hs b/Control/Concurrent/SCC/Combinators.hs
--- a/Control/Concurrent/SCC/Combinators.hs
+++ b/Control/Concurrent/SCC/Combinators.hs
@@ -1,5 +1,5 @@
 {-
-    Copyright 2008-2013 Mario Blazevic
+    Copyright 2008-2016 Mario Blazevic
 
     This file is part of the Streaming Component Combinators (SCC) project.
 
@@ -15,7 +15,7 @@
 -}
 
 {-# LANGUAGE ScopedTypeVariables, RankNTypes, KindSignatures, EmptyDataDecls,
-             MultiParamTypeClasses, FlexibleContexts, FlexibleInstances, OverlappingInstances,
+             MultiParamTypeClasses, FlexibleContexts, FlexibleInstances,
              FunctionalDependencies, TypeFamilies #-}
 {-# OPTIONS_HADDOCK hide #-}
 
diff --git a/Control/Concurrent/SCC/Configurable.hs b/Control/Concurrent/SCC/Configurable.hs
--- a/Control/Concurrent/SCC/Configurable.hs
+++ b/Control/Concurrent/SCC/Configurable.hs
@@ -391,8 +391,8 @@
 -- argument transducer. Data fed to the splitter's false sink is passed on unmodified.
 while :: (MonadParallel m, MonoidNull x) =>
          TransducerComponent m x x -> SplitterComponent m x -> TransducerComponent m x x
-while t s = recursiveComponentTree "while" (uncurry . Combinator.while) 
-            $ Configuration.liftSequentialPair "pair" (,) t s
+while t s = recursiveComponentTree "while" (\binder-> uncurry (Combinator.while binder)) $
+            Configuration.liftSequentialPair "pair" (,) t s
 
 -- | The recursive combinator 'nestedIn' combines two splitters into a mutually recursive loop acting as a single
 -- splitter.  The true sink of one of the argument splitters and false sink of the other become the true and false sinks
@@ -401,8 +401,8 @@
 -- both component splitters are deterministic and stateless, an input value would either not loop at all or it would
 -- loop forever.
 nestedIn :: (MonadParallel m, MonoidNull x) => SplitterComponent m x -> SplitterComponent m x -> SplitterComponent m x
-nestedIn s1 s2 = recursiveComponentTree "nestedIn" (uncurry . Combinator.nestedIn) 
-                 $ Configuration.liftSequentialPair "pair" (,) s1 s2
+nestedIn s1 s2 = recursiveComponentTree "nestedIn" (\binder-> uncurry (Combinator.nestedIn binder)) $
+                 Configuration.liftSequentialPair "pair" (,) s1 s2
 
 -- * Section-based combinators
 
diff --git a/Control/Concurrent/SCC/Types.hs b/Control/Concurrent/SCC/Types.hs
--- a/Control/Concurrent/SCC/Types.hs
+++ b/Control/Concurrent/SCC/Types.hs
@@ -1,5 +1,5 @@
 {- 
-    Copyright 2009-2013 Mario Blazevic
+    Copyright 2009-2016 Mario Blazevic
 
     This file is part of the Streaming Component Combinators (SCC) project.
 
@@ -23,7 +23,7 @@
 -- 
 
 {-# LANGUAGE ScopedTypeVariables, KindSignatures, RankNTypes,
-             MultiParamTypeClasses, FlexibleContexts, FlexibleInstances, OverlappingInstances,
+             MultiParamTypeClasses, FlexibleContexts, FlexibleInstances,
              FunctionalDependencies, TypeFamilies #-}
 
 module Control.Concurrent.SCC.Types (
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -1,14 +1,16 @@
 Executables=${TestExecutables} shsh shsh-prof
-TestExecutables=$(addprefix test/, scc parallel benchmark-coroutine incremental-parser monoid-subclasses \
-                                   enumerator iteratee)
-IncrementalParserFiles=Text/ParserCombinators/Incremental.hs Control/Applicative/Monoid.hs $(MonoidSubclassFiles)
+TestExecutables=$(addprefix test/, scc parallel benchmark-coroutine incremental-parser monoid-subclasses)
+IncrementalParserFiles=incremental-parser/Text/ParserCombinators/Incremental.hs \
+                       incremental-parser/Control/Applicative/Monoid.hs $(MonoidSubclassFiles)
 MonoidSubclassFiles=$(addsuffix .hs, \
-	              $(addprefix Data/Monoid/, Cancellative Factorial Null Textual))
-MonoidInstanceFiles=$(addsuffix .hs, \
-	              $(addprefix Data/Monoid/Instances/, ByteString/UTF8 Concat Measured Positioned Stateful))
+	              $(addprefix monoid-subclasses/Data/Monoid/, Cancellative Factorial Null Textual))
+MonoidInstanceFiles=$(addsuffix .hs, $(addprefix monoid-subclasses/Data/Monoid/Instances/, \
+                      ByteString/UTF8 Concat Measured Positioned Stateful))
+ParallelLibraryFiles=$(addprefix monad-parallel/Control/Monad/, Parallel.hs)
 CoroutineLibraryFiles=$(IncrementalParserFiles)      \
-	                   $(addprefix Control/Monad/,  \
-                                  Parallel.hs Coroutine.hs Coroutine/SuspensionFunctors.hs Coroutine/Nested.hs)
+	                   $(ParallelLibraryFiles)        \
+	                   $(addprefix monad-coroutine/Control/Monad/,    \
+                                  Coroutine.hs Coroutine/SuspensionFunctors.hs Coroutine/Nested.hs)
 SCCCommonFiles=$(CoroutineLibraryFiles) \
                 Control/Concurrent/Configuration.hs  \
 	      	    $(addprefix Control/Concurrent/SCC/, \
@@ -17,11 +19,12 @@
                 Control/Concurrent/SCC/Combinators.hs \
                 Control/Concurrent/SCC/Combinators/Parallel.hs Control/Concurrent/SCC/Combinators/Sequential.hs \
                 Control/Concurrent/SCC/Parallel.hs Control/Concurrent/SCC/Sequential.hs
-DocumentationFiles=$(SCCCommonFiles) Control/Monad/Coroutine/Enumerator.hs Control/Monad/Coroutine/Iteratee.hs \
+DocumentationFiles=$(SCCCommonFiles) \
                 Control/Concurrent/SCC/Combinators/Parallel.hs Control/Concurrent/SCC/Combinators/Sequential.hs \
                 Control/Concurrent/SCC/Parallel.hs Control/Concurrent/SCC/Sequential.hs
-OptimizingOptions=-O -threaded -fcontext-stack=30 -rtsopts -hidir obj -odir obj
-ProfilingOptions=-prof -auto-all -rtsopts -hidir prof -odir prof
+OptimizingOptions=-O -threaded -fcontext-stack=30 -rtsopts -hidir obj -odir obj $(GeneralOptions)
+ProfilingOptions=-prof -auto-all -rtsopts -hidir prof -odir prof $(GeneralOptions)
+GeneralOptions=-i.:monoid-subclasses:incremental-parser:monad-parallel:monad-coroutine $(addprefix -package-db , $(wildcard .cabal-sandbox/*-packages.conf.d))
 
 all: $(Executables) doc/index.html
 
@@ -30,13 +33,13 @@
 test/scc: Test/TestSCC.hs $(AllLibraryFiles) | obj test
 	ghc --make $< -o $@ $(OptimizingOptions)
 
-test/benchmark-coroutine: Test/BenchmarkCoroutine.hs $(CoroutineLibraryFiles) | obj test
+test/benchmark-coroutine: monad-coroutine/Test/BenchmarkCoroutine.hs $(CoroutineLibraryFiles) | obj test
 	ghc --make $< -o $@ $(OptimizingOptions) -eventlog
 
-test/incremental-parser: Test/TestIncrementalParser.hs $(IncrementalParserFiles) | obj test
+test/incremental-parser: incremental-parser/Test/TestIncrementalParser.hs $(IncrementalParserFiles) | obj test
 	ghc --make $< -o $@ $(OptimizingOptions) -eventlog
 
-test/monoid-subclasses: Test/TestMonoidSubclasses.hs $(MonoidSubclassFiles) $(MonoidInstanceFiles) | obj test
+test/monoid-subclasses: monoid-subclasses/Test/TestMonoidSubclasses.hs $(MonoidSubclassFiles) $(MonoidInstanceFiles) | obj test
 	ghc --make $< -o $@ $(OptimizingOptions) -eventlog -hide-package checkers -package quickcheck-instances \
         -cpp -D'MIN_VERSION_containers(x,y,z)=1'
 
@@ -46,7 +49,7 @@
 test/iteratee: Test/TestIteratee.hs $(CoroutineLibraryFiles) Control/Monad/Coroutine/Iteratee.hs | obj test
 	ghc --make $< -o $@ $(OptimizingOptions) -eventlog
 
-test/parallel: Test/TestParallel.hs Control/Monad/Parallel.hs | obj test
+test/parallel: monad-parallel/Test/TestParallel.hs $(ParallelLibraryFiles) | obj test
 	ghc --make $< -o $@ $(OptimizingOptions) -eventlog
 
 shsh: Shell.hs $(AllLibraryFiles) | obj
@@ -59,12 +62,10 @@
 	ghc --make $< -o $@ $(ProfilingOptions)
 
 doc/index.html: $(DocumentationFiles) | doc
-	haddock -hU -o doc \
+	haddock -hU -o doc --optghc="$(GeneralOptions)" \
 	   -i http://www.haskell.org/ghc/docs/latest/html/libraries/base,base.haddock \
-	   -i $(lastword $(wildcard ~/.cabal/share/doc/enumerator-*/html/)),$(lastword $(wildcard ~/.cabal/share/doc/enumerator-*/html/enumerator.haddock)) \
-	   -i $(lastword $(wildcard ~/.cabal/share/doc/iteratee-*/html/)),$(lastword $(wildcard ~/.cabal/share/doc/iteratee-*/html/iteratee.haddock)) \
-	   -i $(lastword $(wildcard ~/.cabal/share/doc/transformers-*/html/)),$(lastword $(wildcard ~/.cabal/share/doc/transformers-*/html/transformers.haddock)) \
-	   -i $(lastword $(wildcard ~/.cabal/share/doc/text-*/html/)),$(lastword $(wildcard ~/.cabal/share/doc/text-*/html/text.haddock)) \
+	   -i $(lastword $(wildcard ~/.cabal/share/doc/*/transformers-*/html/)),$(lastword $(wildcard ~/.cabal/share/doc/*/transformers-*/html/transformers.haddock)) \
+	   -i $(lastword $(wildcard ~/.cabal/share/doc/*/text-*/html/)),$(lastword $(wildcard ~/.cabal/share/doc/*/text-*/html/text.haddock)) \
 	   $^
 
 obj prof test doc:
diff --git a/scc.cabal b/scc.cabal
--- a/scc.cabal
+++ b/scc.cabal
@@ -1,5 +1,5 @@
 Name:                scc
-Version:             0.8.2.2
+Version:             0.8.2.4
 Cabal-Version:       >= 1.10
 Build-Type:          Simple
 Synopsis:            Streaming component combinators
@@ -17,7 +17,7 @@
 
 License:             GPL
 License-file:        LICENSE.txt
-Copyright:           (c) 2008-2015 Mario Blazevic
+Copyright:           (c) 2008-2016 Mario Blazevic
 Author:              Mario Blazevic
 Maintainer:          blamario@yahoo.com
 Homepage:            http://trac.haskell.org/SCC/
@@ -32,7 +32,7 @@
                      Control.Concurrent.SCC.Combinators, Control.Concurrent.SCC.Primitives, Control.Concurrent.SCC.XML,
                      Control.Concurrent.Configuration, Control.Concurrent.SCC.Configurable
   Build-Depends:     base < 5, containers,
-                     transformers >= 0.2 && < 0.5, transformers-compat >= 0.3 && < 0.4, bytestring < 1.0, text < 1.3,
+                     transformers >= 0.2 && < 0.6, transformers-compat >= 0.3 && < 0.6, bytestring < 1.0, text < 1.3,
                      monoid-subclasses >= 0.2 && < 0.5, incremental-parser >= 0.2.2 && < 0.3,
                      monad-parallel, monad-coroutine == 0.9.*,
                      process, haskeline, parsec == 3.*
@@ -49,7 +49,7 @@
                      Control.Concurrent.SCC.XML,
                      Control.Concurrent.Configuration, Control.Concurrent.SCC.Configurable
   Build-Depends:     base < 5, containers,
-                     transformers >= 0.2 && < 0.5, transformers-compat >= 0.3 && < 0.4, bytestring < 1.0, text < 1.3,
+                     transformers >= 0.2 && < 0.6, transformers-compat >= 0.3 && < 0.6, bytestring < 1.0, text < 1.3,
                      monoid-subclasses >= 0.2 && < 0.5, incremental-parser >= 0.2.2 && < 0.3,
                      monad-parallel, monad-coroutine == 0.9.*,
                      QuickCheck >= 2 && < 3, test-framework >= 0.4.1, test-framework-quickcheck2
@@ -65,9 +65,8 @@
                      Control.Concurrent.SCC.Combinators.Parallel, Control.Concurrent.SCC.Combinators.Sequential,
                      Control.Concurrent.SCC.Combinators, Control.Concurrent.SCC.Primitives, Control.Concurrent.SCC.XML
   Build-Depends:     base < 5, containers,
-                     transformers >= 0.2 && < 0.5, transformers-compat >= 0.3 && < 0.4, bytestring < 1.0, text < 1.3,
+                     transformers >= 0.2 && < 0.6, transformers-compat >= 0.3 && < 0.6, bytestring < 1.0, text < 1.3,
                      monoid-subclasses >= 0.2 && < 0.5, incremental-parser >= 0.2.2 && < 0.3,
                      monad-parallel, monad-coroutine == 0.9.*
-  GHC-prof-options:  -auto-all
   if impl(ghc >= 7.0.0)
      default-language: Haskell2010
