diff --git a/ChangeLog.md b/ChangeLog.md
new file mode 100644
--- /dev/null
+++ b/ChangeLog.md
@@ -0,0 +1,9 @@
+# Version 0.4
+
+* Add `stack.yaml`, builds using LTS 4.2 (GHC 7.10.3)
+* Various upper bound updates,including `network-2.6`
+* Add `README.md`, with build instructions for Stack and Cabal
+* Fix `.cabal` problems found by stack
+* Build `tmvar.hs`, `windowman.hs` by importing them into a dummy `Main`
+  module in `miscmodules.hs`.
+* Removed generated `Parse.hs` and `Lex.hs`
diff --git a/TMVar.hs b/TMVar.hs
new file mode 100644
--- /dev/null
+++ b/TMVar.hs
@@ -0,0 +1,49 @@
+module TMVar where
+
+import Control.Concurrent.STM hiding (TMVar, takeTMVar)
+
+-- <<TMVar
+newtype TMVar a = TMVar (TVar (Maybe a))
+-- >>
+
+newTMVar :: a -> STM (TMVar a)
+newTMVar a = do
+  t <- newTVar (Just a)
+  return (TMVar t)
+
+-- <<newEmptyTMVar
+newEmptyTMVar :: STM (TMVar a)
+newEmptyTMVar = do
+  t <- newTVar Nothing
+  return (TMVar t)
+-- >>
+
+-- <<takeTMVar
+takeTMVar :: TMVar a -> STM a
+takeTMVar (TMVar t) = do
+  m <- readTVar t                       -- <1>
+  case m of
+    Nothing -> retry                    -- <2>
+    Just a  -> do
+      writeTVar t Nothing               -- <3>
+      return a
+-- >>
+
+-- <<putTMVar
+putTMVar :: TMVar a -> a -> STM ()
+putTMVar (TMVar t) a = do
+  m <- readTVar t
+  case m of
+    Nothing -> do
+      writeTVar t (Just a)
+      return ()
+    Just _  -> retry
+-- >>
+
+-- <<takeEitherTMVar
+takeEitherTMVar :: TMVar a -> TMVar b -> STM (Either a b)
+takeEitherTMVar ma mb =
+  fmap Left (takeTMVar ma)
+    `orElse`
+  fmap Right (takeTMVar mb)
+-- >>
diff --git a/WindowManager.hs b/WindowManager.hs
new file mode 100644
--- /dev/null
+++ b/WindowManager.hs
@@ -0,0 +1,74 @@
+module WindowManager where
+
+import Control.Concurrent.STM
+import Data.Map as Map
+import Data.Set as Set
+import Data.Maybe
+
+data Window
+instance Eq Window
+instance Ord Window
+
+data Desktop
+instance Eq Desktop
+instance Ord Desktop
+
+type Display = Map Desktop (TVar (Set Window))
+
+-- <<moveWindowSTM
+moveWindowSTM :: Display -> Window -> Desktop -> Desktop -> STM ()
+moveWindowSTM disp win a b = do
+  wa <- readTVar ma
+  wb <- readTVar mb
+  writeTVar ma (Set.delete win wa)
+  writeTVar mb (Set.insert win wb)
+ where
+  ma = disp ! a
+  mb = disp ! b
+-- >>
+
+-- <<moveWindow
+moveWindow :: Display -> Window -> Desktop -> Desktop -> IO ()
+moveWindow disp win a b = atomically $ moveWindowSTM disp win a b
+-- >>
+
+-- <<swapWindows
+swapWindows :: Display
+            -> Window -> Desktop
+            -> Window -> Desktop
+            -> IO ()
+swapWindows disp w a v b = atomically $ do
+  moveWindowSTM disp w a b
+  moveWindowSTM disp v b a
+-- >>
+
+render :: Set Window -> IO ()
+render = undefined
+
+-- <<UserFocus
+type UserFocus = TVar Desktop
+-- >>
+
+-- <<getWindows
+getWindows :: Display -> UserFocus -> STM (Set Window)
+getWindows disp focus = do
+  desktop <- readTVar focus
+  readTVar (disp ! desktop)
+-- >>
+
+-- <<renderThread
+renderThread :: Display -> UserFocus -> IO ()
+renderThread disp focus = do
+  wins <- atomically $ getWindows disp focus    -- <1>
+  loop wins                                     -- <2>
+ where
+  loop wins = do                                -- <3>
+    render wins                                 -- <4>
+    next <- atomically $ do
+               wins' <- getWindows disp focus   -- <5>
+               if (wins == wins')               -- <6>
+                   then retry                   -- <7>
+                   else return wins'            -- <8>
+    loop next
+-- >>
+
diff --git a/dist/build/parinfer/parinfer-tmp/Lex.hs b/dist/build/parinfer/parinfer-tmp/Lex.hs
--- a/dist/build/parinfer/parinfer-tmp/Lex.hs
+++ b/dist/build/parinfer/parinfer-tmp/Lex.hs
@@ -25,6 +25,72 @@
 {-# 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.
@@ -32,8 +98,9 @@
 -- 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 22 "templates/wrappers.hs" #-}
+{-# LINE 23 "templates/wrappers.hs" #-}
 
 import qualified Data.Bits
 
@@ -65,13 +132,13 @@
 -- -----------------------------------------------------------------------------
 -- The input type
 
-{-# LINE 72 "templates/wrappers.hs" #-}
+{-# LINE 73 "templates/wrappers.hs" #-}
 
-{-# LINE 89 "templates/wrappers.hs" #-}
+{-# LINE 93 "templates/wrappers.hs" #-}
 
-{-# LINE 103 "templates/wrappers.hs" #-}
+{-# LINE 107 "templates/wrappers.hs" #-}
 
-{-# LINE 118 "templates/wrappers.hs" #-}
+{-# LINE 122 "templates/wrappers.hs" #-}
 
 -- -----------------------------------------------------------------------------
 -- Token positions
@@ -83,18 +150,18 @@
 -- `move_pos' calculates the new position after traversing a given character,
 -- assuming the usual eight character tab stops.
 
-{-# LINE 141 "templates/wrappers.hs" #-}
+{-# LINE 145 "templates/wrappers.hs" #-}
 
 -- -----------------------------------------------------------------------------
 -- Default monad
 
-{-# LINE 239 "templates/wrappers.hs" #-}
+{-# LINE 256 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
 -- Monad (with ByteString input)
 
-{-# LINE 328 "templates/wrappers.hs" #-}
+{-# LINE 347 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
@@ -127,9 +194,9 @@
 -- -----------------------------------------------------------------------------
 -- Basic wrapper, ByteString version
 
-{-# LINE 373 "templates/wrappers.hs" #-}
+{-# LINE 392 "templates/wrappers.hs" #-}
 
-{-# LINE 386 "templates/wrappers.hs" #-}
+{-# LINE 406 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
@@ -137,13 +204,13 @@
 
 -- Adds text positions to the basic model.
 
-{-# LINE 403 "templates/wrappers.hs" #-}
+{-# LINE 423 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
 -- Posn wrapper, ByteString version
 
-{-# LINE 418 "templates/wrappers.hs" #-}
+{-# LINE 438 "templates/wrappers.hs" #-}
 
 
 -- -----------------------------------------------------------------------------
@@ -188,6 +255,72 @@
 {-# 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
@@ -204,6 +337,7 @@
 
 
 
+-- 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))
@@ -211,11 +345,11 @@
 #define GTE(n,m) (n >=# m)
 #define EQ(n,m) (n ==# m)
 #endif
-{-# LINE 50 "templates/GenericTemplate.hs" #-}
+{-# 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
@@ -258,6 +392,7 @@
 
 
 
+
 #if __GLASGOW_HASKELL__ < 503
 quickIndex arr i = arr ! i
 #else
@@ -346,7 +481,7 @@
 	check_accs (AlexAccNone) = last_acc
 	check_accs (AlexAcc a  ) = AlexLastAcc a input (I# (len))
 	check_accs (AlexAccSkip) = AlexLastSkip  input (I# (len))
-{-# LINE 196 "templates/GenericTemplate.hs" #-}
+{-# LINE 198 "templates/GenericTemplate.hs" #-}
 
 data AlexLastAcc a
   = AlexNone
@@ -362,7 +497,7 @@
   = AlexAccNone
   | AlexAcc a
   | AlexAccSkip
-{-# LINE 240 "templates/GenericTemplate.hs" #-}
+{-# LINE 242 "templates/GenericTemplate.hs" #-}
 
 -- used by wrappers
 iUnbox (I# (i)) = i
diff --git a/fwaccel.hs b/fwaccel.hs
--- a/fwaccel.hs
+++ b/fwaccel.hs
@@ -78,7 +78,7 @@
 
 toAdjMatrix :: [[Weight]] -> Graph
 toAdjMatrix xs = A.fromList (Z :. k :. k) (concat xs)
-  where k = length xs
+  where k = Prelude.length xs
 
 
 main :: IO ()
diff --git a/miscmodules.hs b/miscmodules.hs
new file mode 100644
--- /dev/null
+++ b/miscmodules.hs
@@ -0,0 +1,6 @@
+import WindowManager
+import TMVar
+import TList
+
+main :: IO ()
+main = return ()
diff --git a/parconc-examples.cabal b/parconc-examples.cabal
--- a/parconc-examples.cabal
+++ b/parconc-examples.cabal
@@ -1,5 +1,5 @@
 name:                parconc-examples
-version:             0.3.5
+version:             0.4
 synopsis:            Examples to accompany the book "Parallel and Concurrent Programming in Haskell"
 -- description:         
 license:             BSD3
@@ -30,6 +30,9 @@
                      kmeans/Makefile
                      timeout2.hs
                      parinfer/benchmark.in
+                     tmvar.hs
+                     windowman.hs
+                     ChangeLog.md
 
 -- -----------------------------------------------------------------------------
 -- Flags
@@ -54,8 +57,6 @@
   default: False
 
 -- -f-accelerate: Do not build the examples that require accelerate.
--- Accelerate doesn't build with GHC 7.10 yet: accelerate-io-0.15
--- requires base <4.8.
 
 flag accelerate
   default : True
@@ -65,6 +66,12 @@
 flag distributed
   default : True
 
+-- -f network26: Use network-2.6.  Internal flag; you shouldn't need
+-- to change this.
+
+flag network26
+  default : True
+
 -- -----------------------------------------------------------------------------
 -- par-eval
 
@@ -186,18 +193,19 @@
                  , binary >=0.6.3 && < 0.8
                  , array >= 0.4 && <0.6
                  , bytestring >= 0.9 && < 0.11
-                 , vector >= 0.10 && < 0.11
+                 , vector >= 0.10 && < 0.12
   ghc-options: -threaded
   default-language: Haskell2010
 
 executable GenSamples
   hs-source-dirs: kmeans
   main-is: GenSamples.hs
+  other-modules: KMeansCore
   build-depends:   base >= 4.5 && < 4.9
                  , binary >=0.6.3 && < 0.8
                  , array >= 0.4 && <0.6
-                 , vector >= 0.10 && < 0.11
-                 , random >= 1.0 && < 1.1
+                 , vector >= 0.10 && < 0.12
+                 , random >= 1.0 && < 1.2
                  , normaldistribution >= 1.1 && < 1.2
                  , deepseq >= 1.3 && < 1.5
                  , bytestring >= 0.9 && < 0.11
@@ -228,7 +236,7 @@
   other-modules: SparseGraph MapCompat
   hs-source-dirs: fwsparse
   build-depends:   base >= 4.5 && < 4.9
-                 , random >= 1.0 && < 1.1
+                 , random >= 1.0 && < 1.2
                  , array >= 0.4 && <0.6
                  , containers >= 0.4 && < 0.6
   default-language: Haskell2010
@@ -238,7 +246,7 @@
   other-modules: SparseGraph MapCompat
   hs-source-dirs: fwsparse
   build-depends:   base >= 4.5 && < 4.9
-                 , random >= 1.0 && < 1.1
+                 , random >= 1.0 && < 1.2
                  , array >= 0.4 && <0.6
                  , containers >= 0.4 && < 0.6
                  , monad-par >= 0.3.4 && < 0.4
@@ -251,7 +259,7 @@
   build-depends:   base >= 4.5 && < 4.9
                  , containers >= 0.4 && < 0.6
                  , deepseq >= 1.3 && < 1.5
-                 , random >= 1.0 && < 1.1
+                 , random >= 1.0 && < 1.2
   default-language: Haskell2010
 
 executable  timetable1
@@ -260,7 +268,7 @@
                  , containers >= 0.4 && < 0.6
                  , deepseq >= 1.3 && < 1.5
                  , monad-par >= 0.3.4 && < 0.4
-                 , random >= 1.0 && < 1.1
+                 , random >= 1.0 && < 1.2
   default-language: Haskell2010
 
 executable  timetable2
@@ -269,7 +277,7 @@
                  , containers >= 0.4 && < 0.6
                  , deepseq >= 1.3 && < 1.5
                  , monad-par >= 0.3.4 && < 0.4
-                 , random >= 1.0 && < 1.1
+                 , random >= 1.0 && < 1.2
   default-language: Haskell2010
 
 executable  timetable3
@@ -278,7 +286,7 @@
                  , containers >= 0.4 && < 0.6
                  , deepseq >= 1.3 && < 1.5
                  , monad-par >= 0.3.4 && < 0.4
-                 , random >= 1.0 && < 1.1
+                 , random >= 1.0 && < 1.2
   default-language: Haskell2010
 
 executable  parinfer
@@ -348,7 +356,7 @@
   build-depends:   base >= 4.5 && < 4.9
   ghc-options: -O2
   if flag(accelerate)
-     build-depends: accelerate >= 0.12 && < 0.15
+     build-depends: accelerate >= 0.12 && < 0.16
   else
      buildable: False
   default-language: Haskell2010
@@ -357,7 +365,7 @@
   main-is: fwaccel-gpu.hs
   build-depends:   base >= 4.5 && < 4.9
   if flag(accelerate)
-     build-depends: accelerate >= 0.12 && < 0.15
+     build-depends: accelerate >= 0.12 && < 0.16
   else
      buildable: False
   if flag(cuda)
@@ -374,7 +382,7 @@
   build-depends:   base >= 4.5 && < 4.9
                  , fclabels
   if flag(accelerate)
-     build-depends: accelerate >= 0.12 && < 0.15
+     build-depends: accelerate >= 0.12 && < 0.16
                   , accelerate-io
   else
      buildable: False
@@ -450,9 +458,13 @@
   other-modules: GetURL
   build-depends:   base >= 4.5 && < 4.9
                  , containers >= 0.4 && < 0.6
-                 , network >= 2.3 && < 2.5
                  , HTTP ==4000.2.*
                  , bytestring >= 0.9 && < 0.11
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   default-language: Haskell2010
 
 executable  geturls2
@@ -462,8 +474,12 @@
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time >= 1.4 && < 1.6
-                 , network >= 2.3 && < 2.5
                  , HTTP ==4000.2.*
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   default-language: Haskell2010
 
 executable  geturls3
@@ -473,8 +489,12 @@
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time >= 1.4 && < 1.6
-                 , network >= 2.3 && < 2.5
                  , HTTP ==4000.2.*
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   default-language: Haskell2010
 
 executable  geturls4
@@ -484,8 +504,12 @@
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time >= 1.4 && < 1.6
-                 , network >= 2.3 && < 2.5
                  , HTTP ==4000.2.*
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   default-language: Haskell2010
 
 executable  geturls5
@@ -495,8 +519,12 @@
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time >= 1.4 && < 1.6
-                 , network >= 2.3 && < 2.5
                  , HTTP ==4000.2.*
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   default-language: Haskell2010
 
 executable  geturls6
@@ -506,8 +534,12 @@
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time >= 1.4 && < 1.6
-                 , network >= 2.3 && < 2.5
                  , HTTP ==4000.2.*
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   default-language: Haskell2010
 
 -- -----------------------------------------------------------------------------
@@ -520,8 +552,12 @@
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time >= 1.4 && < 1.6
-                 , network >= 2.3 && < 2.5
                  , HTTP ==4000.2.*
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   default-language: Haskell2010
 
 executable  geturlscancel2
@@ -531,8 +567,12 @@
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time >= 1.4 && < 1.6
-                 , network >= 2.3 && < 2.5
                  , HTTP ==4000.2.*
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   default-language: Haskell2010
 
 executable  modifytwo
@@ -563,29 +603,27 @@
 -- -----------------------------------------------------------------------------
 -- conc-stm
 
--- not mentioned in the text?
-executable  windowman
-  main-is: windowman.hs
+executable  miscmodules
+  main-is: miscmodules.hs
+  other-modules: TMVar, TList, TQueue, TBQueue, WindowManager
   build-depends:   base >= 4.5 && < 4.9
                  , containers >= 0.4 && < 0.6
                  , stm ==2.4.*
   default-language: Haskell2010
 
-executable  tmvar
-  main-is: tmvar.hs
-  build-depends:   base >= 4.5 && < 4.9
-                 , stm ==2.4.*
-  default-language: Haskell2010
-
 executable  geturlsfirst
   main-is: geturlsfirst.hs
-  other-modules: ConcurrentUtils
+  other-modules: ConcurrentUtils, GetURL
   build-depends:   base >= 4.5 && < 4.9
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time >= 1.4 && < 1.6
                  , HTTP ==4000.2.*
-                 , network >= 2.3 && < 2.5
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   default-language: Haskell2010
 
 executable  TChan
@@ -594,56 +632,52 @@
                  , stm ==2.4.*
   default-language: Haskell2010
 
-executable  TList
-  main-is: TList.hs
-  build-depends:   base >= 4.5 && < 4.9
-                 , stm ==2.4.*
-  default-language: Haskell2010
-
-executable  TQueue
-  main-is: TQueue.hs
-  build-depends:   base >= 4.5 && < 4.9
-                 , stm ==2.4.*
-  default-language: Haskell2010
-
-executable  TBQueue
-  main-is: TBQueue.hs
-  build-depends:   base >= 4.5 && < 4.9
-                 , stm ==2.4.*
-  default-language: Haskell2010
-
 -- -----------------------------------------------------------------------------
 -- conc-higher
 
 executable  geturls7
   main-is: geturls7.hs
-  other-modules: ConcurrentUtils
+  other-modules: ConcurrentUtils, GetURL
   build-depends:   base >= 4.5 && < 4.9
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time >= 1.4 && < 1.6
-                 , network >= 2.3 && < 2.5
                  , HTTP ==4000.2.*
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   default-language: Haskell2010
 
 executable  geturls8
   main-is: geturls8.hs
+  other-modules: Async, GetURL
   build-depends:   base >= 4.5 && < 4.9
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time >= 1.4 && < 1.6
-                 , network >= 2.3 && < 2.5
                  , HTTP ==4000.2.*
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   default-language: Haskell2010
 
 executable  geturls9
   main-is: geturls9.hs
+  other-modules: Async, GetURL
   build-depends:   base >= 4.5 && < 4.9
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time >= 1.4 && < 1.6
-                 , network >= 2.3 && < 2.5
                  , HTTP ==4000.2.*
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   default-language: Haskell2010
 
 executable  timeout2
@@ -712,7 +746,11 @@
   other-modules: ConcurrentUtils
   build-depends:   base >= 4.5 && < 4.9
                  , stm ==2.4.*
-                 , network >= 2.3 && < 2.5
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   default-language: Haskell2010
 
 executable  server2
@@ -721,7 +759,11 @@
   build-depends:   base >= 4.5 && < 4.9
                  , stm ==2.4.*
                  , async ==2.0.*
-                 , network >= 2.3 && < 2.5
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   default-language: Haskell2010
 
 executable chat
@@ -731,7 +773,11 @@
                  , containers >= 0.4 && < 0.6
                  , async ==2.0.*
                  , stm ==2.4.*
-                 , network >= 2.3 && < 2.5
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   default-language: Haskell2010
 
 -- -----------------------------------------------------------------------------
@@ -741,9 +787,13 @@
   main-is: distrib-ping/ping.hs
   other-modules: DistribUtils
   build-depends:   base >= 4.5 && < 4.9
-                 , network >= 2.3 && < 2.5
                  , binary >=0.6.3 && < 0.8
                  , template-haskell >= 2.7 && < 2.11
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   if impl(ghc <= 7.6)
       -- prior to ghc-7.4 generics lived in ghc-prim
       build-depends: ghc-prim
@@ -760,9 +810,13 @@
   main-is: distrib-ping/ping-multi.hs
   other-modules: DistribUtils
   build-depends:   base >= 4.5 && < 4.9
-                 , network >= 2.3 && < 2.5
                  , binary >=0.6.3 && < 0.8
                  , template-haskell >= 2.7 && < 2.11
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   if impl(ghc <= 7.6)
       -- prior to ghc-7.4 generics lived in ghc-prim
       build-depends: ghc-prim
@@ -779,9 +833,13 @@
   main-is: distrib-ping/ping-tc.hs
   other-modules: DistribUtils
   build-depends:   base >= 4.5 && < 4.9
-                 , network >= 2.3 && < 2.5
                  , binary >=0.6.3 && < 0.8
                  , template-haskell >= 2.7 && < 2.11
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   if impl(ghc <= 7.6)
       -- prior to ghc-7.4 generics lived in ghc-prim
       build-depends: ghc-prim
@@ -798,9 +856,13 @@
   main-is: distrib-ping/ping-tc-merge.hs
   other-modules: DistribUtils
   build-depends:   base >= 4.5 && < 4.9
-                 , network >= 2.3 && < 2.5
                  , binary >=0.6.3 && < 0.8
                  , template-haskell >= 2.7 && < 2.11
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   if impl(ghc <= 7.6)
       -- prior to ghc-7.4 generics lived in ghc-prim
       build-depends: ghc-prim
@@ -818,9 +880,13 @@
   main-is: distrib-ping/ping-tc-notify.hs
   other-modules: DistribUtils
   build-depends:   base >= 4.5 && < 4.9
-                 , network >= 2.3 && < 2.5
                  , binary >=0.6.3 && < 0.8
                  , template-haskell >= 2.7 && < 2.11
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   if impl(ghc <= 7.6)
       -- prior to ghc-7.4 generics lived in ghc-prim
       build-depends: ghc-prim
@@ -836,9 +902,13 @@
 executable ping-fail
   main-is: distrib-ping/ping-fail.hs
   build-depends:   base >= 4.5 && < 4.9
-                 , network >= 2.3 && < 2.5
                  , binary >=0.6.3 && < 0.8
                  , template-haskell >= 2.7 && < 2.11
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   if impl(ghc <= 7.6)
       -- prior to ghc-7.4 generics lived in ghc-prim
       build-depends: ghc-prim
@@ -858,10 +928,14 @@
                  , containers >= 0.4 && < 0.6
                  , stm ==2.4.*
                  , async ==2.0.*
-                 , network >= 2.3 && < 2.5
                  , binary >=0.6.3 && < 0.8
                  , transformers >=0.3 && <0.5
                  , template-haskell >= 2.7 && < 2.11
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   if impl(ghc <= 7.6)
       -- prior to ghc-7.4 generics lived in ghc-prim
       build-depends: ghc-prim
@@ -881,10 +955,14 @@
                  , containers >= 0.4 && < 0.6
                  , stm ==2.4.*
                  , async ==2.0.*
-                 , network >= 2.3 && < 2.5
                  , binary >=0.6.3 && < 0.8
                  , transformers >=0.3 && <0.5
                  , template-haskell >= 2.7 && < 2.11
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   if impl(ghc <= 7.6)
       -- prior to ghc-7.4 generics lived in ghc-prim
       build-depends: ghc-prim
@@ -905,10 +983,14 @@
                  , containers >= 0.4 && < 0.6
                  , stm ==2.4.*
                  , async ==2.0.*
-                 , network >= 2.3 && < 2.5
                  , binary >=0.6.3 && < 0.8
                  , template-haskell >= 2.7 && < 2.11
                  , transformers >=0.3 && <0.5
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   if impl(ghc <= 7.6)
       -- prior to ghc-7.4 generics lived in ghc-prim
       build-depends: ghc-prim
@@ -961,9 +1043,13 @@
                  , bytestring >= 0.9 && < 0.11
                  , time >= 1.4 && < 1.6
                  , HTTP ==4000.2.*
-                 , network >= 2.3 && < 2.5
-                 , utf8-string ==0.3.*
+                 , utf8-string >= 0.3 && < 1.1
                  , xml ==1.3.*
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   default-language: Haskell2010
 
 executable  bingtranslatorconc
@@ -974,9 +1060,13 @@
                  , bytestring >= 0.9 && < 0.11
                  , time >= 1.4 && < 1.6
                  , HTTP ==4000.2.*
-                 , network >= 2.3 && < 2.5
-                 , utf8-string ==0.3.*
+                 , utf8-string >= 0.3 && < 1.1
                  , xml ==1.3.*
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   default-language: Haskell2010
 
 executable  geturlsstm
@@ -986,14 +1076,12 @@
                  , stm ==2.4.*
                  , bytestring >= 0.9 && < 0.11
                  , time >= 1.4 && < 1.6
-                 , network >= 2.3 && < 2.5
                  , HTTP ==4000.2.*
-  default-language: Haskell2010
-
-executable  Async
-  main-is: Async.hs
-  build-depends:   base >= 4.5 && < 4.9
-                 , stm ==2.4.*
+  if flag(network26)
+      build-depends: network >= 2.6 && < 2.7
+                   , network-uri >= 2.6 && < 2.7
+  else
+      build-depends: network >= 2.3 && < 2.6
   default-language: Haskell2010
 
 -- ToDo:
