diff --git a/CasIORef.hs b/CasIORef.hs
--- a/CasIORef.hs
+++ b/CasIORef.hs
@@ -10,6 +10,6 @@
 casIORef (IORef (STRef r#)) old new = IO $ \s ->
    case casMutVar# r# old new s of
      (# s', did, val #) ->
-        if did ==# 0# then (# s', True #)
-                      else (# s', False #)
-
+        case did of
+             0# -> (# s', False #)
+             _  -> (# s', True #)
diff --git a/dist/build/parinfer/parinfer-tmp/Lex.hs b/dist/build/parinfer/parinfer-tmp/Lex.hs
--- a/dist/build/parinfer/parinfer-tmp/Lex.hs
+++ b/dist/build/parinfer/parinfer-tmp/Lex.hs
@@ -67,11 +67,11 @@
 
 {-# LINE 72 "templates/wrappers.hs" #-}
 
-{-# LINE 92 "templates/wrappers.hs" #-}
+{-# LINE 89 "templates/wrappers.hs" #-}
 
-{-# LINE 106 "templates/wrappers.hs" #-}
+{-# LINE 103 "templates/wrappers.hs" #-}
 
-{-# LINE 121 "templates/wrappers.hs" #-}
+{-# LINE 118 "templates/wrappers.hs" #-}
 
 -- -----------------------------------------------------------------------------
 -- Token positions
@@ -83,18 +83,18 @@
 -- `move_pos' calculates the new position after traversing a given character,
 -- assuming the usual eight character tab stops.
 
-{-# LINE 144 "templates/wrappers.hs" #-}
+{-# LINE 141 "templates/wrappers.hs" #-}
 
 -- -----------------------------------------------------------------------------
 -- Default monad
 
-{-# LINE 242 "templates/wrappers.hs" #-}
+{-# LINE 239 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
 -- Monad (with ByteString input)
 
-{-# LINE 333 "templates/wrappers.hs" #-}
+{-# LINE 328 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
@@ -127,9 +127,9 @@
 -- -----------------------------------------------------------------------------
 -- Basic wrapper, ByteString version
 
-{-# LINE 378 "templates/wrappers.hs" #-}
+{-# LINE 373 "templates/wrappers.hs" #-}
 
-{-# LINE 392 "templates/wrappers.hs" #-}
+{-# LINE 386 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
@@ -137,13 +137,13 @@
 
 -- Adds text positions to the basic model.
 
-{-# LINE 409 "templates/wrappers.hs" #-}
+{-# LINE 403 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
 -- Posn wrapper, ByteString version
 
-{-# LINE 424 "templates/wrappers.hs" #-}
+{-# LINE 418 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
@@ -204,7 +204,6 @@
 
 
 
--- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.
 #if __GLASGOW_HASKELL__ > 706
 #define GTE(n,m) (tagToEnum# (n >=# m))
 #define EQ(n,m) (tagToEnum# (n ==# m))
@@ -212,11 +211,11 @@
 #define GTE(n,m) (n >=# m)
 #define EQ(n,m) (n ==# m)
 #endif
-{-# LINE 51 "templates/GenericTemplate.hs" #-}
+{-# LINE 50 "templates/GenericTemplate.hs" #-}
 
 
 data AlexAddr = AlexA# Addr#
--- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.
+
 #if __GLASGOW_HASKELL__ < 503
 uncheckedShiftL# = shiftL#
 #endif
@@ -259,7 +258,6 @@
 
 
 
-
 #if __GLASGOW_HASKELL__ < 503
 quickIndex arr i = arr ! i
 #else
@@ -348,7 +346,7 @@
 	check_accs (AlexAccNone) = last_acc
 	check_accs (AlexAcc a  ) = AlexLastAcc a input (I# (len))
 	check_accs (AlexAccSkip) = AlexLastSkip  input (I# (len))
-{-# LINE 198 "templates/GenericTemplate.hs" #-}
+{-# LINE 196 "templates/GenericTemplate.hs" #-}
 
 data AlexLastAcc a
   = AlexNone
@@ -364,7 +362,7 @@
   = AlexAccNone
   | AlexAcc a
   | AlexAccSkip
-{-# LINE 242 "templates/GenericTemplate.hs" #-}
+{-# LINE 240 "templates/GenericTemplate.hs" #-}
 
 -- used by wrappers
 iUnbox (I# (i)) = i
diff --git a/dist/build/parinfer/parinfer-tmp/Parse.hs b/dist/build/parinfer/parinfer-tmp/Parse.hs
--- a/dist/build/parinfer/parinfer-tmp/Parse.hs
+++ b/dist/build/parinfer/parinfer-tmp/Parse.hs
@@ -6,7 +6,7 @@
 import qualified Data.Array as Happy_Data_Array
 import qualified GHC.Exts as Happy_GHC_Exts
 
--- parser produced by Happy Version 1.19.3
+-- parser produced by Happy Version 1.19.0
 
 newtype HappyAbsSyn t8 t9 t10 t11 = HappyAbsSyn HappyAny
 #if __GLASGOW_HASKELL__ >= 607
@@ -316,7 +316,6 @@
 
 
 
--- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.
 #if __GLASGOW_HASKELL__ > 706
 #define LT(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.<# m)) :: Bool)
 #define GTE(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.>=# m)) :: Bool)
@@ -326,7 +325,7 @@
 #define GTE(n,m) (n Happy_GHC_Exts.>=# m)
 #define EQ(n,m) (n Happy_GHC_Exts.==# m)
 #endif
-{-# LINE 46 "templates/GenericTemplate.hs" #-}
+{-# LINE 45 "templates/GenericTemplate.hs" #-}
 
 
 data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList
@@ -335,11 +334,11 @@
 
 
 
-{-# LINE 67 "templates/GenericTemplate.hs" #-}
+{-# LINE 66 "templates/GenericTemplate.hs" #-}
 
-{-# LINE 77 "templates/GenericTemplate.hs" #-}
+{-# LINE 76 "templates/GenericTemplate.hs" #-}
 
-{-# LINE 86 "templates/GenericTemplate.hs" #-}
+{-# LINE 85 "templates/GenericTemplate.hs" #-}
 
 infixr 9 `HappyStk`
 data HappyStk a = HappyStk a (HappyStk a)
@@ -356,9 +355,9 @@
 -- parse (a %partial parser).  We must ignore the saved token on the top of
 -- the stack in this case.
 happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =
-        happyReturn1 ans
+	happyReturn1 ans
 happyAccept j tk st sts (HappyStk ans _) = 
-        (happyTcHack j (happyTcHack st)) (happyReturn1 ans)
+	(happyTcHack j (happyTcHack st)) (happyReturn1 ans)
 
 -----------------------------------------------------------------------------
 -- Arrays only: do the next action
@@ -366,35 +365,35 @@
 
 
 happyDoAction i tk st
-        = {- nothing -}
+	= {- nothing -}
 
 
-          case action of
-                0#           -> {- nothing -}
-                                     happyFail i tk st
-                -1#          -> {- nothing -}
-                                     happyAccept i tk st
-                n | LT(n,(0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}
+	  case action of
+		0#		  -> {- nothing -}
+				     happyFail i tk st
+		-1# 	  -> {- nothing -}
+				     happyAccept i tk st
+		n | LT(n,(0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}
 
-                                                   (happyReduceArr Happy_Data_Array.! rule) i tk st
-                                                   where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))
-                n                 -> {- nothing -}
+				     (happyReduceArr Happy_Data_Array.! rule) i tk st
+				     where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))
+		n		  -> {- nothing -}
 
 
-                                     happyShift new_state i tk st
+				     happyShift new_state i tk st
                                      where new_state = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))
    where off    = indexShortOffAddr happyActOffsets st
          off_i  = (off Happy_GHC_Exts.+# i)
-         check  = if GTE(off_i,(0# :: Happy_GHC_Exts.Int#))
+	 check  = if GTE(off_i,(0# :: Happy_GHC_Exts.Int#))
                   then EQ(indexShortOffAddr happyCheck off_i, i)
-                  else False
+		  else False
          action
           | check     = indexShortOffAddr happyTable off_i
           | otherwise = indexShortOffAddr happyDefActions st
 
 
 indexShortOffAddr (HappyA# arr) off =
-        Happy_GHC_Exts.narrow16Int# i
+	Happy_GHC_Exts.narrow16Int# i
   where
         i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low)
         high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#)))
@@ -413,7 +412,7 @@
 -----------------------------------------------------------------------------
 -- HappyState data type (not arrays)
 
-{-# LINE 170 "templates/GenericTemplate.hs" #-}
+{-# LINE 169 "templates/GenericTemplate.hs" #-}
 
 -----------------------------------------------------------------------------
 -- Shifting a token
@@ -455,9 +454,9 @@
      = happyFail 0# tk st sts stk
 happyReduce k nt fn j tk st sts stk
      = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of
-         sts1@((HappyCons (st1@(action)) (_))) ->
-                let r = fn stk in  -- it doesn't hurt to always seq here...
-                happyDoSeq r (happyGoto nt j tk st1 sts1 r)
+	 sts1@((HappyCons (st1@(action)) (_))) ->
+        	let r = fn stk in  -- it doesn't hurt to always seq here...
+       		happyDoSeq r (happyGoto nt j tk st1 sts1 r)
 
 happyMonadReduce k nt fn 0# tk st sts stk
      = happyFail 0# tk st sts stk
@@ -509,7 +508,7 @@
 -- parse error if we are in recovery and we fail again
 happyFail 0# tk old_st _ stk@(x `HappyStk` _) =
      let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
---      trace "failing" $ 
+--	trace "failing" $ 
         happyError_ i tk
 
 {-  We don't need state discarding for our restricted implementation of
@@ -518,16 +517,16 @@
 
 -- discard a state
 happyFail  0# tk old_st (HappyCons ((action)) (sts)) 
-                                                (saved_tok `HappyStk` _ `HappyStk` stk) =
---      trace ("discarding state, depth " ++ show (length stk))  $
-        happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))
+						(saved_tok `HappyStk` _ `HappyStk` stk) =
+--	trace ("discarding state, depth " ++ show (length stk))  $
+	happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))
 -}
 
 -- Enter error recovery: generate an error token,
 --                       save the old token and carry on.
 happyFail  i tk (action) sts stk =
 --      trace "entering error recovery" $
-        happyDoAction 0# tk action sts ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)
+	happyDoAction 0# tk action sts ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)
 
 -- Internal happy errors:
 
@@ -545,9 +544,9 @@
 
 -----------------------------------------------------------------------------
 -- Seq-ing.  If the --strict flag is given, then Happy emits 
---      happySeq = happyDoSeq
+--	happySeq = happyDoSeq
 -- otherwise it emits
---      happySeq = happyDontSeq
+-- 	happySeq = happyDontSeq
 
 happyDoSeq, happyDontSeq :: a -> b -> b
 happyDoSeq   a b = a `seq` b
diff --git a/parconc-examples.cabal b/parconc-examples.cabal
--- a/parconc-examples.cabal
+++ b/parconc-examples.cabal
@@ -1,5 +1,5 @@
 name:                parconc-examples
-version:             0.3.2
+version:             0.3.3
 synopsis:            Examples to accompany the book "Parallel and Concurrent Programming in Haskell"
 -- description:         
 license:             BSD3
@@ -53,12 +53,22 @@
 flag cuda
   default: False
 
+-- -f-accelerate: Do not build the examples that require accelerate.
+
+flag accelerate
+  default : True
+
+-- -f-distributed: Do not build the examples that require distributed-process.
+
+flag distributed
+  default : True
+
 -- -----------------------------------------------------------------------------
 -- par-eval
 
 executable rpar
   main-is: rpar.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , time ==1.4.*
                  , parallel ==3.2.*
   default-language: Haskell2010
@@ -66,17 +76,17 @@
 executable sudoku1
   main-is: sudoku1.hs
   other-modules: Sudoku
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , parallel ==3.2.*
-                 , array ==0.4.*
+                 , array >= 0.4 && <0.6
   default-language: Haskell2010
 
 executable sudoku2
   main-is: sudoku2.hs
   other-modules: Sudoku
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , parallel ==3.2.*
-                 , array ==0.4.*
+                 , array >= 0.4 && <0.6
                  , deepseq ==1.3.*
   ghc-options: -threaded
   default-language: Haskell2010
@@ -84,27 +94,27 @@
 executable sudoku3
   main-is: sudoku3.hs
   other-modules: Sudoku
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , parallel ==3.2.*
-                 , array ==0.4.*
+                 , array >= 0.4 && <0.6
   ghc-options: -threaded
   default-language: Haskell2010
 
 executable sudoku4
   main-is: sudoku4.hs
   other-modules: Sudoku
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , parallel ==3.2.*
-                 , array ==0.4.*
+                 , array >= 0.4 && <0.6
   ghc-options: -threaded
   default-language: Haskell2010
 
 executable sudoku5
   main-is: sudoku5.hs
   other-modules: Sudoku
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , parallel ==3.2.*
-                 , array ==0.4.*
+                 , array >= 0.4 && <0.6
   ghc-options: -threaded
   default-language: Haskell2010
 
@@ -113,21 +123,21 @@
 
 executable strat
   main-is: strat.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , parallel ==3.2.*
   ghc-options: -threaded
   default-language: Haskell2010
 
 executable strat2
   main-is: strat2.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , parallel ==3.2.*
   ghc-options: -threaded
   default-language: Haskell2010
 
 executable strat3
   main-is: strat3.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , parallel ==3.2.*
   ghc-options: -threaded
   default-language: Haskell2010
@@ -135,7 +145,7 @@
 executable rsa
   main-is: rsa.hs
   other-modules: ByteStringCompat
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , bytestring >= 0.9 && < 0.11
                  , deepseq ==1.3.*
   default-language: Haskell2010
@@ -143,7 +153,7 @@
 executable rsa1
   main-is: rsa1.hs
   other-modules: ByteStringCompat
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , bytestring >= 0.9 && < 0.11
                  , parallel ==3.2.*
                  , deepseq ==1.3.*
@@ -153,7 +163,7 @@
 executable rsa2
   main-is: rsa2.hs
   other-modules: ByteStringCompat
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , bytestring >= 0.9 && < 0.11
                  , parallel ==3.2.*
                  , deepseq ==1.3.*
@@ -164,15 +174,15 @@
   hs-source-dirs: kmeans
   main-is: kmeans.hs
   other-modules: KMeansCore
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , parallel ==3.2.*
                  , time ==1.4.*
                  , deepseq ==1.3.*
                  , monad-par >= 0.3.4 && < 0.4
                    -- monad-par 0.3 has a bug:
                    -- https://github.com/simonmar/monad-par/issues/23
-                 , binary >=0.6.3 && < 0.7
-                 , array ==0.4.*
+                 , binary >=0.6.3 && < 0.8
+                 , array >= 0.4 && <0.6
                  , bytestring >= 0.9 && < 0.11
                  , vector >= 0.10 && < 0.11
   ghc-options: -threaded
@@ -181,9 +191,9 @@
 executable GenSamples
   hs-source-dirs: kmeans
   main-is: GenSamples.hs
-  build-depends:   base >= 4.5 && < 4.7
-                 , binary >=0.6.3 && < 0.7
-                 , array ==0.4.*
+  build-depends:   base >= 4.5 && < 4.8
+                 , binary >=0.6.3 && < 0.8
+                 , array >= 0.4 && <0.6
                  , vector >= 0.10 && < 0.11
                  , random >= 1.0 && < 1.1
                  , normaldistribution >= 1.1 && < 1.2
@@ -196,7 +206,7 @@
 
 executable parmonad
   main-is: parmonad.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , monad-par >= 0.3.4 && < 0.4
   ghc-options: -threaded
   default-language: Haskell2010
@@ -204,7 +214,7 @@
 executable rsa-pipeline
   main-is: rsa-pipeline.hs
   other-modules: ByteStringCompat Stream
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , bytestring >= 0.9 && < 0.11
                  , monad-par >= 0.3.4 && < 0.4
                  , deepseq ==1.3.*
@@ -215,9 +225,9 @@
   main-is: fwsparse.hs
   other-modules: SparseGraph MapCompat
   hs-source-dirs: fwsparse
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , random >= 1.0 && < 1.1
-                 , array ==0.4.*
+                 , array >= 0.4 && <0.6
                  , containers >= 0.4 && < 0.6
   default-language: Haskell2010
 
@@ -225,9 +235,9 @@
   main-is: fwsparse1.hs
   other-modules: SparseGraph MapCompat
   hs-source-dirs: fwsparse
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , random >= 1.0 && < 1.1
-                 , array ==0.4.*
+                 , array >= 0.4 && <0.6
                  , containers >= 0.4 && < 0.6
                  , monad-par >= 0.3.4 && < 0.4
                  , deepseq ==1.3.*
@@ -236,7 +246,7 @@
 
 executable  timetable
   main-is: timetable.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , containers >= 0.4 && < 0.6
                  , deepseq ==1.3.*
                  , random >= 1.0 && < 1.1
@@ -244,7 +254,7 @@
 
 executable  timetable1
   main-is: timetable1.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , containers >= 0.4 && < 0.6
                  , deepseq ==1.3.*
                  , monad-par >= 0.3.4 && < 0.4
@@ -253,7 +263,7 @@
 
 executable  timetable2
   main-is: timetable2.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , containers >= 0.4 && < 0.6
                  , deepseq ==1.3.*
                  , monad-par >= 0.3.4 && < 0.4
@@ -262,7 +272,7 @@
 
 executable  timetable3
   main-is: timetable3.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , containers >= 0.4 && < 0.6
                  , deepseq ==1.3.*
                  , monad-par >= 0.3.4 && < 0.4
@@ -285,11 +295,11 @@
                   Infer
                   Substitution
                   StateX
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , containers >= 0.4 && < 0.6
                  , deepseq ==1.3.*
                  , monad-par >= 0.3.4 && < 0.4
-                 , array ==0.4.*
+                 , array >= 0.4 && <0.6
   default-language: Haskell2010
 
 -- -----------------------------------------------------------------------------
@@ -297,7 +307,7 @@
 
 executable  fwdense
   main-is: fwdense.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , repa == 3.2.*
   ghc-options: -O2
   if flag(llvm)
@@ -306,9 +316,9 @@
 
 executable  fwdense1
   main-is: fwdense1.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , repa == 3.2.*
-                 , transformers ==0.3.*
+                 , transformers >=0.3 && <0.5
   ghc-options: -O2 -threaded
   if flag(llvm)
      ghc-options: -fllvm
@@ -316,7 +326,7 @@
 
 executable rotateimage
   main-is: rotateimage.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , repa == 3.2.*
   ghc-options: -O2 -threaded
   if flag(devil)
@@ -333,15 +343,21 @@
 executable  fwaccel
   main-is: fwaccel.hs
   other-modules: AccelerateCompat
-  build-depends:   base >= 4.5 && < 4.7
-                 , accelerate >= 0.12 && < 0.15
+  build-depends:   base >= 4.5 && < 4.8
   ghc-options: -O2
+  if flag(accelerate)
+     build-depends: accelerate >= 0.12 && < 0.15
+  else
+     buildable: False
   default-language: Haskell2010
 
 executable  fwaccel-gpu
   main-is: fwaccel-gpu.hs
-  build-depends:   base >= 4.5 && < 4.7
-                 , accelerate >= 0.12 && < 0.15
+  build-depends:   base >= 4.5 && < 4.8
+  if flag(accelerate)
+     build-depends: accelerate >= 0.12 && < 0.15
+  else
+     buildable: False
   if flag(cuda)
      build-depends: accelerate-cuda >= 0.12 && < 0.15
   else
@@ -353,10 +369,13 @@
   main-is: mandel.hs
   other-modules: Config
   hs-source-dirs: mandel
-  build-depends:   base >= 4.5 && < 4.7
-                 , accelerate >= 0.12 && < 0.15
+  build-depends:   base >= 4.5 && < 4.8
                  , fclabels
-                 , accelerate-io
+  if flag(accelerate)
+     build-depends: accelerate >= 0.12 && < 0.15
+                  , accelerate-io
+  else
+     buildable: False
   if flag(cuda)
      build-depends: accelerate-cuda >= 0.12 && < 0.15
   else
@@ -369,17 +388,17 @@
 
 executable  fork
   main-is: fork.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
   default-language: Haskell2010
 
 executable  reminders
   main-is: reminders.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
   default-language: Haskell2010
 
 executable  reminders2
   main-is: reminders2.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
   default-language: Haskell2010
 
 -- -----------------------------------------------------------------------------
@@ -387,38 +406,38 @@
 
 executable  mvar1
   main-is: mvar1.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
   default-language: Haskell2010
 
 executable  mvar2
   main-is: mvar2.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
   default-language: Haskell2010
 
 executable  mvar3
   main-is: mvar3.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
   default-language: Haskell2010
 
 executable  logger
   main-is: logger.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
   default-language: Haskell2010
 
 executable  phonebook
   main-is: phonebook.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , containers >= 0.4 && < 0.6
   default-language: Haskell2010
 
 executable  chan
   main-is: chan.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
   default-language: Haskell2010
 
 executable  chan2
   main-is: chan2.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
   default-language: Haskell2010
 
 -- -----------------------------------------------------------------------------
@@ -427,7 +446,7 @@
 executable geturls1
   main-is: geturls1.hs
   other-modules: GetURL
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , containers >= 0.4 && < 0.6
                  , network >= 2.3 && < 2.5
                  , HTTP ==4000.2.*
@@ -437,7 +456,7 @@
 executable  geturls2
   main-is: geturls2.hs
   other-modules: GetURL
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time ==1.4.*
@@ -448,7 +467,7 @@
 executable  geturls3
   main-is: geturls3.hs
   other-modules: TimeIt GetURL
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time ==1.4.*
@@ -459,7 +478,7 @@
 executable  geturls4
   main-is: geturls4.hs
   other-modules: GetURL
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time ==1.4.*
@@ -470,7 +489,7 @@
 executable  geturls5
   main-is: geturls5.hs
   other-modules: GetURL
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time ==1.4.*
@@ -481,7 +500,7 @@
 executable  geturls6
   main-is: geturls6.hs
   other-modules: TimeIt GetURL
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time ==1.4.*
@@ -495,7 +514,7 @@
 executable  geturlscancel
   main-is: geturlscancel.hs
   other-modules: TimeIt GetURL
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time ==1.4.*
@@ -506,7 +525,7 @@
 executable  geturlscancel2
   main-is: geturlscancel2.hs
   other-modules: TimeIt GetURL
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time ==1.4.*
@@ -516,27 +535,27 @@
 
 executable  modifytwo
   main-is: modifytwo.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
   default-language: Haskell2010
 
 executable  chan3
   main-is: chan3.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
   default-language: Haskell2010
 
 executable  timeout
   main-is: timeout.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
   default-language: Haskell2010
 
 executable  catch-mask
   main-is: catch-mask.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
   default-language: Haskell2010
 
 executable  catch-mask2
   main-is: catch-mask2.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
   default-language: Haskell2010
 
 -- -----------------------------------------------------------------------------
@@ -545,21 +564,21 @@
 -- not mentioned in the text?
 executable  windowman
   main-is: windowman.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , containers >= 0.4 && < 0.6
                  , stm ==2.4.*
   default-language: Haskell2010
 
 executable  tmvar
   main-is: tmvar.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , stm ==2.4.*
   default-language: Haskell2010
 
 executable  geturlsfirst
   main-is: geturlsfirst.hs
   other-modules: ConcurrentUtils
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time ==1.4.*
@@ -569,25 +588,25 @@
 
 executable  TChan
   main-is: TChan.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , stm ==2.4.*
   default-language: Haskell2010
 
 executable  TList
   main-is: TList.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , stm ==2.4.*
   default-language: Haskell2010
 
 executable  TQueue
   main-is: TQueue.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , stm ==2.4.*
   default-language: Haskell2010
 
 executable  TBQueue
   main-is: TBQueue.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , stm ==2.4.*
   default-language: Haskell2010
 
@@ -597,7 +616,7 @@
 executable  geturls7
   main-is: geturls7.hs
   other-modules: ConcurrentUtils
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time ==1.4.*
@@ -607,7 +626,7 @@
 
 executable  geturls8
   main-is: geturls8.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time ==1.4.*
@@ -617,7 +636,7 @@
 
 executable  geturls9
   main-is: geturls9.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time ==1.4.*
@@ -627,7 +646,7 @@
 
 executable  timeout2
   main-is: timeout.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , async ==2.0.*
   default-language: Haskell2010
 
@@ -636,7 +655,7 @@
 
 executable findseq
   main-is: findseq.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , filepath ==1.3.*
                  , directory >= 1.1 && < 1.3
   default-language: Haskell2010
@@ -644,7 +663,7 @@
 executable findpar
   main-is: findpar.hs
   ghc-options: -threaded
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , filepath ==1.3.*
                  , directory >= 1.1 && < 1.3
                  , async ==2.0.*
@@ -653,7 +672,7 @@
 executable findpar2
   main-is: findpar2.hs
   ghc-options: -threaded
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , filepath ==1.3.*
                  , directory >= 1.1 && < 1.3
                  , async ==2.0.*
@@ -663,7 +682,7 @@
   main-is: findpar3.hs
   other-modules: CasIORef
   ghc-options: -threaded
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , filepath ==1.3.*
                  , directory >= 1.1 && < 1.3
                  , async ==2.0.*
@@ -673,12 +692,12 @@
 executable findpar4
   main-is: findpar4.hs
   ghc-options: -threaded
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , filepath ==1.3.*
                  , directory >= 1.1 && < 1.3
                  , async ==2.0.*
                  , stm ==2.4.*
-                 , transformers ==0.3.*
+                 , transformers >=0.3 && <0.5
                  , abstract-par ==0.3.*
                  , monad-par >= 0.3.4 && < 0.4
   default-language: Haskell2010
@@ -689,7 +708,7 @@
 executable  server
   main-is: server.hs
   other-modules: ConcurrentUtils
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , stm ==2.4.*
                  , network >= 2.3 && < 2.5
   default-language: Haskell2010
@@ -697,7 +716,7 @@
 executable  server2
   main-is: server2.hs
   other-modules: ConcurrentUtils
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , stm ==2.4.*
                  , async ==2.0.*
                  , network >= 2.3 && < 2.5
@@ -706,7 +725,7 @@
 executable chat
   main-is: chat.hs
   other-modules: ConcurrentUtils
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , containers >= 0.4 && < 0.6
                  , async ==2.0.*
                  , stm ==2.4.*
@@ -719,149 +738,184 @@
 executable ping
   main-is: distrib-ping/ping.hs
   other-modules: DistribUtils
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , network >= 2.3 && < 2.5
-                 , binary >=0.6.3 && < 0.7
-                 , distributed-process >= 0.4.2 && < 0.5
-                 , distributed-process-simplelocalnet ==0.2.*
-                 , distributed-static ==0.2.*
-                 , template-haskell >= 2.7 && < 2.9
+                 , binary >=0.6.3 && < 0.8
+                 , template-haskell >= 2.7 && < 2.10
   if impl(ghc <= 7.6)
       -- prior to ghc-7.4 generics lived in ghc-prim
       build-depends: ghc-prim
+  if flag(distributed)
+     build-depends:
+                   distributed-process >= 0.4.2 && < 0.5
+                 , distributed-process-simplelocalnet ==0.2.*
+                 , distributed-static ==0.2.*
+  else
+     buildable: False
   default-language: Haskell2010
 
 executable ping-multi
   main-is: distrib-ping/ping-multi.hs
   other-modules: DistribUtils
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , network >= 2.3 && < 2.5
-                 , binary >=0.6.3 && < 0.7
-                 , distributed-process >= 0.4.2 && < 0.5
-                 , distributed-process-simplelocalnet ==0.2.*
-                 , distributed-static ==0.2.*
-                 , template-haskell >= 2.7 && < 2.9
+                 , binary >=0.6.3 && < 0.8
+                 , template-haskell >= 2.7 && < 2.10
   if impl(ghc <= 7.6)
       -- prior to ghc-7.4 generics lived in ghc-prim
       build-depends: ghc-prim
+  if flag(distributed)
+     build-depends:
+                   distributed-process >= 0.4.2 && < 0.5
+                 , distributed-process-simplelocalnet ==0.2.*
+                 , distributed-static ==0.2.*
+  else
+     buildable: False
   default-language: Haskell2010
 
 executable ping-tc
   main-is: distrib-ping/ping-tc.hs
   other-modules: DistribUtils
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , network >= 2.3 && < 2.5
-                 , binary >=0.6.3 && < 0.7
-                 , distributed-process >= 0.4.2 && < 0.5
-                 , distributed-process-simplelocalnet ==0.2.*
-                 , distributed-static ==0.2.*
-                 , template-haskell >= 2.7 && < 2.9
+                 , binary >=0.6.3 && < 0.8
+                 , template-haskell >= 2.7 && < 2.10
   if impl(ghc <= 7.6)
       -- prior to ghc-7.4 generics lived in ghc-prim
       build-depends: ghc-prim
+  if flag(distributed)
+     build-depends:
+                   distributed-process >= 0.4.2 && < 0.5
+                 , distributed-process-simplelocalnet ==0.2.*
+                 , distributed-static ==0.2.*
+  else
+     buildable: False
   default-language: Haskell2010
 
 executable ping-tc-merge
   main-is: distrib-ping/ping-tc-merge.hs
   other-modules: DistribUtils
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , network >= 2.3 && < 2.5
-                 , binary >=0.6.3 && < 0.7
-                 , distributed-process >= 0.4.2 && < 0.5
-                 , distributed-process-simplelocalnet ==0.2.*
-                 , distributed-static ==0.2.*
-                 , template-haskell >= 2.7 && < 2.9
+                 , binary >=0.6.3 && < 0.8
+                 , template-haskell >= 2.7 && < 2.10
   if impl(ghc <= 7.6)
       -- prior to ghc-7.4 generics lived in ghc-prim
       build-depends: ghc-prim
+  if flag(distributed)
+     build-depends:
+                   distributed-process >= 0.4.2 && < 0.5
+                 , distributed-process-simplelocalnet ==0.2.*
+                 , distributed-static ==0.2.*
+  else
+     buildable: False
   default-language: Haskell2010
 
 -- extra, not in the text?
 executable ping-tc-notify
   main-is: distrib-ping/ping-tc-notify.hs
   other-modules: DistribUtils
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , network >= 2.3 && < 2.5
-                 , binary >=0.6.3 && < 0.7
-                 , distributed-process >= 0.4.2 && < 0.5
-                 , distributed-process-simplelocalnet ==0.2.*
-                 , distributed-static ==0.2.*
-                 , template-haskell >= 2.7 && < 2.9
+                 , binary >=0.6.3 && < 0.8
+                 , template-haskell >= 2.7 && < 2.10
   if impl(ghc <= 7.6)
       -- prior to ghc-7.4 generics lived in ghc-prim
       build-depends: ghc-prim
+  if flag(distributed)
+     build-depends:
+                   distributed-process >= 0.4.2 && < 0.5
+                 , distributed-process-simplelocalnet ==0.2.*
+                 , distributed-static ==0.2.*
+  else
+     buildable: False
   default-language: Haskell2010
 
 executable ping-fail
   main-is: distrib-ping/ping-fail.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , network >= 2.3 && < 2.5
-                 , binary >=0.6.3 && < 0.7
-                 , distributed-process >= 0.4.2 && < 0.5
-                 , distributed-process-simplelocalnet ==0.2.*
-                 , distributed-static ==0.2.*
-                 , template-haskell >= 2.7 && < 2.9
+                 , binary >=0.6.3 && < 0.8
+                 , template-haskell >= 2.7 && < 2.10
   if impl(ghc <= 7.6)
       -- prior to ghc-7.4 generics lived in ghc-prim
       build-depends: ghc-prim
+  if flag(distributed)
+     build-depends:
+                   distributed-process >= 0.4.2 && < 0.5
+                 , distributed-process-simplelocalnet ==0.2.*
+                 , distributed-static ==0.2.*
+  else
+     buildable: False
   default-language: Haskell2010
 
 executable distrib-chat
   main-is: distrib-chat/chat.hs
   other-modules: ConcurrentUtils DistribUtils
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , containers >= 0.4 && < 0.6
                  , stm ==2.4.*
                  , async ==2.0.*
                  , network >= 2.3 && < 2.5
-                 , binary >=0.6.3 && < 0.7
-                 , distributed-process >= 0.4.2 && < 0.5
-                 , distributed-process-simplelocalnet ==0.2.*
-                 , distributed-static ==0.2.*
-                 , transformers ==0.3.*
-                 , template-haskell >= 2.7 && < 2.9
+                 , binary >=0.6.3 && < 0.8
+                 , transformers >=0.3 && <0.5
+                 , template-haskell >= 2.7 && < 2.10
   if impl(ghc <= 7.6)
       -- prior to ghc-7.4 generics lived in ghc-prim
       build-depends: ghc-prim
+  if flag(distributed)
+     build-depends:
+                   distributed-process >= 0.4.2 && < 0.5
+                 , distributed-process-simplelocalnet ==0.2.*
+                 , distributed-static ==0.2.*
+  else
+     buildable: False
   default-language: Haskell2010
 
 executable distrib-chat-noslave
   main-is: distrib-chat/chat-noslave.hs
   other-modules: ConcurrentUtils
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , containers >= 0.4 && < 0.6
                  , stm ==2.4.*
                  , async ==2.0.*
                  , network >= 2.3 && < 2.5
-                 , binary >=0.6.3 && < 0.7
-                 , distributed-process >= 0.4.2 && < 0.5
-                 , distributed-process-simplelocalnet ==0.2.*
-                 , distributed-static ==0.2.*
-                 , transformers ==0.3.*
-                 , template-haskell >= 2.7 && < 2.9
+                 , binary >=0.6.3 && < 0.8
+                 , transformers >=0.3 && <0.5
+                 , template-haskell >= 2.7 && < 2.10
   if impl(ghc <= 7.6)
       -- prior to ghc-7.4 generics lived in ghc-prim
       build-depends: ghc-prim
+  if flag(distributed)
+     build-depends:
+                   distributed-process >= 0.4.2 && < 0.5
+                 , distributed-process-simplelocalnet ==0.2.*
+                 , distributed-static ==0.2.*
+  else
+     buildable: False
   default-language: Haskell2010
 
 executable distrib-db
   main-is: db.hs
   hs-source-dirs: . distrib-db
   other-modules: DistribUtils Database
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , containers >= 0.4 && < 0.6
                  , stm ==2.4.*
                  , async ==2.0.*
                  , network >= 2.3 && < 2.5
-                 , binary >=0.6.3 && < 0.7
-                 , distributed-process >= 0.4.2 && < 0.5
-                 , distributed-process-simplelocalnet ==0.2.*
-                 , distributed-static ==0.2.*
-                 , transformers ==0.3.*
-                 , template-haskell >= 2.7 && < 2.9
+                 , binary >=0.6.3 && < 0.8
+                 , template-haskell >= 2.7 && < 2.10
   if impl(ghc <= 7.6)
       -- prior to ghc-7.4 generics lived in ghc-prim
       build-depends: ghc-prim
+  if flag(distributed)
+     build-depends:
+                   distributed-process >= 0.4.2 && < 0.5
+                 , distributed-process-simplelocalnet ==0.2.*
+                 , distributed-static ==0.2.*
+  else
+     buildable: False
   default-language: Haskell2010
 
 -- -----------------------------------------------------------------------------
@@ -869,27 +923,27 @@
 
 executable  mvar4
   main-is: mvar4.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
   default-language: Haskell2010
 
 executable  deadlock1
   main-is: deadlock1.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
   default-language: Haskell2010
 
 executable  deadlock2
   main-is: deadlock2.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
   default-language: Haskell2010
 
 executable  threadperf1
   main-is: threadperf1.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
   default-language: Haskell2010
 
 executable  threadperf2
   main-is: threadperf2.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
   ghc-options: -rtsopts
   default-language: Haskell2010
 
@@ -900,7 +954,7 @@
   main-is: bingtranslator.hs
   other-modules: BingTranslate GetURL
   hs-source-dirs: other .
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , bytestring >= 0.9 && < 0.11
                  , time ==1.4.*
                  , HTTP ==4000.2.*
@@ -913,7 +967,7 @@
   main-is: bingtranslatorconc.hs
   other-modules: BingTranslate GetURL
   hs-source-dirs: other .
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , bytestring >= 0.9 && < 0.11
                  , time ==1.4.*
                  , HTTP ==4000.2.*
@@ -925,7 +979,7 @@
 executable  geturlsstm
   main-is: geturlsstm.hs
   other-modules: TimeIt GetURL
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time ==1.4.*
@@ -935,7 +989,7 @@
 
 executable  Async
   main-is: Async.hs
-  build-depends:   base >= 4.5 && < 4.7
+  build-depends:   base >= 4.5 && < 4.8
                  , stm ==2.4.*
   default-language: Haskell2010
 
