diff --git a/gore-and-ash-sdl.cabal b/gore-and-ash-sdl.cabal
--- a/gore-and-ash-sdl.cabal
+++ b/gore-and-ash-sdl.cabal
@@ -1,5 +1,5 @@
 name:                gore-and-ash-sdl
-version:             2.0.0.0
+version:             2.1.0.0
 synopsis:            Gore&Ash core module for integration with SDL library
 description:         Please see README.md
 homepage:            git@github.com:Teaspot-Studio/gore-and-ash-sdl.git
@@ -28,9 +28,11 @@
                      , lens >= 4.13
                      , linear >= 1.20.3
                      , mtl >= 2.2.1
+                     , resourcet >= 1.1.7.1
                      , sdl2 >= 2.1.1
                      , text >= 1.2.2.0
                      , transformers >= 0.4.2.0
+                     , transformers-base >= 0.4.4
                      , unordered-containers >= 0.2.5.1
                      
   default-extensions:    
diff --git a/src/Game/GoreAndAsh/SDL/Module.hs b/src/Game/GoreAndAsh/SDL/Module.hs
--- a/src/Game/GoreAndAsh/SDL/Module.hs
+++ b/src/Game/GoreAndAsh/SDL/Module.hs
@@ -15,15 +15,17 @@
     SDLT(..)
   ) where
 
+import Control.Monad.Base 
 import Control.Monad.Catch
+import Control.Monad.Error.Class 
 import Control.Monad.Fix 
 import Control.Monad.IO.Class 
 import Control.Monad.State.Strict
+import Control.Monad.Trans.Resource
 import Data.Proxy 
 import qualified Data.Foldable as F 
 import qualified Data.HashMap.Strict as H 
 import qualified Data.Sequence as S 
-
 import SDL
 
 import Game.GoreAndAsh
@@ -48,8 +50,14 @@
 --
 -- The module is NOT pure within first phase (see 'ModuleStack' docs), therefore currently only 'IO' end monad can handler the module.
 newtype SDLT s m a = SDLT { runSDLT :: StateT (SDLState s) m a }
-  deriving (Functor, Applicative, Monad, MonadState (SDLState s), MonadFix, MonadTrans, MonadIO, MonadThrow, MonadCatch, MonadMask)
+  deriving (Functor, Applicative, Monad, MonadState (SDLState s), MonadFix, MonadTrans, MonadIO, MonadThrow, MonadCatch, MonadMask, MonadError e)
 
+instance MonadBase IO m => MonadBase IO (SDLT s m) where 
+  liftBase = SDLT . liftBase
+
+instance MonadResource m => MonadResource (SDLT s m) where 
+  liftResourceT = SDLT . liftResourceT
+  
 instance GameModule m s => GameModule (SDLT s m) (SDLState s) where 
   type ModuleState (SDLT s m) = SDLState s
   runModule (SDLT m) s = do
