diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -83,3 +83,4 @@
 * [Doug Beardsley](https://github.com/mightybyte)
 * [Leonid Onokhov](https://github.com/sopvop)
 * [Alexander Vershilov](https://github.com/qnikst)
+* [Chris Martin](https://github.com/chris-martin)
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+0.4.0.0
+=======
+* Drop unsafe _ioLogEnv for safe ioLogEnv
+
 0.3.1.5
 =======
 * Add Semigroup instance for LogStr.
diff --git a/examples/example.hs b/examples/example.hs
--- a/examples/example.hs
+++ b/examples/example.hs
@@ -25,7 +25,7 @@
 
 
 -- | An example of advanced katip usage. Be sure to check out
--- lens_example for a slightly cleaner and more general pattern.
+-- example_lens.hs for a slightly cleaner and more general pattern.
 main :: IO ()
 main = do
   le <- initLogEnv "MyApp" "production"
diff --git a/examples/example_lens.hs b/examples/example_lens.hs
--- a/examples/example_lens.hs
+++ b/examples/example_lens.hs
@@ -40,8 +40,7 @@
 
 
 -------------------------------------------------------------------------------
--- | An example of advanced katip usage. Be sure to check out
--- lens_example for a slightly cleaner and more general pattern.
+-- | An example of advanced katip usage with Lens.
 main :: IO ()
 main = do
   le <- initLogEnv "MyApp" "production"
diff --git a/katip.cabal b/katip.cabal
--- a/katip.cabal
+++ b/katip.cabal
@@ -1,5 +1,5 @@
 name:                katip
-version:             0.3.1.5
+version:             0.4.0.0
 synopsis:            A structured logging framework.
 description:
   Katip is a structured logging framework. See README.md for more details.
diff --git a/src/Katip/Core.hs b/src/Katip/Core.hs
--- a/src/Katip/Core.hs
+++ b/src/Katip/Core.hs
@@ -169,7 +169,7 @@
 
 
 -------------------------------------------------------------------------------
--- | Log message with Builder unerneath; use '<>' to concat in O(1).
+-- | Log message with Builder underneath; use '<>' to concat in O(1).
 newtype LogStr = LogStr { unLogStr :: B.Builder }
     deriving (Generic, Show)
 
@@ -193,7 +193,7 @@
 
 -------------------------------------------------------------------------------
 -- | Pack any string-like thing into a 'LogStr'. This will
--- automatically work on 'String', 'ByteString, 'Text' and any of the
+-- automatically work on 'String', 'ByteString', 'Text' and any of the
 -- lazy variants.
 logStr :: StringConv a Text => a -> LogStr
 logStr t = LogStr (B.fromText $ toS t)
diff --git a/src/Katip/Scribes/Handle.hs b/src/Katip/Scribes/Handle.hs
--- a/src/Katip/Scribes/Handle.hs
+++ b/src/Katip/Scribes/Handle.hs
@@ -13,7 +13,6 @@
 import           Data.Text.Lazy.Builder
 import           Data.Text.Lazy.IO as T
 import           System.IO
-import           System.IO.Unsafe (unsafePerformIO)
 import qualified Control.Concurrent.Chan.Unagi.Bounded as U
 import           Control.Concurrent.Async
 -------------------------------------------------------------------------------
@@ -122,17 +121,12 @@
 
 
 -------------------------------------------------------------------------------
--- | An implicit environment to enable logging directly ouf of the IO monad.
--- Be careful as this LogEnv won't perform any resource cleanup for you.
-_ioLogEnv :: LogEnv
-_ioLogEnv = unsafePerformIO $ do
-    le <- initLogEnv "io" "io"
-    (lh, _) <- mkHandleScribe ColorIfTerminal stdout DebugS V3
-    return $ registerScribe "stdout" lh le
-{-# NOINLINE _ioLogEnv #-}
-
-
--- -------------------------------------------------------------------------------
--- -- | A default IO instance to make prototype development easy. User
--- -- your own 'Monad' for production.
--- instance Katip IO where getLogEnv = return _ioLogEnv
+-- | Provides a simple log environment with 1 scribe going to
+-- stdout. This is a decent example of how to build a LogEnv and is
+-- best for scripts that just need a quick, reasonable set up to log
+-- to stdout.
+ioLogEnv :: Severity -> Verbosity -> IO LogEnv
+ioLogEnv sev verb = do
+  le <- initLogEnv "io" "io"
+  (lh, _) <- mkHandleScribe ColorIfTerminal stdout sev verb
+  return $ registerScribe "stdout" lh le
