diff --git a/example/Example.hs b/example/Example.hs
--- a/example/Example.hs
+++ b/example/Example.hs
@@ -17,30 +17,23 @@
   1) a MultiState containing a Char and a [Char],
   2) the polymorphic mGet,
   3) how to initially put values into the MultiState using withMultiState,
-  4) the type inference at work - note that we omitted all type signatures.
+  4) the type inference at work - note that there was no need to annotate
+     combinedPrint
 -}
 
---examplePrint :: MultiStateT (Cons [Char] (Cons Char Null)) IO ()
--- or more general:
---examplePrint :: ( MonadMultiState [Char] m
---                , MonadMultiState Char m
---                , m~MultiStateT x IO)
---             => m ()
-simpleExamplePrint = do
-  c  <- mGet
-  cs <- mGet
-  lift $ putStrLn (c:cs)
-
-simpleExampleAction = do
-  simpleExamplePrint
+simpleExample :: IO ()
+simpleExample = evalMultiStateT
+              $ withMultiState 'H'
+              $ withMultiState "ello, World!"
+              $ do
+  -- the monad here is MultiStateT (Cons [Char] (Cons Char Null)) IO
+  let combinedPrint = do
+        c  <- mGet
+        cs <- mGet
+        lift $ putStrLn (c:cs)
+  combinedPrint
   mSet 'J'
-  simpleExamplePrint
-
-simpleExample = do
-  evalMultiStateT
-    $ withMultiState 'H'
-    $ withMultiState "ello, World!"
-    $ simpleExampleAction
+  combinedPrint
 
 -- output:
 --  "Hello, World!
diff --git a/multistate.cabal b/multistate.cabal
--- a/multistate.cabal
+++ b/multistate.cabal
@@ -1,5 +1,5 @@
 Name:          multistate
-Version:       0.1.3.1
+Version:       0.1.3.2
 Cabal-Version: >= 1.8
 Build-Type:    Simple
 license:       BSD3
@@ -29,22 +29,21 @@
   .
   == Example
   .
-  >              -- an IO action wrapped by a MultiState
-  >              -- containing both a Char and a [Char].
-  > examplePrint :: MultiStateT (Cons [Char] (Cons Char Null)) IO ()
-  > examplePrint = do
-  >   c  <- mGet             -- inferred to be :: m Char
-  >   cs <- mGet             -- inferred to be :: m [Char]
-  >   lift $ putStrLn (c:cs)
-  .
-  This computation can be executed in the following way:
-  .
-  > main = evalMultiStateT
-  >      $ withMultiState 'H'
-  >      $ withMultiState "ello, World!"
-  >      $ examplePrint
+  > simpleExample :: IO ()
+  > simpleExample = evalMultiStateT
+  >               $ withMultiState 'H'
+  >               $ withMultiState "ello, World!"
+  >               $ do
+  >   -- the monad here is MultiStateT (Cons [Char] (Cons Char Null)) IO
+  >   let combinedPrint = do       -- no type signature necessary
+  >         c  <- mGet             -- type of mGet inferred to be m Char
+  >         cs <- mGet             --              inferred to be m [Char]
+  >         lift $ putStrLn (c:cs)
+  >   combinedPrint
+  >   mSet 'J'                     -- similarly for the setter
+  >   combinedPrint
   .
-  the output is:
+  The output is:
   .
   > Hello, World!
   > Jello, World!
