diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,12 @@
 Brick changelog
 ---------------
 
+0.3.1
+-----
+
+Bug fixes:
+* EventM newtype again instances MonadIO (thanks Andrew Rademacher)
+
 0.3
 ---
 
diff --git a/brick.cabal b/brick.cabal
--- a/brick.cabal
+++ b/brick.cabal
@@ -1,5 +1,5 @@
 name:                brick
-version:             0.3
+version:             0.3.1
 synopsis:            A declarative terminal user interface library
 description:
   Write terminal applications painlessly with 'brick'! You write an
diff --git a/src/Brick/Types.hs b/src/Brick/Types.hs
--- a/src/Brick/Types.hs
+++ b/src/Brick/Types.hs
@@ -76,6 +76,7 @@
 import Data.Default (Default(..))
 import Data.Functor.Contravariant
 import qualified Data.Map as M
+import Control.Monad.IO.Class
 
 import Brick.Types.TH
 import Brick.Types.Internal
@@ -116,7 +117,7 @@
 newtype EventM a =
     EventM { runEventM :: ReaderT (M.Map Name Viewport) (StateT EventState IO) a
            }
-           deriving (Functor, Applicative, Monad)
+           deriving (Functor, Applicative, Monad, MonadIO)
 
 -- | Widget growth policies. These policies communicate to layout
 -- algorithms how a widget uses space when being rendered. These
