diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,11 @@
+shell-monad (0.6.9) unstable; urgency=medium
+
+  * Prepare for monad of no return, by removing redundant return
+    implementation for Script.
+  * Drop compatability code for ghc older than 8.4.1.
+
+ -- Joey Hess <id@joeyh.name>  Wed, 26 Feb 2020 11:10:55 -0400
+
 shell-monad (0.6.8) unstable; urgency=medium
 
   * Added withEnv, subshell and group.
diff --git a/Control/Monad/Shell.hs b/Control/Monad/Shell.hs
--- a/Control/Monad/Shell.hs
+++ b/Control/Monad/Shell.hs
@@ -117,12 +117,9 @@
 
 import qualified Data.Text.Lazy as L
 import qualified Data.Set as S
-import Data.Semigroup
 import Data.Char
 import System.Posix.Types (Fd)
 import System.Posix.IO (stdInput, stdOutput, stdError)
-import Control.Applicative
-import Prelude
 
 import Control.Monad.Shell.Quote
 
@@ -253,7 +250,6 @@
 		in  (expr1 <> expr2, env2, f' a')
 
 instance Monad Script where
-	return ret = Script $ \env -> ([], env, ret)
 	a >>= b = Script $ \start -> let
 		(left, mid, v) = call a start
 		(right, end, ret) = call (b v) mid
@@ -274,8 +270,6 @@
 
 instance Monoid Env where
 	mempty = Env mempty mempty
-	-- this is redundant starting with base-4.11 / GHC 8.4:
-	mappend a b = Env (envVars a <> envVars b) (envFuncs a <> envFuncs b)
 
 getEnv :: Script Env
 getEnv = Script $ \env -> ([], env, env)
diff --git a/Control/Monad/Shell/Quote.hs b/Control/Monad/Shell/Quote.hs
--- a/Control/Monad/Shell/Quote.hs
+++ b/Control/Monad/Shell/Quote.hs
@@ -1,6 +1,5 @@
 -- | Shell quoting
 
-{-# LANGUAGE CPP #-}
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
@@ -13,9 +12,6 @@
 
 import qualified Data.Text.Lazy as L
 import Data.String
-#if !(MIN_VERSION_base(4,11,0))
-import Data.Semigroup
-#endif
 import Data.Char
 
 -- | A value that is safely quoted so that it can be exposed to the shell.
diff --git a/shell-monad.cabal b/shell-monad.cabal
--- a/shell-monad.cabal
+++ b/shell-monad.cabal
@@ -1,5 +1,5 @@
 Name: shell-monad
-Version: 0.6.8
+Version: 0.6.9
 Cabal-Version: >= 1.8
 License: BSD3
 Maintainer: Joey Hess <id@joeyh.name>
@@ -25,9 +25,7 @@
   Exposed-Modules:
     Control.Monad.Shell
     Control.Monad.Shell.Quote
-  Build-Depends: base (>= 4.5), base < 5, containers, text, unix
-  if !impl(ghc >= 8.0)
-    Build-Depends: semigroups == 0.18.*
+  Build-Depends: base (>= 4.11 && < 5), containers, text, unix
 
 source-repository head
   type: git
