diff --git a/graflog.cabal b/graflog.cabal
--- a/graflog.cabal
+++ b/graflog.cabal
@@ -1,5 +1,5 @@
 name:                graflog
-version:             0.1.2
+version:             1.0.0
 synopsis:            Monadic correlated log events
 description:         Please see README.md
 homepage:            https://github.com/m-arnold/graflog#readme
@@ -22,7 +22,7 @@
                      , aeson
                      , bytestring
   default-language:    Haskell2010
-  default-extensions:  GeneralizedNewtypeDeriving
+  default-extensions:  GeneralizedNewtypeDeriving DeriveFunctor
 
 test-suite graflog-test
   type:                exitcode-stdio-1.0
diff --git a/src/Graflog/Logger.hs b/src/Graflog/Logger.hs
--- a/src/Graflog/Logger.hs
+++ b/src/Graflog/Logger.hs
@@ -7,11 +7,12 @@
   , CorrelationId(..)
   , EventId(..)
   , Action(..)
+  , Protected(..)
   , logEvent'
   , jsonEncode
   ) where
 
-import Data.Aeson (ToJSON, FromJSON, encode)
+import Data.Aeson (ToJSON, FromJSON, encode, Value)
 import Data.Aeson.TH (deriveJSON, defaultOptions, fieldLabelModifier)
 import Data.ByteString (ByteString)
 import Data.ByteString.Lazy (toStrict)
@@ -22,6 +23,9 @@
 
 import Graflog.Console
 
+newtype Protected a = Protected { unProtect :: a }
+  deriving (Functor, Show, Eq)
+
 class Monad m => Logger m where
   logEvent :: Event -> m ()
 
@@ -38,7 +42,7 @@
   { _correlationId :: CorrelationId
   , _eventId :: EventId
   , _action :: Action
-  , _message :: Text
+  , _message :: Value
   } deriving (Eq, Show)
 
 deriveJSON defaultOptions{fieldLabelModifier = drop 1} ''Event
