diff --git a/logict-state.cabal b/logict-state.cabal
--- a/logict-state.cabal
+++ b/logict-state.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                logict-state
-version:             0.1.0.5
+version:             0.1.1.0
 synopsis:            Library for logic programming based on haskell package logict
 description:         Logic programming built on top of part of logict library, in particular for dealing with backtrackable state
 homepage:            https://github.com/atzedijkstra/logict-state
@@ -29,6 +29,6 @@
   build-depends:       base >=4.8 && < 5,
                        mtl >= 2.1,
                        transformers >= 0.4.2,
-                       logict >= 0.6.0.2
+                       logict >= 0.8.0.0
   hs-source-dirs:      src
   default-language:    Haskell2010
diff --git a/src/Control/Monad/LogicState.hs b/src/Control/Monad/LogicState.hs
--- a/src/Control/Monad/LogicState.hs
+++ b/src/Control/Monad/LogicState.hs
@@ -83,6 +83,8 @@
 instance Monad (LogicStateT gs bs m) where
     return a = LogicStateT ($ a)
     m >>= f = LogicStateT $ \sk -> unLogicStateT m (\a -> unLogicStateT (f a) sk)
+
+instance MonadFail (LogicStateT gs bs m) where
     fail _ = LogicStateT $ flip const
 
 instance Alternative (LogicStateT gs bs f) where
@@ -114,6 +116,8 @@
          (return Nothing)
 
 instance TransLogicState (gs,bs) (LogicStateT gs bs) where
+  -- observe s lt = runIdentity $ evalStateT (unLogicStateT lt (\a _ -> return a) (error "No answer.")) s
+
   observeT s lt = evalStateT (unLogicStateT lt (\a _ -> return a) (fail "No answer.")) s
     
   observeStateAllT s m = runStateT (unLogicStateT m
diff --git a/src/Control/Monad/LogicState/Logic.hs b/src/Control/Monad/LogicState/Logic.hs
--- a/src/Control/Monad/LogicState/Logic.hs
+++ b/src/Control/Monad/LogicState/Logic.hs
@@ -9,6 +9,7 @@
 
 import           Control.Monad.Logic hiding (observeT, observeAllT, observeManyT, observe, observeAll, observeMany)
 import qualified Control.Monad.Logic as CML
+import           Control.Monad.Trans.Class (lift)
 
 import           Control.Monad.TransLogicState.Class
 
diff --git a/src/Control/Monad/TransLogicState/Class.hs b/src/Control/Monad/TransLogicState/Class.hs
--- a/src/Control/Monad/TransLogicState/Class.hs
+++ b/src/Control/Monad/TransLogicState/Class.hs
@@ -13,14 +13,14 @@
 
 import Control.Arrow
 import Control.Monad.Identity
--- import Control.Monad.Trans
+import Control.Monad.Trans
 
 -- | Additions to MonadTrans specifically useful for LogicState
-class {- MonadTrans t => -} TransLogicState s t where
+class MonadTrans t => TransLogicState s t where
   -------------------------------------------------------------------------
   -- | Extracts the first result from a 't m' computation,
   -- failing otherwise.
-  observeT :: (Monad m) => s -> t m a -> m a
+  observeT :: (MonadFail m) => s -> t m a -> m a
   observeT e m = fmap head $ observeManyT e 1 m
   
   -------------------------------------------------------------------------
@@ -48,8 +48,8 @@
 
 -------------------------------------------------------------------------
 -- | Extracts the first result from a LogicVar computation.
-observe :: (TransLogicState s t) => s -> t Identity a -> a
-observe e = runIdentity . observeT e
+observe :: (TransLogicState s t) => s -> t Maybe a -> Maybe a
+observe e = observeT e
 
 -------------------------------------------------------------------------
 -- | Extracts all results from a LogicVar computation.
