diff --git a/acid-state.cabal b/acid-state.cabal
--- a/acid-state.cabal
+++ b/acid-state.cabal
@@ -7,7 +7,7 @@
 -- The package version. See the Haskell package versioning policy
 -- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for
 -- standards guiding when and how versions should be incremented.
-Version:             0.4
+Version:             0.4.1
 
 -- A short (one-line) description of the package.
 Synopsis:            Add ACID guarantees to any serializable Haskell data structure.
diff --git a/src/Data/Acid.hs b/src/Data/Acid.hs
--- a/src/Data/Acid.hs
+++ b/src/Data/Acid.hs
@@ -32,6 +32,7 @@
     , Query
     , IsAcidic
     , makeAcidic
+    , runQuery
     ) where
 
 import Data.Acid.Local
diff --git a/src/Data/Acid/Local.hs b/src/Data/Acid/Local.hs
--- a/src/Data/Acid/Local.hs
+++ b/src/Data/Acid/Local.hs
@@ -33,6 +33,7 @@
     , query
     , update'
     , query'
+    , runQuery
     ) where
 
 import Data.Acid.Log as Log
@@ -90,8 +91,7 @@
     [@Atomicity@]  State changes are all-or-nothing. This is what you'd expect of any state
                    variable in Haskell and AcidState doesn't change that.
 
-    [@Consistency@] No event or set of events will break your data invariants. This includes
-                    power outages, 
+    [@Consistency@] No event or set of events will break your data invariants.
 
     [@Isolation@] Transactions cannot interfere with each other even when issued in parallel.
 
@@ -111,6 +111,12 @@
 -- | Context monad for Query events.
 newtype Query st a  = Query { unQuery :: Reader st a }
     deriving (Monad, MonadReader st)
+
+-- | Run a query in the Update Monad.
+runQuery :: Query st a -> Update st a
+runQuery query
+    = do st <- get
+         return (runReader (unQuery query) st)
 
 -- | Issue an Update event and wait for its result. Once this call returns, you are
 --   guaranteed that the changes to the state are durable. Events may be issued in
