diff --git a/AccelerateCompat.hs b/AccelerateCompat.hs
--- a/AccelerateCompat.hs
+++ b/AccelerateCompat.hs
@@ -1,6 +1,12 @@
 {-# LANGUAGE CPP #-}
 
-#if MIN_VERSION_accelerate(0, 14, 0)
+#if MIN_VERSION_accelerate(1, 0, 0)
+
+module AccelerateCompat (A.min, A.max) where
+
+import Data.Array.Accelerate as A
+
+#elif MIN_VERSION_accelerate(0, 14, 0)
 
 module AccelerateCompat (min, max) where
 
diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,20 @@
+# Version 0.4.7
+
+* Builds with GHC 8.2.x and 8.4.x
+
+# Version 0.4.6
+
+* Builds with GHC 7.10 and GHC 8.0.2
+* Test with cabal new-build, and addit to the instructions
+
+# Version 0.4.5
+
+* Fix build with GHC 7.8
+
+# Version 0.4.4
+
+* Use http-conduit instead of HTTP (fixes problems with wikipedia URL examples)
+
 # Version 0.4.3
 
 * Fix build with GHC 7.8
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -15,11 +15,18 @@
 will build all the executables and install them in a platform-specific
 subdirectory under `.stack-work/install`.
 
+## Building with Cabal new-build
+
+```
+cabal new-build
+```
+
 ## Building with Cabal
 
 ```
-cabal sandox init
+cabal sandbox init
 cabal install --only-dependencies
 cabal configure
 cabal build
 ```
+
diff --git a/dist/build/parinfer/parinfer-tmp/Lex.hs b/dist/build/parinfer/parinfer-tmp/Lex.hs
deleted file mode 100644
--- a/dist/build/parinfer/parinfer-tmp/Lex.hs
+++ /dev/null
@@ -1,503 +0,0 @@
-{-# LANGUAGE CPP,MagicHash #-}
-{-# LINE 1 "parinfer/Lex.x" #-}
-
-module Lex where
-
-#if __GLASGOW_HASKELL__ >= 603
-#include "ghcconfig.h"
-#elif defined(__GLASGOW_HASKELL__)
-#include "config.h"
-#endif
-#if __GLASGOW_HASKELL__ >= 503
-import Data.Array
-import Data.Char (ord)
-import Data.Array.Base (unsafeAt)
-#else
-import Array
-import Char (ord)
-#endif
-#if __GLASGOW_HASKELL__ >= 503
-import GHC.Exts
-#else
-import GlaExts
-#endif
-{-# LINE 1 "templates/wrappers.hs" #-}
-{-# LINE 1 "templates/wrappers.hs" #-}
-{-# LINE 1 "<built-in>" #-}
-{-# LINE 1 "<command-line>" #-}
-{-# LINE 9 "<command-line>" #-}
-# 1 "/usr/include/stdc-predef.h" 1 3 4
-
-# 17 "/usr/include/stdc-predef.h" 3 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{-# LINE 9 "<command-line>" #-}
-{-# LINE 1 "/home/smarlow/local/lib/ghc-7.10.1/include/ghcversion.h" #-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{-# LINE 9 "<command-line>" #-}
-{-# LINE 1 "templates/wrappers.hs" #-}
--- -----------------------------------------------------------------------------
--- Alex wrapper code.
---
--- This code is in the PUBLIC DOMAIN; you may copy it freely and use
--- it for any purpose whatsoever.
-
-import Control.Applicative (Applicative (..))
-import Data.Word (Word8)
-{-# LINE 23 "templates/wrappers.hs" #-}
-
-import qualified Data.Bits
-
--- | Encode a Haskell String to a list of Word8 values, in UTF8 format.
-utf8Encode :: Char -> [Word8]
-utf8Encode = map fromIntegral . go . ord
- where
-  go oc
-   | oc <= 0x7f       = [oc]
-
-   | oc <= 0x7ff      = [ 0xc0 + (oc `Data.Bits.shiftR` 6)
-                        , 0x80 + oc Data.Bits..&. 0x3f
-                        ]
-
-   | oc <= 0xffff     = [ 0xe0 + (oc `Data.Bits.shiftR` 12)
-                        , 0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f)
-                        , 0x80 + oc Data.Bits..&. 0x3f
-                        ]
-   | otherwise        = [ 0xf0 + (oc `Data.Bits.shiftR` 18)
-                        , 0x80 + ((oc `Data.Bits.shiftR` 12) Data.Bits..&. 0x3f)
-                        , 0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f)
-                        , 0x80 + oc Data.Bits..&. 0x3f
-                        ]
-
-
-
-type Byte = Word8
-
--- -----------------------------------------------------------------------------
--- The input type
-
-{-# LINE 73 "templates/wrappers.hs" #-}
-
-{-# LINE 93 "templates/wrappers.hs" #-}
-
-{-# LINE 107 "templates/wrappers.hs" #-}
-
-{-# LINE 122 "templates/wrappers.hs" #-}
-
--- -----------------------------------------------------------------------------
--- Token positions
-
--- `Posn' records the location of a token in the input text.  It has three
--- fields: the address (number of chacaters preceding the token), line number
--- and column of a token within the file. `start_pos' gives the position of the
--- start of the file and `eof_pos' a standard encoding for the end of file.
--- `move_pos' calculates the new position after traversing a given character,
--- assuming the usual eight character tab stops.
-
-{-# LINE 145 "templates/wrappers.hs" #-}
-
--- -----------------------------------------------------------------------------
--- Default monad
-
-{-# LINE 256 "templates/wrappers.hs" #-}
-
-
--- -----------------------------------------------------------------------------
--- Monad (with ByteString input)
-
-{-# LINE 347 "templates/wrappers.hs" #-}
-
-
--- -----------------------------------------------------------------------------
--- Basic wrapper
-
-
-type AlexInput = (Char,[Byte],String)
-
-alexInputPrevChar :: AlexInput -> Char
-alexInputPrevChar (c,_,_) = c
-
--- alexScanTokens :: String -> [token]
-alexScanTokens str = go ('\n',[],str)
-  where go inp@(_,_bs,s) =
-          case alexScan inp 0 of
-                AlexEOF -> []
-                AlexError _ -> error "lexical error"
-                AlexSkip  inp' len     -> go inp'
-                AlexToken inp' len act -> act (take len s) : go inp'
-
-alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)
-alexGetByte (c,(b:bs),s) = Just (b,(c,bs,s))
-alexGetByte (c,[],[])    = Nothing
-alexGetByte (_,[],(c:s)) = case utf8Encode c of
-                             (b:bs) -> Just (b, (c, bs, s))
-                             [] -> Nothing
-
-
-
--- -----------------------------------------------------------------------------
--- Basic wrapper, ByteString version
-
-{-# LINE 392 "templates/wrappers.hs" #-}
-
-{-# LINE 406 "templates/wrappers.hs" #-}
-
-
--- -----------------------------------------------------------------------------
--- Posn wrapper
-
--- Adds text positions to the basic model.
-
-{-# LINE 423 "templates/wrappers.hs" #-}
-
-
--- -----------------------------------------------------------------------------
--- Posn wrapper, ByteString version
-
-{-# LINE 438 "templates/wrappers.hs" #-}
-
-
--- -----------------------------------------------------------------------------
--- GScan wrapper
-
--- For compatibility with previous versions of Alex, and because we can.
-
-alex_base :: AlexAddr
-alex_base = AlexA# "\xf8\xff\xff\xff\xb4\xff\xff\xff\x00\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\xa5\x00\x00\x00\x25\x01\x00\x00\x25\x02\x00\x00\xe5\x01\x00\x00\x00\x00\x00\x00\xfd\xff\xff\xff\xdb\x02\x00\x00\xbf\x02\x00\x00\xb4\x03\x00\x00\xdb\xff\xff\xff\x00\x00\x00\x00\xe8\xff\xff\xff\x00\x00\x00\x00\x08\x04\x00\x00\x5c\x04\x00\x00\xb0\x04\x00\x00\x04\x05\x00\x00"#
-
-alex_table :: AlexAddr
-alex_table = AlexA# "\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0b\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x11\x00\x11\x00\x11\x00\x11\x00\x00\x00\x10\x00\x0f\x00\x11\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x00\x00\x11\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x14\x00\x13\x00\x13\x00\x12\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x08\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x06\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x07\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x08\x00\x06\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x01\x00\x05\x00\x04\x00\x04\x00\x04\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x15\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x0d\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x0c\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
-
-alex_check :: AlexAddr
-alex_check = AlexA# "\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x2d\x00\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x28\x00\x29\x00\x2a\x00\x2b\x00\xff\xff\x2d\x00\x3e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x3b\x00\xff\xff\x3d\x00\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x0a\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
-
-alex_deflt :: AlexAddr
-alex_deflt = AlexA# "\xff\xff\x09\x00\x09\x00\x02\x00\x02\x00\xff\xff\xff\xff\x0b\x00\x0b\x00\x0b\x00\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
-
-alex_accept = listArray (0::Int,21) [AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccSkip,AlexAccSkip,AlexAcc (alex_action_2),AlexAcc (alex_action_3),AlexAcc (alex_action_4),AlexAcc (alex_action_5),AlexAcc (alex_action_6),AlexAcc (alex_action_6),AlexAcc (alex_action_7),AlexAcc (alex_action_7),AlexAcc (alex_action_7),AlexAcc (alex_action_7)]
-{-# LINE 21 "parinfer/Lex.x" #-}
-
--- Each right-hand side has type :: String -> Token
-
--- The token type:
-data Token =
-        TLet            |
-        TIn             |
-        TSym Char       |
-        TVar String     |
-        TInt Int        |
-        TArrow
-        deriving (Eq,Show)
-
-alex_action_2 =  \s -> TLet 
-alex_action_3 =  \s -> TIn 
-alex_action_4 =  \s -> TInt (read s) 
-alex_action_5 =  \s -> TArrow 
-alex_action_6 =  \s -> TSym (head s) 
-alex_action_7 =  \s -> TVar s 
-{-# LINE 1 "templates/GenericTemplate.hs" #-}
-{-# LINE 1 "templates/GenericTemplate.hs" #-}
-{-# LINE 1 "<built-in>" #-}
-{-# LINE 1 "<command-line>" #-}
-{-# LINE 10 "<command-line>" #-}
-# 1 "/usr/include/stdc-predef.h" 1 3 4
-
-# 17 "/usr/include/stdc-predef.h" 3 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{-# LINE 10 "<command-line>" #-}
-{-# LINE 1 "/home/smarlow/local/lib/ghc-7.10.1/include/ghcversion.h" #-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{-# LINE 10 "<command-line>" #-}
-{-# LINE 1 "templates/GenericTemplate.hs" #-}
--- -----------------------------------------------------------------------------
--- ALEX TEMPLATE
---
--- This code is in the PUBLIC DOMAIN; you may copy it freely and use
--- it for any purpose whatsoever.
-
--- -----------------------------------------------------------------------------
--- INTERNALS and main scanner engine
-
-{-# LINE 21 "templates/GenericTemplate.hs" #-}
-
-
-
-
-
--- 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))
-#else
-#define GTE(n,m) (n >=# m)
-#define EQ(n,m) (n ==# m)
-#endif
-{-# LINE 51 "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
-
-{-# INLINE alexIndexInt16OffAddr #-}
-alexIndexInt16OffAddr (AlexA# arr) off =
-#ifdef WORDS_BIGENDIAN
-  narrow16Int# i
-  where
-        i    = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low)
-        high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
-        low  = int2Word# (ord# (indexCharOffAddr# arr off'))
-        off' = off *# 2#
-#else
-  indexInt16OffAddr# arr off
-#endif
-
-
-
-
-
-{-# INLINE alexIndexInt32OffAddr #-}
-alexIndexInt32OffAddr (AlexA# arr) off = 
-#ifdef WORDS_BIGENDIAN
-  narrow32Int# i
-  where
-   i    = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`
-		     (b2 `uncheckedShiftL#` 16#) `or#`
-		     (b1 `uncheckedShiftL#` 8#) `or#` b0)
-   b3   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))
-   b2   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))
-   b1   = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))
-   b0   = int2Word# (ord# (indexCharOffAddr# arr off'))
-   off' = off *# 4#
-#else
-  indexInt32OffAddr# arr off
-#endif
-
-
-
-
-
-
-#if __GLASGOW_HASKELL__ < 503
-quickIndex arr i = arr ! i
-#else
--- GHC >= 503, unsafeAt is available from Data.Array.Base.
-quickIndex = unsafeAt
-#endif
-
-
-
-
--- -----------------------------------------------------------------------------
--- Main lexing routines
-
-data AlexReturn a
-  = AlexEOF
-  | AlexError  !AlexInput
-  | AlexSkip   !AlexInput !Int
-  | AlexToken  !AlexInput !Int a
-
--- alexScan :: AlexInput -> StartCode -> AlexReturn a
-alexScan input (I# (sc))
-  = alexScanUser undefined input (I# (sc))
-
-alexScanUser user input (I# (sc))
-  = case alex_scan_tkn user input 0# input sc AlexNone of
-	(AlexNone, input') ->
-		case alexGetByte input of
-			Nothing -> 
-
-
-
-				   AlexEOF
-			Just _ ->
-
-
-
-				   AlexError input'
-
-	(AlexLastSkip input'' len, _) ->
-
-
-
-		AlexSkip input'' len
-
-	(AlexLastAcc k input''' len, _) ->
-
-
-
-		AlexToken input''' len k
-
-
--- Push the input through the DFA, remembering the most recent accepting
--- state it encountered.
-
-alex_scan_tkn user orig_input len input s last_acc =
-  input `seq` -- strict in the input
-  let 
-	new_acc = (check_accs (alex_accept `quickIndex` (I# (s))))
-  in
-  new_acc `seq`
-  case alexGetByte input of
-     Nothing -> (new_acc, input)
-     Just (c, new_input) -> 
-
-
-
-      case fromIntegral c of { (I# (ord_c)) ->
-        let
-                base   = alexIndexInt32OffAddr alex_base s
-                offset = (base +# ord_c)
-                check  = alexIndexInt16OffAddr alex_check offset
-		
-                new_s = if GTE(offset,0#) && EQ(check,ord_c)
-			  then alexIndexInt16OffAddr alex_table offset
-			  else alexIndexInt16OffAddr alex_deflt s
-	in
-        case new_s of
-	    -1# -> (new_acc, input)
-		-- on an error, we want to keep the input *before* the
-		-- character that failed, not after.
-    	    _ -> alex_scan_tkn user orig_input (if c < 0x80 || c >= 0xC0 then (len +# 1#) else len)
-                                                -- note that the length is increased ONLY if this is the 1st byte in a char encoding)
-			new_input new_s new_acc
-      }
-  where
-	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" #-}
-
-data AlexLastAcc a
-  = AlexNone
-  | AlexLastAcc a !AlexInput !Int
-  | AlexLastSkip  !AlexInput !Int
-
-instance Functor AlexLastAcc where
-    fmap f AlexNone = AlexNone
-    fmap f (AlexLastAcc x y z) = AlexLastAcc (f x) y z
-    fmap f (AlexLastSkip x y) = AlexLastSkip x y
-
-data AlexAcc a user
-  = AlexAccNone
-  | AlexAcc a
-  | AlexAccSkip
-{-# LINE 242 "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
deleted file mode 100644
--- a/dist/build/parinfer/parinfer-tmp/Parse.hs
+++ /dev/null
@@ -1,580 +0,0 @@
-{-# OPTIONS_GHC -w #-}
-{-# OPTIONS -fglasgow-exts -cpp #-}
-module Parse where
-import Lex
-import Term
-import qualified Data.Array as Happy_Data_Array
-import qualified GHC.Exts as Happy_GHC_Exts
-import Control.Applicative(Applicative(..))
-
--- parser produced by Happy Version 1.19.4
-
-newtype HappyAbsSyn t8 t9 t10 t11 = HappyAbsSyn HappyAny
-#if __GLASGOW_HASKELL__ >= 607
-type HappyAny = Happy_GHC_Exts.Any
-#else
-type HappyAny = forall a . a
-#endif
-happyIn5 :: ([(VarId,Term)]) -> (HappyAbsSyn t8 t9 t10 t11)
-happyIn5 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn5 #-}
-happyOut5 :: (HappyAbsSyn t8 t9 t10 t11) -> ([(VarId,Term)])
-happyOut5 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut5 #-}
-happyIn6 :: ((VarId,Term)) -> (HappyAbsSyn t8 t9 t10 t11)
-happyIn6 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn6 #-}
-happyOut6 :: (HappyAbsSyn t8 t9 t10 t11) -> ((VarId,Term))
-happyOut6 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut6 #-}
-happyIn7 :: (Term) -> (HappyAbsSyn t8 t9 t10 t11)
-happyIn7 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn7 #-}
-happyOut7 :: (HappyAbsSyn t8 t9 t10 t11) -> (Term)
-happyOut7 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut7 #-}
-happyIn8 :: t8 -> (HappyAbsSyn t8 t9 t10 t11)
-happyIn8 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn8 #-}
-happyOut8 :: (HappyAbsSyn t8 t9 t10 t11) -> t8
-happyOut8 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut8 #-}
-happyIn9 :: t9 -> (HappyAbsSyn t8 t9 t10 t11)
-happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn9 #-}
-happyOut9 :: (HappyAbsSyn t8 t9 t10 t11) -> t9
-happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut9 #-}
-happyIn10 :: t10 -> (HappyAbsSyn t8 t9 t10 t11)
-happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn10 #-}
-happyOut10 :: (HappyAbsSyn t8 t9 t10 t11) -> t10
-happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut10 #-}
-happyIn11 :: t11 -> (HappyAbsSyn t8 t9 t10 t11)
-happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn11 #-}
-happyOut11 :: (HappyAbsSyn t8 t9 t10 t11) -> t11
-happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut11 #-}
-happyInTok :: (Token) -> (HappyAbsSyn t8 t9 t10 t11)
-happyInTok x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyInTok #-}
-happyOutTok :: (HappyAbsSyn t8 t9 t10 t11) -> (Token)
-happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOutTok #-}
-
-
-happyActOffsets :: HappyAddr
-happyActOffsets = HappyA# "\x01\x00\x40\x00\x00\x00\x36\x00\x3e\x00\x3d\x00\x32\x00\x34\x00\x30\x00\x04\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x01\x00\x39\x00\x3a\x00\xfa\xff\x38\x00\x00\x00\x04\x00\x04\x00\x04\x00\x04\x00\x01\x00\x00\x00\xf5\xff\x30\x00\x30\x00\x04\x00\x04\x00\x01\x00\x00\x00\x01\x00\x00\x00\x0b\x00\x00\x00\x01\x00\x00\x00\x00\x00"#
-
-happyGotoOffsets :: HappyAddr
-happyGotoOffsets = HappyA# "\x27\x00\x37\x00\x00\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\xff\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x2c\x00\x2a\x00\x05\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xfb\xff\x18\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00"#
-
-happyDefActions :: HappyAddr
-happyDefActions = HappyA# "\x00\x00\xfd\xff\x00\x00\x00\x00\xfd\xff\x00\x00\x00\x00\xf8\xff\xf5\xff\xf2\xff\xf0\xff\x00\x00\xef\xff\xee\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\x00\x00\xf6\xff\xf7\xff\xf3\xff\xf4\xff\x00\x00\xed\xff\x00\x00\xf9\xff\x00\x00\xfb\xff\x00\x00\xfa\xff"#
-
-happyCheck :: HappyAddr
-happyCheck = HappyA# "\xff\xff\x06\x00\x01\x00\x0e\x00\x03\x00\x04\x00\x0c\x00\x03\x00\x04\x00\x04\x00\x05\x00\x06\x00\x0b\x00\x02\x00\x0d\x00\x0b\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x04\x00\x05\x00\x06\x00\x05\x00\x06\x00\x05\x00\x06\x00\x00\x00\x01\x00\x00\x00\x01\x00\x09\x00\x0a\x00\x07\x00\x08\x00\x04\x00\x06\x00\x05\x00\x04\x00\x0f\x00\x04\x00\x06\x00\x04\x00\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
-
-happyTable :: HappyAddr
-happyTable = HappyA# "\x00\x00\x13\x00\x0c\x00\x25\x00\x0d\x00\x0e\x00\x21\x00\x0d\x00\x0e\x00\x1b\x00\x09\x00\x0a\x00\x0f\x00\x26\x00\x10\x00\x0f\x00\x26\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x22\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x23\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x1a\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x11\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x1c\x00\x09\x00\x0a\x00\x1d\x00\x0a\x00\x1e\x00\x0a\x00\x19\x00\x04\x00\x03\x00\x04\x00\x15\x00\x16\x00\x17\x00\x18\x00\x11\x00\x20\x00\x22\x00\x13\x00\xff\xff\x06\x00\x19\x00\x06\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
-
-happyReduceArr = Happy_Data_Array.array (2, 18) [
-	(2 , happyReduce_2),
-	(3 , happyReduce_3),
-	(4 , happyReduce_4),
-	(5 , happyReduce_5),
-	(6 , happyReduce_6),
-	(7 , happyReduce_7),
-	(8 , happyReduce_8),
-	(9 , happyReduce_9),
-	(10 , happyReduce_10),
-	(11 , happyReduce_11),
-	(12 , happyReduce_12),
-	(13 , happyReduce_13),
-	(14 , happyReduce_14),
-	(15 , happyReduce_15),
-	(16 , happyReduce_16),
-	(17 , happyReduce_17),
-	(18 , happyReduce_18)
-	]
-
-happy_n_terms = 16 :: Int
-happy_n_nonterms = 7 :: Int
-
-happyReduce_2 = happySpecReduce_0  0# happyReduction_2
-happyReduction_2  =  happyIn5
-		 ([]
-	)
-
-happyReduce_3 = happySpecReduce_2  0# happyReduction_3
-happyReduction_3 happy_x_2
-	happy_x_1
-	 =  case happyOut6 happy_x_1 of { happy_var_1 -> 
-	case happyOut5 happy_x_2 of { happy_var_2 -> 
-	happyIn5
-		 (happy_var_1 : happy_var_2
-	)}}
-
-happyReduce_4 = happyReduce 4# 1# happyReduction_4
-happyReduction_4 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (TVar happy_var_1) -> 
-	case happyOut7 happy_x_3 of { happy_var_3 -> 
-	happyIn6
-		 ((happy_var_1,happy_var_3)
-	) `HappyStk` happyRest}}
-
-happyReduce_5 = happyReduce 6# 2# happyReduction_5
-happyReduction_5 (happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_2 of { (TVar happy_var_2) -> 
-	case happyOut7 happy_x_4 of { happy_var_4 -> 
-	case happyOut7 happy_x_6 of { happy_var_6 -> 
-	happyIn7
-		 (Let happy_var_2 happy_var_4 happy_var_6
-	) `HappyStk` happyRest}}}
-
-happyReduce_6 = happyReduce 4# 2# happyReduction_6
-happyReduction_6 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_2 of { (TVar happy_var_2) -> 
-	case happyOut7 happy_x_4 of { happy_var_4 -> 
-	happyIn7
-		 (Abs happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}
-
-happyReduce_7 = happySpecReduce_1  2# happyReduction_7
-happyReduction_7 happy_x_1
-	 =  case happyOut8 happy_x_1 of { happy_var_1 -> 
-	happyIn7
-		 (happy_var_1
-	)}
-
-happyReduce_8 = happySpecReduce_3  3# happyReduction_8
-happyReduction_8 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut8 happy_x_1 of { happy_var_1 -> 
-	case happyOut9 happy_x_3 of { happy_var_3 -> 
-	happyIn8
-		 (App (App (Var "+") happy_var_1) happy_var_3
-	)}}
-
-happyReduce_9 = happySpecReduce_3  3# happyReduction_9
-happyReduction_9 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut8 happy_x_1 of { happy_var_1 -> 
-	case happyOut9 happy_x_3 of { happy_var_3 -> 
-	happyIn8
-		 (App (App (Var "-") happy_var_1) happy_var_3
-	)}}
-
-happyReduce_10 = happySpecReduce_1  3# happyReduction_10
-happyReduction_10 happy_x_1
-	 =  case happyOut9 happy_x_1 of { happy_var_1 -> 
-	happyIn8
-		 (happy_var_1
-	)}
-
-happyReduce_11 = happySpecReduce_3  4# happyReduction_11
-happyReduction_11 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut9 happy_x_1 of { happy_var_1 -> 
-	case happyOut10 happy_x_3 of { happy_var_3 -> 
-	happyIn9
-		 (App (App (Var "*") happy_var_1) happy_var_3
-	)}}
-
-happyReduce_12 = happySpecReduce_3  4# happyReduction_12
-happyReduction_12 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut9 happy_x_1 of { happy_var_1 -> 
-	case happyOut10 happy_x_3 of { happy_var_3 -> 
-	happyIn9
-		 (App (App (Var "/") happy_var_1) happy_var_3
-	)}}
-
-happyReduce_13 = happySpecReduce_1  4# happyReduction_13
-happyReduction_13 happy_x_1
-	 =  case happyOut10 happy_x_1 of { happy_var_1 -> 
-	happyIn9
-		 (happy_var_1
-	)}
-
-happyReduce_14 = happySpecReduce_2  5# happyReduction_14
-happyReduction_14 happy_x_2
-	happy_x_1
-	 =  case happyOut10 happy_x_1 of { happy_var_1 -> 
-	case happyOut11 happy_x_2 of { happy_var_2 -> 
-	happyIn10
-		 (App happy_var_1 happy_var_2
-	)}}
-
-happyReduce_15 = happySpecReduce_1  5# happyReduction_15
-happyReduction_15 happy_x_1
-	 =  case happyOut11 happy_x_1 of { happy_var_1 -> 
-	happyIn10
-		 (happy_var_1
-	)}
-
-happyReduce_16 = happySpecReduce_1  6# happyReduction_16
-happyReduction_16 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TInt happy_var_1) -> 
-	happyIn11
-		 (Int happy_var_1
-	)}
-
-happyReduce_17 = happySpecReduce_1  6# happyReduction_17
-happyReduction_17 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TVar happy_var_1) -> 
-	happyIn11
-		 (Var happy_var_1
-	)}
-
-happyReduce_18 = happySpecReduce_3  6# happyReduction_18
-happyReduction_18 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut7 happy_x_2 of { happy_var_2 -> 
-	happyIn11
-		 (happy_var_2
-	)}
-
-happyNewToken action sts stk [] =
-	happyDoAction 15# notHappyAtAll action sts stk []
-
-happyNewToken action sts stk (tk:tks) =
-	let cont i = happyDoAction i tk action sts stk tks in
-	case tk of {
-	TLet -> cont 1#;
-	TIn -> cont 2#;
-	TInt happy_dollar_dollar -> cont 3#;
-	TVar happy_dollar_dollar -> cont 4#;
-	TArrow -> cont 5#;
-	TSym '=' -> cont 6#;
-	TSym '+' -> cont 7#;
-	TSym '-' -> cont 8#;
-	TSym '*' -> cont 9#;
-	TSym '/' -> cont 10#;
-	TSym '(' -> cont 11#;
-	TSym ')' -> cont 12#;
-	TSym '\\' -> cont 13#;
-	TSym ';' -> cont 14#;
-	_ -> happyError' (tk:tks)
-	}
-
-happyError_ 15# tk tks = happyError' tks
-happyError_ _ tk tks = happyError' (tk:tks)
-
-happyThen :: () => Either String a -> (a -> Either String b) -> Either String b
-happyThen = (>>=)
-happyReturn :: () => a -> Either String a
-happyReturn = (return)
-happyThen1 m k tks = (>>=) m (\a -> k a tks)
-happyReturn1 :: () => a -> b -> Either String a
-happyReturn1 = \a tks -> (return) a
-happyError' :: () => [(Token)] -> Either String a
-happyError' = happyError
-
-parseExp tks = happySomeParser where
-  happySomeParser = happyThen (happyParse 0# tks) (\x -> happyReturn (happyOut7 x))
-
-parseBinds tks = happySomeParser where
-  happySomeParser = happyThen (happyParse 1# tks) (\x -> happyReturn (happyOut5 x))
-
-happySeq = happyDontSeq
-
-
-happyError :: [Token] -> Either String a
-happyError [] = Left "Parse error at end of input"
-happyError (tk:tks) = Left ("Parse error before " ++ show tk)
-{-# LINE 1 "templates/GenericTemplate.hs" #-}
-{-# LINE 1 "templates/GenericTemplate.hs" #-}
-{-# LINE 1 "<built-in>" #-}
-{-# LINE 1 "<command-line>" #-}
-{-# LINE 1 "templates/GenericTemplate.hs" #-}
--- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp 
-
-{-# LINE 13 "templates/GenericTemplate.hs" #-}
-
-
-
-
-
--- 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)
-#define EQ(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.==# m)) :: Bool)
-#else
-#define LT(n,m) (n Happy_GHC_Exts.<# m)
-#define GTE(n,m) (n Happy_GHC_Exts.>=# m)
-#define EQ(n,m) (n Happy_GHC_Exts.==# m)
-#endif
-{-# LINE 46 "templates/GenericTemplate.hs" #-}
-
-
-data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList
-
-
-
-
-
-{-# LINE 67 "templates/GenericTemplate.hs" #-}
-
-{-# LINE 77 "templates/GenericTemplate.hs" #-}
-
-{-# LINE 86 "templates/GenericTemplate.hs" #-}
-
-infixr 9 `HappyStk`
-data HappyStk a = HappyStk a (HappyStk a)
-
------------------------------------------------------------------------------
--- starting the parse
-
-happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll
-
------------------------------------------------------------------------------
--- Accepting the parse
-
--- If the current token is 0#, it means we've just accepted a partial
--- 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
-happyAccept j tk st sts (HappyStk ans _) = 
-        (happyTcHack j (happyTcHack st)) (happyReturn1 ans)
-
------------------------------------------------------------------------------
--- Arrays only: do the next action
-
-
-
-happyDoAction i tk st
-        = {- 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 -}
-
-
-                                     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#))
-                  then EQ(indexShortOffAddr happyCheck off_i, i)
-                  else False
-         action
-          | check     = indexShortOffAddr happyTable off_i
-          | otherwise = indexShortOffAddr happyDefActions st
-
-
-indexShortOffAddr (HappyA# arr) off =
-        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#)))
-        low  = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off'))
-        off' = off Happy_GHC_Exts.*# 2#
-
-
-
-
-
-data HappyAddr = HappyA# Happy_GHC_Exts.Addr#
-
-
-
-
------------------------------------------------------------------------------
--- HappyState data type (not arrays)
-
-{-# LINE 170 "templates/GenericTemplate.hs" #-}
-
------------------------------------------------------------------------------
--- Shifting a token
-
-happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =
-     let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
---     trace "shifting the error token" $
-     happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)
-
-happyShift new_state i tk st sts stk =
-     happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)
-
--- happyReduce is specialised for the common cases.
-
-happySpecReduce_0 i fn 0# tk st sts stk
-     = happyFail 0# tk st sts stk
-happySpecReduce_0 nt fn j tk st@((action)) sts stk
-     = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)
-
-happySpecReduce_1 i fn 0# tk st sts stk
-     = happyFail 0# tk st sts stk
-happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')
-     = let r = fn v1 in
-       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
-
-happySpecReduce_2 i fn 0# tk st sts stk
-     = happyFail 0# tk st sts stk
-happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')
-     = let r = fn v1 v2 in
-       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
-
-happySpecReduce_3 i fn 0# tk st sts stk
-     = happyFail 0# tk st sts stk
-happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')
-     = let r = fn v1 v2 v3 in
-       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
-
-happyReduce k i fn 0# tk st sts stk
-     = 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)
-
-happyMonadReduce k nt fn 0# tk st sts stk
-     = happyFail 0# tk st sts stk
-happyMonadReduce k nt fn j tk st sts stk =
-      case happyDrop k (HappyCons (st) (sts)) of
-        sts1@((HappyCons (st1@(action)) (_))) ->
-          let drop_stk = happyDropStk k stk in
-          happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))
-
-happyMonad2Reduce k nt fn 0# tk st sts stk
-     = happyFail 0# tk st sts stk
-happyMonad2Reduce k nt fn j tk st sts stk =
-      case happyDrop k (HappyCons (st) (sts)) of
-        sts1@((HappyCons (st1@(action)) (_))) ->
-         let drop_stk = happyDropStk k stk
-
-             off = indexShortOffAddr happyGotoOffsets st1
-             off_i = (off Happy_GHC_Exts.+# nt)
-             new_state = indexShortOffAddr happyTable off_i
-
-
-
-          in
-          happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))
-
-happyDrop 0# l = l
-happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t
-
-happyDropStk 0# l = l
-happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.Int#)) xs
-
------------------------------------------------------------------------------
--- Moving to a new state after a reduction
-
-
-happyGoto nt j tk st = 
-   {- nothing -}
-   happyDoAction j tk new_state
-   where off = indexShortOffAddr happyGotoOffsets st
-         off_i = (off Happy_GHC_Exts.+# nt)
-         new_state = indexShortOffAddr happyTable off_i
-
-
-
-
------------------------------------------------------------------------------
--- Error recovery (0# is the error token)
-
--- 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" $ 
-        happyError_ i tk
-
-{-  We don't need state discarding for our restricted implementation of
-    "error".  In fact, it can cause some bogus parses, so I've disabled it
-    for now --SDM
-
--- 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))
--}
-
--- 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)
-
--- Internal happy errors:
-
-notHappyAtAll :: a
-notHappyAtAll = error "Internal Happy error\n"
-
------------------------------------------------------------------------------
--- Hack to get the typechecker to accept our action functions
-
-
-happyTcHack :: Happy_GHC_Exts.Int# -> a -> a
-happyTcHack x y = y
-{-# INLINE happyTcHack #-}
-
-
------------------------------------------------------------------------------
--- Seq-ing.  If the --strict flag is given, then Happy emits 
---      happySeq = happyDoSeq
--- otherwise it emits
---      happySeq = happyDontSeq
-
-happyDoSeq, happyDontSeq :: a -> b -> b
-happyDoSeq   a b = a `seq` b
-happyDontSeq a b = b
-
------------------------------------------------------------------------------
--- Don't inline any functions from the template.  GHC has a nasty habit
--- of deciding to inline happyGoto everywhere, which increases the size of
--- the generated parser quite a bit.
-
-
-{-# NOINLINE happyDoAction #-}
-{-# NOINLINE happyTable #-}
-{-# NOINLINE happyCheck #-}
-{-# NOINLINE happyActOffsets #-}
-{-# NOINLINE happyGotoOffsets #-}
-{-# NOINLINE happyDefActions #-}
-
-{-# NOINLINE happyShift #-}
-{-# NOINLINE happySpecReduce_0 #-}
-{-# NOINLINE happySpecReduce_1 #-}
-{-# NOINLINE happySpecReduce_2 #-}
-{-# NOINLINE happySpecReduce_3 #-}
-{-# NOINLINE happyReduce #-}
-{-# NOINLINE happyMonadReduce #-}
-{-# NOINLINE happyGoto #-}
-{-# NOINLINE happyFail #-}
-
--- end of Happy Template.
diff --git a/fwaccel.hs b/fwaccel.hs
--- a/fwaccel.hs
+++ b/fwaccel.hs
@@ -74,7 +74,7 @@
           [11, 17, inf, 14, 21,  0] ]
 
 test :: Bool
-test = toList (shortestPaths testGraph) == toList expectedResult
+test = toList (shortestPaths testGraph) Prelude.== toList expectedResult
 
 toAdjMatrix :: [[Weight]] -> Graph
 toAdjMatrix xs = A.fromList (Z :. k :. k) (concat xs)
diff --git a/kmeans/GenSamples.hs b/kmeans/GenSamples.hs
--- a/kmeans/GenSamples.hs
+++ b/kmeans/GenSamples.hs
@@ -16,6 +16,7 @@
 minSD = 1.5
 maxSD = 2.0
 
+main :: IO ()
 main = do
     n: minp: maxp: rest <- fmap (fmap read) getArgs
 
@@ -24,8 +25,8 @@
         _ -> return ()
 
     nps <- replicateM n (randomRIO (minp, maxp))
-    xs  <- replicateM n (randomRIO (minX, maxY))
-    ys  <- replicateM n (randomRIO (minX, maxY))
+    xs  <- replicateM n (randomRIO (minX, maxX))
+    ys  <- replicateM n (randomRIO (minY, maxY))
     sds <- replicateM n (randomRIO (minSD, maxSD))
 
     let params = zip5 nps xs ys sds sds
@@ -66,7 +67,6 @@
                   -> Double -> Double    -- X and Y of the mean
                   -> Double -> Double    -- X and Y standard deviations
                   -> IO [Point]
-
 generate2DSamples n mx my sdx sdy = do
   gen <- newStdGen
   let (genx, geny) = split gen
diff --git a/parconc-examples.cabal b/parconc-examples.cabal
--- a/parconc-examples.cabal
+++ b/parconc-examples.cabal
@@ -1,7 +1,7 @@
 name:                parconc-examples
-version:             0.4.5
+version:             0.4.7
 synopsis:            Examples to accompany the book "Parallel and Concurrent Programming in Haskell"
--- description:         
+description:         Examples to accompany the book "Parallel and Concurrent Programming in Haskell"
 license:             BSD3
 license-file:        LICENSE
 author:              Simon Marlow
@@ -84,15 +84,16 @@
 
 executable rpar
   main-is: rpar.hs
-  build-depends:   base >= 4.5 && < 4.9
-                 , time >= 1.4 && < 1.6
+  build-depends:   base >= 4.5 && < 4.12
+                 , time >= 1.4 && < 1.10
                  , parallel ==3.2.*
+  ghc-options: -threaded
   default-language: Haskell2010
 
 executable sudoku1
   main-is: sudoku1.hs
   other-modules: Sudoku
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , parallel ==3.2.*
                  , array >= 0.4 && <0.6
   default-language: Haskell2010
@@ -100,7 +101,7 @@
 executable sudoku2
   main-is: sudoku2.hs
   other-modules: Sudoku
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , parallel ==3.2.*
                  , array >= 0.4 && <0.6
                  , deepseq >= 1.3 && < 1.5
@@ -110,7 +111,7 @@
 executable sudoku3
   main-is: sudoku3.hs
   other-modules: Sudoku
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , parallel ==3.2.*
                  , array >= 0.4 && <0.6
   ghc-options: -threaded
@@ -119,7 +120,7 @@
 executable sudoku4
   main-is: sudoku4.hs
   other-modules: Sudoku
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , parallel ==3.2.*
                  , array >= 0.4 && <0.6
   ghc-options: -threaded
@@ -128,7 +129,7 @@
 executable sudoku5
   main-is: sudoku5.hs
   other-modules: Sudoku
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , parallel ==3.2.*
                  , array >= 0.4 && <0.6
   ghc-options: -threaded
@@ -139,21 +140,21 @@
 
 executable strat
   main-is: strat.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , parallel ==3.2.*
   ghc-options: -threaded
   default-language: Haskell2010
 
 executable strat2
   main-is: strat2.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , parallel ==3.2.*
   ghc-options: -threaded
   default-language: Haskell2010
 
 executable strat3
   main-is: strat3.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , parallel ==3.2.*
   ghc-options: -threaded
   default-language: Haskell2010
@@ -161,7 +162,7 @@
 executable rsa
   main-is: rsa.hs
   other-modules: ByteStringCompat
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , bytestring >= 0.9 && < 0.11
                  , deepseq >= 1.3 && < 1.5
   default-language: Haskell2010
@@ -169,7 +170,7 @@
 executable rsa1
   main-is: rsa1.hs
   other-modules: ByteStringCompat
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , bytestring >= 0.9 && < 0.11
                  , parallel ==3.2.*
                  , deepseq >= 1.3 && < 1.5
@@ -179,7 +180,7 @@
 executable rsa2
   main-is: rsa2.hs
   other-modules: ByteStringCompat
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , bytestring >= 0.9 && < 0.11
                  , parallel ==3.2.*
                  , deepseq >= 1.3 && < 1.5
@@ -190,17 +191,17 @@
   hs-source-dirs: kmeans
   main-is: kmeans.hs
   other-modules: KMeansCore
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , parallel ==3.2.*
-                 , time >= 1.4 && < 1.6
+                 , time >= 1.4 && < 1.10
                  , deepseq >= 1.3 && < 1.5
                  , 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.8
+                 , binary >=0.6.3 && < 0.11
                  , array >= 0.4 && <0.6
                  , bytestring >= 0.9 && < 0.11
-                 , vector >= 0.10 && < 0.12
+                 , vector >= 0.10 && < 0.13
   ghc-options: -threaded
   default-language: Haskell2010
 
@@ -208,10 +209,10 @@
   hs-source-dirs: kmeans
   main-is: GenSamples.hs
   other-modules: KMeansCore
-  build-depends:   base >= 4.5 && < 4.9
-                 , binary >=0.6.3 && < 0.8
+  build-depends:   base >= 4.5 && < 4.12
+                 , binary >=0.6.3 && < 0.11
                  , array >= 0.4 && <0.6
-                 , vector >= 0.10 && < 0.12
+                 , vector >= 0.10 && < 0.13
                  , random >= 1.0 && < 1.2
                  , normaldistribution >= 1.1 && < 1.2
                  , deepseq >= 1.3 && < 1.5
@@ -223,7 +224,7 @@
 
 executable parmonad
   main-is: parmonad.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , monad-par >= 0.3.4 && < 0.4
   ghc-options: -threaded
   default-language: Haskell2010
@@ -231,7 +232,7 @@
 executable rsa-pipeline
   main-is: rsa-pipeline.hs
   other-modules: ByteStringCompat Stream
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , bytestring >= 0.9 && < 0.11
                  , monad-par >= 0.3.4 && < 0.4
                  , deepseq >= 1.3 && < 1.5
@@ -242,7 +243,7 @@
   main-is: fwsparse.hs
   other-modules: SparseGraph MapCompat
   hs-source-dirs: fwsparse
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , random >= 1.0 && < 1.2
                  , array >= 0.4 && <0.6
                  , containers >= 0.4 && < 0.6
@@ -252,7 +253,7 @@
   main-is: fwsparse1.hs
   other-modules: SparseGraph MapCompat
   hs-source-dirs: fwsparse
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , random >= 1.0 && < 1.2
                  , array >= 0.4 && <0.6
                  , containers >= 0.4 && < 0.6
@@ -263,7 +264,7 @@
 
 executable  timetable
   main-is: timetable.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , containers >= 0.4 && < 0.6
                  , deepseq >= 1.3 && < 1.5
                  , random >= 1.0 && < 1.2
@@ -271,7 +272,7 @@
 
 executable  timetable1
   main-is: timetable1.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , containers >= 0.4 && < 0.6
                  , deepseq >= 1.3 && < 1.5
                  , monad-par >= 0.3.4 && < 0.4
@@ -280,7 +281,7 @@
 
 executable  timetable2
   main-is: timetable2.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , containers >= 0.4 && < 0.6
                  , deepseq >= 1.3 && < 1.5
                  , monad-par >= 0.3.4 && < 0.4
@@ -289,7 +290,7 @@
 
 executable  timetable3
   main-is: timetable3.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , containers >= 0.4 && < 0.6
                  , deepseq >= 1.3 && < 1.5
                  , monad-par >= 0.3.4 && < 0.4
@@ -312,11 +313,13 @@
                   Infer
                   Substitution
                   StateX
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , containers >= 0.4 && < 0.6
                  , deepseq >= 1.3 && < 1.5
                  , monad-par >= 0.3.4 && < 0.4
                  , array >= 0.4 && <0.6
+  build-tools:     alex
+                 , happy
   default-language: Haskell2010
 
 -- -----------------------------------------------------------------------------
@@ -324,7 +327,7 @@
 
 executable  fwdense
   main-is: fwdense.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , repa >= 3.2 && < 3.5
   ghc-options: -O2
   if flag(llvm)
@@ -333,9 +336,9 @@
 
 executable  fwdense1
   main-is: fwdense1.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , repa >= 3.2 && < 3.5
-                 , transformers >=0.3 && <0.5
+                 , transformers >=0.3 && <0.6
   ghc-options: -O2 -threaded
   if flag(llvm)
      ghc-options: -fllvm
@@ -343,7 +346,7 @@
 
 executable rotateimage
   main-is: rotateimage.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , repa >= 3.2 && < 3.5
   ghc-options: -O2 -threaded
   if flag(devil)
@@ -360,19 +363,19 @@
 executable  fwaccel
   main-is: fwaccel.hs
   other-modules: AccelerateCompat
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   ghc-options: -O2
   if flag(accelerate)
-     build-depends: accelerate >= 0.12 && < 0.16
+     build-depends: accelerate >= 0.12 && < 1.3
   else
      buildable: False
   default-language: Haskell2010
 
 executable  fwaccel-gpu
   main-is: fwaccel-gpu.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   if flag(accelerate)
-     build-depends: accelerate >= 0.12 && < 0.16
+     build-depends: accelerate >= 0.12 && < 1.3
   else
      buildable: False
   if flag(cuda)
@@ -386,10 +389,10 @@
   main-is: mandel.hs
   other-modules: Config
   hs-source-dirs: mandel
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , fclabels
   if flag(accelerate)
-     build-depends: accelerate >= 0.12 && < 0.16
+     build-depends: accelerate >= 0.12 && < 1.3
                   , accelerate-io
   else
      buildable: False
@@ -405,17 +408,17 @@
 
 executable  fork
   main-is: fork.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   default-language: Haskell2010
 
 executable  reminders
   main-is: reminders.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   default-language: Haskell2010
 
 executable  reminders2
   main-is: reminders2.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   default-language: Haskell2010
 
 -- -----------------------------------------------------------------------------
@@ -423,38 +426,38 @@
 
 executable  mvar1
   main-is: mvar1.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   default-language: Haskell2010
 
 executable  mvar2
   main-is: mvar2.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   default-language: Haskell2010
 
 executable  mvar3
   main-is: mvar3.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   default-language: Haskell2010
 
 executable  logger
   main-is: logger.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   default-language: Haskell2010
 
 executable  phonebook
   main-is: phonebook.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , containers >= 0.4 && < 0.6
   default-language: Haskell2010
 
 executable  chan
   main-is: chan.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   default-language: Haskell2010
 
 executable  chan2
   main-is: chan2.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   default-language: Haskell2010
 
 -- -----------------------------------------------------------------------------
@@ -463,12 +466,12 @@
 executable geturls1
   main-is: geturls1.hs
   other-modules: GetURL
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , containers >= 0.4 && < 0.6
-                 , http-conduit >= 2.1 && < 2.3
+                 , http-conduit >= 2.1 && < 2.4
                  , bytestring >= 0.9 && < 0.11
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -477,13 +480,13 @@
 executable  geturls2
   main-is: geturls2.hs
   other-modules: GetURL
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
-                 , time >= 1.4 && < 1.6
-                 , http-conduit >= 2.1 && < 2.3
+                 , time >= 1.4 && < 1.10
+                 , http-conduit >= 2.1 && < 2.4
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -492,13 +495,13 @@
 executable  geturls3
   main-is: geturls3.hs
   other-modules: TimeIt GetURL
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
-                 , time >= 1.4 && < 1.6
-                 , http-conduit >= 2.1 && < 2.3
+                 , time >= 1.4 && < 1.10
+                 , http-conduit >= 2.1 && < 2.4
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -507,13 +510,13 @@
 executable  geturls4
   main-is: geturls4.hs
   other-modules: GetURL
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
-                 , time >= 1.4 && < 1.6
-                 , http-conduit >= 2.1 && < 2.3
+                 , time >= 1.4 && < 1.10
+                 , http-conduit >= 2.1 && < 2.4
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -522,13 +525,13 @@
 executable  geturls5
   main-is: geturls5.hs
   other-modules: GetURL
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
-                 , time >= 1.4 && < 1.6
-                 , http-conduit >= 2.1 && < 2.3
+                 , time >= 1.4 && < 1.10
+                 , http-conduit >= 2.1 && < 2.4
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -537,13 +540,13 @@
 executable  geturls6
   main-is: geturls6.hs
   other-modules: TimeIt GetURL
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
-                 , time >= 1.4 && < 1.6
-                 , http-conduit >= 2.1 && < 2.3
+                 , time >= 1.4 && < 1.10
+                 , http-conduit >= 2.1 && < 2.4
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -555,13 +558,13 @@
 executable  geturlscancel
   main-is: geturlscancel.hs
   other-modules: TimeIt GetURL
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
-                 , time >= 1.4 && < 1.6
-                 , http-conduit >= 2.1 && < 2.3
+                 , time >= 1.4 && < 1.10
+                 , http-conduit >= 2.1 && < 2.4
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -570,13 +573,13 @@
 executable  geturlscancel2
   main-is: geturlscancel2.hs
   other-modules: TimeIt GetURL
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
-                 , time >= 1.4 && < 1.6
-                 , http-conduit >= 2.1 && < 2.3
+                 , time >= 1.4 && < 1.10
+                 , http-conduit >= 2.1 && < 2.4
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -584,27 +587,27 @@
 
 executable  modifytwo
   main-is: modifytwo.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   default-language: Haskell2010
 
 executable  chan3
   main-is: chan3.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   default-language: Haskell2010
 
 executable  timeout
   main-is: timeout.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   default-language: Haskell2010
 
 executable  catch-mask
   main-is: catch-mask.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   default-language: Haskell2010
 
 executable  catch-mask2
   main-is: catch-mask2.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   default-language: Haskell2010
 
 -- -----------------------------------------------------------------------------
@@ -619,7 +622,7 @@
   main-is: miscmodules.hs
   hs-source-dirs: miscmodules .
   other-modules: TMVar, TList, TQueue, TBQueue, WindowManager
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , containers >= 0.4 && < 0.6
                  , stm ==2.4.*
   default-language: Haskell2010
@@ -627,13 +630,13 @@
 executable  geturlsfirst
   main-is: geturlsfirst.hs
   other-modules: ConcurrentUtils, GetURL
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
-                 , time >= 1.4 && < 1.6
-                 , http-conduit >= 2.1 && < 2.3
+                 , time >= 1.4 && < 1.10
+                 , http-conduit >= 2.1 && < 2.4
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -641,7 +644,7 @@
 
 executable  TChan
   main-is: TChan.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , stm ==2.4.*
   default-language: Haskell2010
 
@@ -651,13 +654,13 @@
 executable  geturls7
   main-is: geturls7.hs
   other-modules: ConcurrentUtils, GetURL
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
-                 , time >= 1.4 && < 1.6
-                 , http-conduit >= 2.1 && < 2.3
+                 , time >= 1.4 && < 1.10
+                 , http-conduit >= 2.1 && < 2.4
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -666,13 +669,13 @@
 executable  geturls8
   main-is: geturls8.hs
   other-modules: Async, GetURL
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
-                 , time >= 1.4 && < 1.6
-                 , http-conduit >= 2.1 && < 2.3
+                 , time >= 1.4 && < 1.10
+                 , http-conduit >= 2.1 && < 2.4
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -681,13 +684,13 @@
 executable  geturls9
   main-is: geturls9.hs
   other-modules: Async, GetURL
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
-                 , time >= 1.4 && < 1.6
-                 , http-conduit >= 2.1 && < 2.3
+                 , time >= 1.4 && < 1.10
+                 , http-conduit >= 2.1 && < 2.4
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -695,8 +698,8 @@
 
 executable  timeout2
   main-is: timeout.hs
-  build-depends:   base >= 4.5 && < 4.9
-                 , async ==2.0.*
+  build-depends:   base >= 4.5 && < 4.12
+                 , async >= 2.0 && < 2.3
   default-language: Haskell2010
 
 -- -----------------------------------------------------------------------------
@@ -704,49 +707,49 @@
 
 executable findseq
   main-is: findseq.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , filepath >= 1.3 && < 1.5
-                 , directory >= 1.1 && < 1.3
+                 , directory >= 1.1 && < 1.4
   default-language: Haskell2010
 
 executable findpar
   main-is: findpar.hs
   ghc-options: -threaded
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , filepath >= 1.3 && < 1.5
-                 , directory >= 1.1 && < 1.3
-                 , async ==2.0.*
+                 , directory >= 1.1 && < 1.4
+                 , async >= 2.0 && < 2.3
   default-language: Haskell2010
 
 executable findpar2
   main-is: findpar2.hs
   ghc-options: -threaded
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , filepath >= 1.3 && < 1.5
-                 , directory >= 1.1 && < 1.3
-                 , async ==2.0.*
+                 , directory >= 1.1 && < 1.4
+                 , async >= 2.0 && < 2.3
   default-language: Haskell2010
 
 executable findpar3
   main-is: findpar3.hs
   other-modules: CasIORef
   ghc-options: -threaded
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , filepath >= 1.3 && < 1.5
-                 , directory >= 1.1 && < 1.3
-                 , async ==2.0.*
+                 , directory >= 1.1 && < 1.4
+                 , async >= 2.0 && < 2.3
                  , stm ==2.4.*
   default-language: Haskell2010
 
 executable findpar4
   main-is: findpar4.hs
   ghc-options: -threaded
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , filepath >= 1.3 && < 1.5
-                 , directory >= 1.1 && < 1.3
-                 , async ==2.0.*
+                 , directory >= 1.1 && < 1.4
+                 , async >= 2.0 && < 2.3
                  , stm ==2.4.*
-                 , transformers >=0.3 && <0.5
+                 , transformers >=0.3 && <0.6
                  , abstract-par ==0.3.*
                  , monad-par >= 0.3.4 && < 0.4
   default-language: Haskell2010
@@ -754,10 +757,10 @@
 executable findpar5
   main-is: findpar5.hs
   ghc-options: -threaded
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , filepath >= 1.3 && < 1.5
-                 , directory >= 1.1 && < 1.3
-                 , transformers >=0.3 && <0.5
+                 , directory >= 1.1 && < 1.4
+                 , transformers >=0.3 && <0.6
                  , abstract-par ==0.3.*
                  , monad-par >= 0.3.4 && < 0.4
   default-language: Haskell2010
@@ -768,10 +771,10 @@
 executable  server
   main-is: server.hs
   other-modules: ConcurrentUtils
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , stm ==2.4.*
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -780,11 +783,11 @@
 executable  server2
   main-is: server2.hs
   other-modules: ConcurrentUtils
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , stm ==2.4.*
-                 , async ==2.0.*
+                 , async >= 2.0 && < 2.3
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -793,12 +796,12 @@
 executable chat
   main-is: chat.hs
   other-modules: ConcurrentUtils
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , containers >= 0.4 && < 0.6
-                 , async ==2.0.*
+                 , async >= 2.0 && < 2.3
                  , stm ==2.4.*
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -810,11 +813,11 @@
 executable ping
   main-is: distrib-ping/ping.hs
   other-modules: DistribUtils
-  build-depends:   base >= 4.5 && < 4.9
-                 , binary >=0.6.3 && < 0.8
-                 , template-haskell >= 2.7 && < 2.11
+  build-depends:   base >= 4.5 && < 4.12
+                 , binary >=0.6.3 && < 0.11
+                 , template-haskell >= 2.7 && < 2.15
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -823,7 +826,7 @@
       build-depends: ghc-prim
   if flag(distributed)
      build-depends:
-                   distributed-process == 0.5.*
+                   distributed-process >= 0.5 && < 0.7
                  , distributed-process-simplelocalnet ==0.2.*
                  , distributed-static >= 0.2 && < 0.4
   else
@@ -833,11 +836,11 @@
 executable ping-multi
   main-is: distrib-ping/ping-multi.hs
   other-modules: DistribUtils
-  build-depends:   base >= 4.5 && < 4.9
-                 , binary >=0.6.3 && < 0.8
-                 , template-haskell >= 2.7 && < 2.11
+  build-depends:   base >= 4.5 && < 4.12
+                 , binary >=0.6.3 && < 0.11
+                 , template-haskell >= 2.7 && < 2.15
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -846,7 +849,7 @@
       build-depends: ghc-prim
   if flag(distributed)
      build-depends:
-                   distributed-process == 0.5.*
+                   distributed-process >= 0.5 && < 0.7
                  , distributed-process-simplelocalnet ==0.2.*
                  , distributed-static >= 0.2 && < 0.4
   else
@@ -856,11 +859,11 @@
 executable ping-tc
   main-is: distrib-ping/ping-tc.hs
   other-modules: DistribUtils
-  build-depends:   base >= 4.5 && < 4.9
-                 , binary >=0.6.3 && < 0.8
-                 , template-haskell >= 2.7 && < 2.11
+  build-depends:   base >= 4.5 && < 4.12
+                 , binary >=0.6.3 && < 0.11
+                 , template-haskell >= 2.7 && < 2.15
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -869,7 +872,7 @@
       build-depends: ghc-prim
   if flag(distributed)
      build-depends:
-                   distributed-process == 0.5.*
+                   distributed-process >= 0.5 && < 0.7
                  , distributed-process-simplelocalnet ==0.2.*
                  , distributed-static >= 0.2 && < 0.4
   else
@@ -879,11 +882,11 @@
 executable ping-tc-merge
   main-is: distrib-ping/ping-tc-merge.hs
   other-modules: DistribUtils
-  build-depends:   base >= 4.5 && < 4.9
-                 , binary >=0.6.3 && < 0.8
-                 , template-haskell >= 2.7 && < 2.11
+  build-depends:   base >= 4.5 && < 4.12
+                 , binary >=0.6.3 && < 0.11
+                 , template-haskell >= 2.7 && < 2.15
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -892,7 +895,7 @@
       build-depends: ghc-prim
   if flag(distributed)
      build-depends:
-                   distributed-process == 0.5.*
+                   distributed-process >= 0.5 && < 0.7
                  , distributed-process-simplelocalnet ==0.2.*
                  , distributed-static >= 0.2 && < 0.4
   else
@@ -903,11 +906,11 @@
 executable ping-tc-notify
   main-is: distrib-ping/ping-tc-notify.hs
   other-modules: DistribUtils
-  build-depends:   base >= 4.5 && < 4.9
-                 , binary >=0.6.3 && < 0.8
-                 , template-haskell >= 2.7 && < 2.11
+  build-depends:   base >= 4.5 && < 4.12
+                 , binary >=0.6.3 && < 0.11
+                 , template-haskell >= 2.7 && < 2.15
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -916,7 +919,7 @@
       build-depends: ghc-prim
   if flag(distributed)
      build-depends:
-                   distributed-process == 0.5.*
+                   distributed-process >= 0.5 && < 0.7
                  , distributed-process-simplelocalnet ==0.2.*
                  , distributed-static >= 0.2 && < 0.4
   else
@@ -925,11 +928,12 @@
 
 executable ping-fail
   main-is: distrib-ping/ping-fail.hs
-  build-depends:   base >= 4.5 && < 4.9
-                 , binary >=0.6.3 && < 0.8
-                 , template-haskell >= 2.7 && < 2.11
+  other-modules: DistribUtils
+  build-depends:   base >= 4.5 && < 4.12
+                 , binary >=0.6.3 && < 0.11
+                 , template-haskell >= 2.7 && < 2.15
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -938,7 +942,7 @@
       build-depends: ghc-prim
   if flag(distributed)
      build-depends:
-                   distributed-process == 0.5.*
+                   distributed-process >= 0.5 && < 0.7
                  , distributed-process-simplelocalnet ==0.2.*
                  , distributed-static >= 0.2 && < 0.4
   else
@@ -948,15 +952,15 @@
 executable distrib-chat
   main-is: distrib-chat/chat.hs
   other-modules: ConcurrentUtils DistribUtils
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , containers >= 0.4 && < 0.6
                  , stm ==2.4.*
-                 , async ==2.0.*
-                 , binary >=0.6.3 && < 0.8
-                 , transformers >=0.3 && <0.5
-                 , template-haskell >= 2.7 && < 2.11
+                 , async >= 2.0 && < 2.3
+                 , binary >=0.6.3 && < 0.11
+                 , transformers >=0.3 && <0.6
+                 , template-haskell >= 2.7 && < 2.15
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -965,7 +969,7 @@
       build-depends: ghc-prim
   if flag(distributed)
      build-depends:
-                   distributed-process == 0.5.*
+                   distributed-process >= 0.5 && < 0.7
                  , distributed-process-simplelocalnet ==0.2.*
                  , distributed-static >= 0.2 && < 0.4
   else
@@ -975,15 +979,15 @@
 executable distrib-chat-noslave
   main-is: distrib-chat/chat-noslave.hs
   other-modules: ConcurrentUtils
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , containers >= 0.4 && < 0.6
                  , stm ==2.4.*
-                 , async ==2.0.*
-                 , binary >=0.6.3 && < 0.8
-                 , transformers >=0.3 && <0.5
-                 , template-haskell >= 2.7 && < 2.11
+                 , async >= 2.0 && < 2.3
+                 , binary >=0.6.3 && < 0.11
+                 , transformers >=0.3 && <0.6
+                 , template-haskell >= 2.7 && < 2.15
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -992,7 +996,7 @@
       build-depends: ghc-prim
   if flag(distributed)
      build-depends:
-                   distributed-process == 0.5.*
+                   distributed-process >= 0.5 && < 0.7
                  , distributed-process-simplelocalnet ==0.2.*
                  , distributed-static >= 0.2 && < 0.4
   else
@@ -1003,15 +1007,15 @@
   main-is: db.hs
   hs-source-dirs: . distrib-db
   other-modules: DistribUtils Database
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , containers >= 0.4 && < 0.6
                  , stm ==2.4.*
-                 , async ==2.0.*
-                 , binary >=0.6.3 && < 0.8
-                 , template-haskell >= 2.7 && < 2.11
-                 , transformers >=0.3 && <0.5
+                 , async >= 2.0 && < 2.3
+                 , binary >=0.6.3 && < 0.11
+                 , template-haskell >= 2.7 && < 2.15
+                 , transformers >=0.3 && <0.6
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -1020,7 +1024,7 @@
       build-depends: ghc-prim
   if flag(distributed)
      build-depends:
-                   distributed-process == 0.5.*
+                   distributed-process >= 0.5 && < 0.7
                  , distributed-process-simplelocalnet ==0.2.*
                  , distributed-static >= 0.2 && < 0.4
   else
@@ -1032,27 +1036,27 @@
 
 executable  mvar4
   main-is: mvar4.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   default-language: Haskell2010
 
 executable  deadlock1
   main-is: deadlock1.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   default-language: Haskell2010
 
 executable  deadlock2
   main-is: deadlock2.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   default-language: Haskell2010
 
 executable  threadperf1
   main-is: threadperf1.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   default-language: Haskell2010
 
 executable  threadperf2
   main-is: threadperf2.hs
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
   ghc-options: -rtsopts
   default-language: Haskell2010
 
@@ -1063,14 +1067,14 @@
   main-is: bingtranslator.hs
   other-modules: BingTranslate GetURL
   hs-source-dirs: other .
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , bytestring >= 0.9 && < 0.11
-                 , time >= 1.4 && < 1.6
-                 , http-conduit >= 2.1 && < 2.3
+                 , time >= 1.4 && < 1.10
+                 , http-conduit >= 2.1 && < 2.4
                  , utf8-string >= 0.3 && < 1.1
                  , xml ==1.3.*
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -1080,14 +1084,14 @@
   main-is: bingtranslatorconc.hs
   other-modules: BingTranslate GetURL
   hs-source-dirs: other .
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , bytestring >= 0.9 && < 0.11
-                 , time >= 1.4 && < 1.6
-                 , http-conduit >= 2.1 && < 2.3
+                 , time >= 1.4 && < 1.10
+                 , http-conduit >= 2.1 && < 2.4
                  , utf8-string >= 0.3 && < 1.1
                  , xml ==1.3.*
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
@@ -1096,13 +1100,13 @@
 executable  geturlsstm
   main-is: geturlsstm.hs
   other-modules: TimeIt GetURL
-  build-depends:   base >= 4.5 && < 4.9
+  build-depends:   base >= 4.5 && < 4.12
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
-                 , time >= 1.4 && < 1.6
-                 , http-conduit >= 2.1 && < 2.3
+                 , time >= 1.4 && < 1.10
+                 , http-conduit >= 2.1 && < 2.4
   if flag(network26)
-      build-depends: network >= 2.6 && < 2.7
+      build-depends: network >= 2.6 && < 2.9
                    , network-uri >= 2.6 && < 2.7
   else
       build-depends: network >= 2.3 && < 2.6
