diff --git a/persistent-migration.cabal b/persistent-migration.cabal
--- a/persistent-migration.cabal
+++ b/persistent-migration.cabal
@@ -1,5 +1,5 @@
 name:                persistent-migration
-version:             0.0.1
+version:             0.0.2
 license:             BSD3
 license-file:        LICENSE.md
 author:              Brandon Chinn <brandonchinn178@gmail.com>
@@ -15,6 +15,11 @@
   type: git
   location: https://github.com/brandonchinn178/persistent-migration.git
 
+flag dev
+  description:        Turn on development settings.
+  manual:             True
+  default:            False
+
 library
   hs-source-dirs:     src
   default-language:   Haskell2010
@@ -32,10 +37,17 @@
                     , text
                     , time
                     , unordered-containers
-  ghc-options:
-    -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates -Wcompat
-    -Wredundant-constraints -Wnoncanonical-monad-instances
+  ghc-options: -Wall
+  if flag(dev)
+    ghc-options:      -Werror
+  if flag(dev) && impl(ghc >= 8.0)
+    ghc-options:      -Wcompat
+                      -Wincomplete-record-updates
+                      -Wincomplete-uni-patterns
+                      -Wnoncanonical-monad-instances
+                      -Wnoncanonical-monadfail-instances
 
+
 test-suite persistent-migration-test
   type:               exitcode-stdio-1.0
   hs-source-dirs:     test
@@ -58,9 +70,15 @@
                , tasty-golden
                , tasty-quickcheck
                , text
-  ghc-options:
-    -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates -Wcompat
-    -Wredundant-constraints -Wnoncanonical-monad-instances
+  ghc-options: -Wall
+  if flag(dev)
+    ghc-options:      -Werror
+  if flag(dev) && impl(ghc >= 8.0)
+    ghc-options:      -Wcompat
+                      -Wincomplete-record-updates
+                      -Wincomplete-uni-patterns
+                      -Wnoncanonical-monad-instances
+                      -Wnoncanonical-monadfail-instances
 
 test-suite persistent-migration-integration
   type:               exitcode-stdio-1.0
@@ -91,6 +109,12 @@
                , temporary
                , text
                , yaml
-  ghc-options:
-    -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates -Wcompat
-    -Wredundant-constraints -Wnoncanonical-monad-instances
+  ghc-options: -Wall
+  if flag(dev)
+    ghc-options:      -Werror
+  if flag(dev) && impl(ghc >= 8.0)
+    ghc-options:      -Wcompat
+                      -Wincomplete-record-updates
+                      -Wincomplete-uni-patterns
+                      -Wnoncanonical-monad-instances
+                      -Wnoncanonical-monadfail-instances
diff --git a/src/Database/Persist/Migration.hs b/src/Database/Persist/Migration.hs
--- a/src/Database/Persist/Migration.hs
+++ b/src/Database/Persist/Migration.hs
@@ -38,16 +38,17 @@
   ) where
 
 import Control.Monad (unless)
+import Control.Monad.IO.Class (MonadIO)
 import qualified Data.Text as Text
 import Database.Persist.Migration.Internal
 import qualified Database.Persist.Sql as Persistent
 
 -- | True if the persistent library detects more migrations unaccounted for.
-hasMigration :: Persistent.Migration -> Persistent.SqlPersistT IO Bool
+hasMigration :: MonadIO m => Persistent.Migration -> Persistent.SqlPersistT m Bool
 hasMigration = fmap (not . null) . Persistent.showMigration
 
 -- | Fails if the persistent library detects more migrations unaccounted for.
-checkMigration :: Persistent.Migration -> Persistent.SqlPersistT IO ()
+checkMigration :: MonadIO m => Persistent.Migration -> Persistent.SqlPersistT m ()
 checkMigration migration = do
   migrationText <- Persistent.showMigration migration
   unless (null migrationText) $ fail $
