diff --git a/XMonad/Config/Alt/Types.hs b/XMonad/Config/Alt/Types.hs
new file mode 100644
--- /dev/null
+++ b/XMonad/Config/Alt/Types.hs
@@ -0,0 +1,16 @@
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+-- | Types defined here to avoid template haskell stage restrictions
+module XMonad.Config.Alt.Types where
+import XMonad
+import Control.Monad.Writer
+
+
+-- TH stage restriction otherwise
+data Mode_ = Add_ | Modify_ | ModifyIO_ | Set_
+
+type Warnings = [String] -> [String]
+
+newtype Config a = Config (WriterT Warnings IO a)
+    deriving (Monad, MonadIO, MonadWriter Warnings)
+
diff --git a/xmonad-extras.cabal b/xmonad-extras.cabal
--- a/xmonad-extras.cabal
+++ b/xmonad-extras.cabal
@@ -1,5 +1,5 @@
 name:               xmonad-extras
-version:            0.9.1
+version:            0.9.2
 homepage:           http://projects.haskell.org/xmonad-extras
 synopsis:           Third party extensions for xmonad with wacky dependencies
 description:        Various modules for xmonad that cannot be added to xmonad-contrib
@@ -75,7 +75,9 @@
                          XMonad.Config.Alt.Internal
                          XMonad.Config.Alt.QQ
 
---    exposed-modules: XMonad.Hooks.PerWindowKbdLayout
+        other-modules:   XMonad.Config.Alt.Types
+
+--     exposed-modules: XMonad.Hooks.PerWindowKbdLayout
 
     if impl(ghc >= 6.12.1)
         ghc-options:    -fno-warn-unused-do-bind
