diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,24 +1,22 @@
-Copyright (c) 2015 Omari Norman.
+Copyright (c) 2016 Omari Norman
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
 met:
 
-    * Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
 
-    * Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in
-    the documentation and/or other materials provided with the
-    distribution.
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
 
-    * Neither the name of Omari Norman nor the names of contributors
-    to this software may be used to endorse or promote products
-    derived from this software without specific prior written
-    permission.
+3. Neither the name of the copyright holder nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
 
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -86,3 +86,17 @@
 Also, look at this discussion on the Pipes mailing list:
 
 https://groups.google.com/d/msg/haskell-pipes/JFfyquj5HAg/Lxz7p50JOh4J
+
+## License
+
+This package is released under the BSD3 license. Please see the LICENSE file.
+
+## Building this project
+
+The Cabal file for this project is generated using the Cartel package.
+To generate the Cabal file, simply run `sh buildprep`.
+You must run this command from the project's main directory.
+You will need to have the `stack` program installed.
+
+Stack is available at:
+http://www.haskellstack.org
diff --git a/lib/Pipes/Cliff/Core.hs b/lib/Pipes/Cliff/Core.hs
--- a/lib/Pipes/Cliff/Core.hs
+++ b/lib/Pipes/Cliff/Core.hs
@@ -30,6 +30,7 @@
 import qualified Control.Exception
 import Control.Monad
 import Control.Concurrent.STM
+import qualified System.Posix as Px
 
 -- * Data types
 
@@ -184,6 +185,25 @@
   -- ^ See 'System.Process.delegate_ctlc' in the "System.Process"
   -- module for details.
 
+  , detach_console :: Bool
+  -- ^ Use the windows DETACHED_PROCESS flag when creating the
+  -- process; does nothing on other platforms.
+
+  , create_new_console :: Bool
+  -- ^ Use the windows CREATE_NEW_CONSOLE flag when creating the
+  -- process; does nothing on other platforms.
+
+  , new_session :: Bool
+  -- ^ Use posix setsid to start the new process in a new session;
+  -- does nothing on other platforms.
+
+  , child_group :: Maybe Px.GroupID
+  -- ^ Use posix setgid to set child process's group id; does nothing
+  -- on other platforms.
+
+  , child_user :: Maybe Px.UserID
+  -- ^Use posix setuid to set child process's user id; does nothing on other platforms. 
+
   , handler :: Oopsie -> IO ()
   -- ^ Whenever an IO exception arises during the course of various
   -- IO actions, the exception is caught and placed into an 'Oopsie'
@@ -239,8 +259,11 @@
 --
 -- * no new process group is created
 --
--- * 'delegate_ctlc' is 'False'
+-- * 'delegate_ctlc', 'detach_console', 'create_new_console', and
+-- 'new_session' are all 'False'
 --
+-- * 'child_group' and 'child_user' are both 'Nothing'
+--
 -- * 'handler' is 'defaultHandler'
 
 procSpec
@@ -256,6 +279,11 @@
   , close_fds = False
   , create_group = False
   , delegate_ctlc = False
+  , detach_console = False
+  , create_new_console = False
+  , new_session = False
+  , child_group = Nothing
+  , child_user = Nothing
   , handler = defaultHandler
   }
 
@@ -275,6 +303,11 @@
   , Process.close_fds = close_fds a
   , Process.create_group = create_group a
   , Process.delegate_ctlc = delegate_ctlc a
+  , Process.detach_console = detach_console a
+  , Process.create_new_console = create_new_console a
+  , Process.new_session = new_session a
+  , Process.child_group = child_group a
+  , Process.child_user = child_user a
   }
   where
     conv = convertNonPipe
@@ -629,7 +662,7 @@
 -- effect, the IO action creating the 'ProcessHandle' is viewed, meaning that
 -- the process will launch if it hasn't already done so.
 initHandle
-  :: (MonadSafe mi, MonadCatch (Base mi))
+  :: MonadSafe mi
   => HandleDesc
   -- ^ Used for error messages
   -> (Console -> Handle)
@@ -743,7 +776,7 @@
 -- if the 'Proxy' has shut down.  Let the thread terminate through
 -- mailbox closure or a broken pipe.
 runInputHandle
-  :: (MonadSafe mi, MonadCatch (Base mi))
+  :: MonadSafe mi
   => ProcessHandle
   -- ^
   -> Consumer ByteString mi ExitCode
