diff --git a/Yesod/EventSource.hs b/Yesod/EventSource.hs
--- a/Yesod/EventSource.hs
+++ b/Yesod/EventSource.hs
@@ -12,7 +12,7 @@
 import Control.Monad (when)
 import Control.Monad.IO.Class (liftIO)
 import Data.Functor ((<$>))
-import Data.Monoid (mconcat)
+import Data.Monoid (mappend, mempty)
 import Yesod.Content
 import Yesod.Core
 import qualified Data.Conduit as C
@@ -22,8 +22,8 @@
 
 
 
--- | Phantom type used for 'Handler'@s@ that are @EventSources@
--- (e.g. 'repEventSource' and 'ioToRepEventSource').
+-- | Data type representing a response of server-sent events
+-- (e.g., see 'repEventSource' and 'ioToRepEventSource').
 newtype RepEventSource =
   RepEventSource (C.Source (C.ResourceT IO) (C.Flush Builder))
 
@@ -54,7 +54,7 @@
 
 
 -- | Return a Server-Sent Event stream given an @IO@ action that
--- is repeatedly called.  An state is threaded for the action so
+-- is repeatedly called.  A state is threaded for the action so
 -- that it may avoid using @IORefs@.  The @IO@ action may sleep
 -- or block while waiting for more data.  The HTTP socket is
 -- flushed after every list of simultaneous events.  The
@@ -68,18 +68,21 @@
   let -- Get new events to be sent.
       getEvents s = do
         (evs, s') <- liftIO (act polyfill s)
-        let (builder, continue) = joinEvents evs []
-        C.yield (C.Chunk builder)
-        C.yield C.Flush
-        when continue (getEvents s')
+        case evs of
+          [] -> getEvents s'
+          _  -> do
+            let (builder, continue) = joinEvents evs mempty
+            C.yield (C.Chunk builder)
+            C.yield C.Flush
+            when continue (getEvents s')
 
       -- Join all events in a single Builder.  Returns @False@
       -- when we the connection should be closed.
       joinEvents (ev:evs) acc =
         case ES.eventToBuilder ev of
-          Just b  -> joinEvents evs (b:acc)
+          Just b  -> joinEvents evs (acc `mappend` b)
           Nothing -> (fst $ joinEvents [] acc, False)
-      joinEvents [] acc = (mconcat (reverse acc), True)
+      joinEvents [] acc = (acc, True)
 
   return $ RepEventSource $ getEvents initial
 
diff --git a/yesod-eventsource.cabal b/yesod-eventsource.cabal
--- a/yesod-eventsource.cabal
+++ b/yesod-eventsource.cabal
@@ -1,5 +1,5 @@
 name:            yesod-eventsource
-version:         1.0
+version:         1.0.0.1
 license:         MIT
 license-file:    LICENSE
 author:          Felipe Lessa <felipe.lessa@gmail.com>
@@ -21,7 +21,7 @@
   This package allows your Yesod application to easily send
   server-sent events.  On the client side, you may use the
   @EventSource@ JavaScript object on browsers that support it
-  (https://developer.mozilla.org/en-US/docs/Server-sent_events/EventSource)
+  (<https://developer.mozilla.org/en-US/docs/Server-sent_events/EventSource>)
   or a polyfill for browsers that don't (we support Remy's
   polyfill out-of-the-box, although that requires you to
   explicitly support it).
