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.3.1
+Version:             0.3.2
 
 -- A short (one-line) description of the package.
 Synopsis:            Add ACID guarantees to any serializable Haskell data structure.
diff --git a/src/Data/Acid/Core.hs b/src/Data/Acid/Core.hs
--- a/src/Data/Acid/Core.hs
+++ b/src/Data/Acid/Core.hs
@@ -60,7 +60,9 @@
 --   methods. No efforts towards durability, checkpointing or
 --   sharding happens at this level.
 --   Important things to keep in mind in this module:
+--
 --     * We don't distinguish between updates and queries.
+--
 --     * We allow direct access to the core state as well
 --       as through events.
 data Core st
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
@@ -108,12 +108,14 @@
 update :: UpdateEvent event => AcidState (EventState event) -> event -> IO (EventResult event)
 update acidState event
     = do mvar <- newEmptyMVar
-         modifyCoreState_ (localCore acidState) $ \st ->
-           do let (result, st') = State.runState hotMethod st
-              -- Schedule the log entry. Very important that it happens when 'localCore' is locked
-              -- to ensure that events are logged in the same order that they are executed.
-              pushEntry (localEvents acidState) (methodTag event, encode event) $ putMVar mvar result
-              return st'
+         let encodedEvent = encode event
+         Lazy.length encodedEvent `seq`
+           modifyCoreState_ (localCore acidState) $ \st ->
+             do let !(result, st') = State.runState hotMethod st
+                -- Schedule the log entry. Very important that it happens when 'localCore' is locked
+                -- to ensure that events are logged in the same order that they are executed.
+                pushEntry (localEvents acidState) (methodTag event, encodedEvent) $ putMVar mvar result
+                return st'
          takeMVar mvar
     where hotMethod = lookupHotMethod (localCore acidState) event
 