@@ -762,7 +795,7 @@
 -- input.  Sets up a mailbox, runs a conveyor in the background.  Then
 -- receives streaming data, and then gets the process exit code.
 runOutputHandle
-  :: (MonadSafe mi, MonadCatch (Base mi))
+  :: MonadSafe mi
   => Outbound
   -- ^
   -> ProcessHandle
@@ -783,7 +816,7 @@
 
 -- | Create a 'Consumer' for standard input.
 pipeInput
-  :: (MonadSafe mi, MonadCatch (Base mi))
+  :: MonadSafe mi
 
   => NonPipe
   -- ^ Standard output
@@ -803,7 +836,7 @@
 
 -- | Create a 'Producer' for standard output.
 pipeOutput
-  :: (MonadSafe mo, MonadCatch (Base mo))
+  :: MonadSafe mo
 
   => NonPipe
   -- ^ Standard input
@@ -823,7 +856,7 @@
 
 -- | Create a 'Producer' for standard error.
 pipeError
-  :: (MonadSafe me, MonadCatch (Base me))
+  :: MonadSafe me
 
   => NonPipe
   -- ^ Standard input
@@ -844,8 +877,7 @@
 -- | Create a 'Consumer' for standard input and a 'Producer' for
 -- standard output.
 pipeInputOutput
-  :: ( MonadSafe mi, MonadCatch (Base mi),
-       MonadSafe mo, MonadCatch (Base mo))
+  :: (MonadSafe mi, MonadSafe mo)
 
   => NonPipe
   -- ^ Standard error
@@ -867,8 +899,7 @@
 -- | Create a 'Consumer' for standard input and a 'Producer' for
 -- standard error.
 pipeInputError
-  :: ( MonadSafe mi, MonadCatch (Base mi),
-       MonadSafe me, MonadCatch (Base me))
+  :: (MonadSafe mi, MonadSafe me)
 
   => NonPipe
 
@@ -890,8 +921,7 @@
 -- | Create a 'Producer' for standard output and a 'Producer' for
 -- standard error.
 pipeOutputError
-  :: ( MonadSafe mo, MonadCatch (Base mo),
-       MonadSafe me, MonadCatch (Base me))
+  :: (MonadSafe mo, MonadSafe me)
 
   => NonPipe
   -- ^ Standard input
@@ -914,9 +944,7 @@
 -- | Create a 'Consumer' for standard input, a 'Producer' for standard
 -- output, and a 'Producer' for standard error.
 pipeInputOutputError
-  :: ( MonadSafe mi, MonadCatch (Base mi),
-       MonadSafe mo, MonadCatch (Base mo),
-       MonadSafe me, MonadCatch (Base me))
+  :: (MonadSafe mi, MonadSafe mo, MonadSafe me)
 
   => CreateProcess
 
diff --git a/pipes-cliff.cabal b/pipes-cliff.cabal
--- a/pipes-cliff.cabal
+++ b/pipes-cliff.cabal
@@ -2,17 +2,17 @@
 -- Cartel is available at:
 -- http://www.github.com/massysett/cartel
 --
--- Script name used to generate: genCabal.hs
--- Generated on: 2015-07-14 20:18:44.347886 EDT
--- Cartel library version: 0.14.2.6
+-- Script name used to generate: gen-pipes-cliff-cabal
+-- Generated on: 2016-07-16 15:33:25.493728 EDT
+-- Cartel library version: 0.16.0.0
 
 name: pipes-cliff
-version: 0.10.0.4
-cabal-version: >= 1.18
+version: 0.12.0.0
+cabal-version: >= 1.10
 license: BSD3
 license-file: LICENSE
 build-type: Simple
-copyright: Copyright 2015 Omari Norman
+copyright: Copyright (c) 2015-2016 Omari Norman
 author: Omari Norman
 maintainer: omari@smileystation.com
 stability: Experimental
@@ -37,29 +37,28 @@
   .
   <https://github.com/massysett/pipes-cliff>
 category: Pipes, Concurrency
-tested-with:
-  GHC == 7.10.1
 extra-source-files:
   README.md
 
 Library
-  exposed-modules:
-    Pipes.Cliff
-    Pipes.Cliff.Core
-    Pipes.Cliff.Examples
-  hs-source-dirs:
-    lib
   build-depends:
-      base >= 4.7.0.0 && < 5
+      base >= 4.9 && < 5
     , pipes >= 4.1
     , pipes-safe >= 2.2
     , bytestring >= 0.10.4
     , process >= 1.2.0.0
     , async >= 2.0
     , stm >= 2.4.4
