diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,9 @@
+shell-monad (0.3.1) unstable; urgency=medium
+
+  * Fixed linear rendering of caseOf
+
+ -- Joey Hess <id@joeyh.name>  Fri, 26 Dec 2014 23:49:38 -0400
+
 shell-monad (0.3.0) unstable; urgency=medium
 
   * Renamed a few operators.
diff --git a/Control/Monad/Shell.hs b/Control/Monad/Shell.hs
--- a/Control/Monad/Shell.hs
+++ b/Control/Monad/Shell.hs
@@ -681,14 +681,14 @@
 	-- > case "$foo" in ook) : 
 	-- >     echo got ook
 	-- >     echo yay
-	-- > ;; *) :
+	-- > : ;; *) :
 	-- >     echo default
-	-- > ;; esac
+	-- > : ;; esac
 	go _ [] = add $ Cmd $ ";; esac"
 	go atstart ((t, s):rest) = do
 		let leader = if atstart
 			then "case " <> toTextParam v undefined <> " in "
-			else ";; "
+			else ": ;; "
 		add $ Cmd $ leader <> getQ t <> ") :"
 		mapM_ (add . indent) =<< runM s
 		go False rest
diff --git a/examples/protocol.hs b/examples/protocol.hs
--- a/examples/protocol.hs
+++ b/examples/protocol.hs
@@ -86,7 +86,7 @@
 handleBar = toStderr $ cmd "echo" "yay, I got a Bar"
 
 handleBaz :: Var -> Script ()
-handleBaz num = forCmd (cmd "seq" "1" num) $
+handleBaz num = forCmd (cmd "seq" (Val (1 :: Int)) num) $
 	toStderr . cmd "echo" "yay, I got a Baz"
 
 getProtoCommand :: Var -> Script Var
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.3.0
+Version: 0.3.1
 Cabal-Version: >= 1.8
 License: BSD3
 Maintainer: Joey Hess <id@joeyh.name>
