diff --git a/Control/Monad/Omega.hs b/Control/Monad/Omega.hs
--- a/Control/Monad/Omega.hs
+++ b/Control/Monad/Omega.hs
@@ -31,7 +31,9 @@
 -- Warning: Omega is only a monad when the results of @runOmega@ are
 -- interpreted as a set; that is, a valid transformation according to the
 -- monad laws may change the order of the results.  However, the same
--- set of results will always be reachable. 
+-- set of results will always be reachable.  If you are using this as a monad, 
+-- I recommendIded that you use the newer weighted-search package instead 
+-- (it's also faster).
 ----------------------------------------------
 
 module Control.Monad.Omega 
@@ -79,6 +81,10 @@
 instance Applicative.Applicative Omega where
     pure = return
     (<*>) = Monad.ap
+
+instance Applicative.Alternative Omega where
+    empty = Omega []
+    Omega xs <|> Omega ys = Omega (diagonal [xs,ys])
 
 instance Foldable.Foldable Omega where
     foldMap f (Omega xs) = Foldable.foldMap f xs
diff --git a/control-monad-omega.cabal b/control-monad-omega.cabal
--- a/control-monad-omega.cabal
+++ b/control-monad-omega.cabal
@@ -2,7 +2,7 @@
 Description:
     A monad for enumerating sets: like the list
     monad but breadth-first.
-Version: 0.3
+Version: 0.3.1
 Stability: experimental
 Synopsis: A breadth-first list monad.
 License: PublicDomain
@@ -11,5 +11,5 @@
 Author: Luke Palmer
 Maintainer: lrpalmer@gmail.com
 Build-Type: Simple
-Build-Depends: base
+Build-Depends: base <= 5
 Exposed-Modules: Control.Monad.Omega
