diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,11 @@
+0.1.1.0
+-------
+<https://github.com/mstksg/prompt/releases/tag/v0.1.1.0>
+
+*   Fixed `Alternative` and `MonadPlus` instances to behave meaningfully ---
+    that is, with "short circuiting" behavior for `t`'s that offer it.
+
+
 0.1.0.0
 -------
 <https://github.com/mstksg/prompt/releases/tag/v0.1.0.0>
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,7 +1,17 @@
 prompt
 ======
 
-Monad (and transformer) for delayed-effect "pure" prompt-and-respose queries.
+Lightweight library providing a monad/applicative (and transformer) for
+delayed-effect "pure" prompt-and-respose queries.
+
+~~~bash
+$ cabal update
+$ cabal install prompt
+~~~
+
+Now on [hackage][]!
+
+[hackage]: http://hackage.haskell.org/package/prompt
 
 Prompt
 ------
diff --git a/prompt.cabal b/prompt.cabal
--- a/prompt.cabal
+++ b/prompt.cabal
@@ -2,7 +2,7 @@
 --  see http://haskell.org/cabal/users-guide/
 
 name:                prompt
-version:             0.1.0.0
+version:             0.1.1.0
 synopsis:            Monad (and transformer) for deferred-effect pure
                      prompt-response queries
 description:         Monad (and transformer) for delayed-effect "pure"
@@ -22,8 +22,9 @@
                      and more meaningful type.
                      .
                      For more information and instructions on usage with
-                     examples, see <https://github.com/mstksg/prompt the
-                     README>.
+                     examples, see <https://github.com/mstksg/prompt the README>.
+                     .
+                     Not quite related to the /MonadPrompt/ library.
 homepage:            https://github.com/mstksg/prompt
 bug-reports:         https://github.com/mstksg/prompt/issues
 license:             MIT
diff --git a/src/Control/Monad/Prompt.hs b/src/Control/Monad/Prompt.hs
--- a/src/Control/Monad/Prompt.hs
+++ b/src/Control/Monad/Prompt.hs
@@ -61,13 +61,14 @@
   ) where
 
 import Control.Applicative
-import Control.Monad hiding (sequence, mapM)
+import Control.Monad hiding       (sequence, mapM, msum)
 import Control.Monad.Error.Class
 import Control.Monad.Prompt.Class
 import Control.Monad.Reader.Class
 import Control.Monad.State.Class
 import Control.Monad.Trans
 import Control.Monad.Writer.Class
+import Data.Foldable
 import Data.Functor.Identity
 
 #if !MIN_VERSION_base(4,8,0)
@@ -134,12 +135,17 @@
     PromptT f <*> PromptT x = PromptT $ \g -> liftM2 (<*>) (f g) (x g)
 #endif
 
-instance Alternative t => Alternative (PromptT a b t) where
+instance (Alternative t, Traversable t) => Alternative (PromptT a b t) where
     empty = PromptT $ const (return empty)
+    PromptT x <|> PromptT y = PromptT $ \g -> do
+        x' <- x g
+        let c = (return . pure <$> x') <|> pure (y g)
 #if MIN_VERSION_base(4,8,0)
-    PromptT x <|> PromptT y = PromptT $ \g -> liftA2 (<|>) (x g) (y g)
+        -- TODO: Is this okay?????
+        -- join <$> sequence c
+        asum <$> sequence c
 #else
-    PromptT x <|> PromptT y = PromptT $ \g -> liftM2 (<|>) (x g) (y g)
+        asum `liftM` sequence c
 #endif
 
 instance (Monad t, Traversable t) => Monad (PromptT a b t) where
@@ -159,7 +165,10 @@
     mplus = (<|>)
 #else
     mzero = PromptT $ const (return mzero)
-    mplus (PromptT x) (PromptT y) = PromptT $ \g -> liftM2 mplus (x g) (y g)
+    PromptT x `mplus` PromptT y = PromptT $ \g -> do
+        x' <- x g
+        let c = (return . return <$> x') `mplus` return (y g)
+        msum `liftM` sequence c
 #endif
 
 instance MonadTrans (PromptT a b) where