-  default-language: Haskell2010
+    , unix >= 2.7.2
+  exposed-modules:
+    Pipes.Cliff
+    Pipes.Cliff.Core
+    Pipes.Cliff.Examples
   ghc-options:
     -Wall
+  default-language: Haskell2010
+  hs-source-dirs:
+    lib
 
 source-repository head
   type: git
@@ -69,24 +68,27 @@
   main-is: numsToLess.hs
   if flag(tests)
     buildable: True
-    default-language: Haskell2010
     ghc-options:
       -Wall
+    default-language: Haskell2010
     hs-source-dirs:
       lib
+    hs-source-dirs:
+      lib
       tests
     other-modules:
       Pipes.Cliff
       Pipes.Cliff.Core
       Pipes.Cliff.Examples
     build-depends:
-        base >= 4.7.0.0 && < 5
+        base >= 4.9 && < 5
       , pipes >= 4.1
       , pipes-safe >= 2.2
       , bytestring >= 0.10.4
       , process >= 1.2.0.0
       , async >= 2.0
       , stm >= 2.4.4
+      , unix >= 2.7.2
     ghc-options:
       -threaded
   else
@@ -96,24 +98,27 @@
   main-is: alphaNumbers.hs
   if flag(tests)
     buildable: True
-    default-language: Haskell2010
     ghc-options:
       -Wall
+    default-language: Haskell2010
     hs-source-dirs:
       lib
+    hs-source-dirs:
+      lib
       tests
     other-modules:
       Pipes.Cliff
       Pipes.Cliff.Core
       Pipes.Cliff.Examples
     build-depends:
-        base >= 4.7.0.0 && < 5
+        base >= 4.9 && < 5
       , pipes >= 4.1
       , pipes-safe >= 2.2
       , bytestring >= 0.10.4
       , process >= 1.2.0.0
       , async >= 2.0
       , stm >= 2.4.4
+      , unix >= 2.7.2
     ghc-options:
       -threaded
   else
@@ -123,24 +128,27 @@
   main-is: limitedAlphaNumbers.hs
   if flag(tests)
     buildable: True
-    default-language: Haskell2010
     ghc-options:
       -Wall
+    default-language: Haskell2010
     hs-source-dirs:
       lib
+    hs-source-dirs:
+      lib
       tests
     other-modules:
       Pipes.Cliff
       Pipes.Cliff.Core
       Pipes.Cliff.Examples
     build-depends:
-        base >= 4.7.0.0 && < 5
+        base >= 4.9 && < 5
       , pipes >= 4.1
       , pipes-safe >= 2.2
       , bytestring >= 0.10.4
       , process >= 1.2.0.0
       , async >= 2.0
       , stm >= 2.4.4
+      , unix >= 2.7.2
     ghc-options:
       -threaded
   else
@@ -150,24 +158,27 @@
   main-is: alphaNumbersByteString.hs
   if flag(tests)
     buildable: True
-    default-language: Haskell2010
     ghc-options:
       -Wall
+    default-language: Haskell2010
     hs-source-dirs:
       lib
+    hs-source-dirs:
+      lib
       tests
     other-modules:
       Pipes.Cliff
       Pipes.Cliff.Core
       Pipes.Cliff.Examples
     build-depends:
-        base >= 4.7.0.0 && < 5
+        base >= 4.9 && < 5
       , pipes >= 4.1
       , pipes-safe >= 2.2
       , bytestring >= 0.10.4
       , process >= 1.2.0.0
       , async >= 2.0
       , stm >= 2.4.4
+      , unix >= 2.7.2
     ghc-options:
       -threaded
   else
@@ -177,24 +188,27 @@
   main-is: standardOutputAndError.hs
   if flag(tests)
     buildable: True
-    default-language: Haskell2010
     ghc-options:
       -Wall
+    default-language: Haskell2010
     hs-source-dirs:
       lib
+    hs-source-dirs:
+      lib
       tests
     other-modules:
       Pipes.Cliff
       Pipes.Cliff.Core
       Pipes.Cliff.Examples
     build-depends:
-        base >= 4.7.0.0 && < 5
+        base >= 4.9 && < 5
       , pipes >= 4.1
       , pipes-safe >= 2.2
       , bytestring >= 0.10.4
       , process >= 1.2.0.0
       , async >= 2.0
       , stm >= 2.4.4
+      , unix >= 2.7.2
     ghc-options:
       -threaded
   else
