diff --git a/Graphics/UI/Gtk/Cast.hs b/Graphics/UI/Gtk/Cast.hs
--- a/Graphics/UI/Gtk/Cast.hs
+++ b/Graphics/UI/Gtk/Cast.hs
@@ -11,7 +11,7 @@
 -- gtk2hs-cast-glib
 import System.Glib.Cast
 
--- gtk2hs-cast-gtk
-import Graphics.UI.Gtk.Cast.TH
+-- gtk2hs-cast-th
+import System.Glib.Cast.TH
 
-$instance_
+$(instance_ "Graphics.UI.Gtk")
diff --git a/Graphics/UI/Gtk/Cast/TH.hs b/Graphics/UI/Gtk/Cast/TH.hs
deleted file mode 100644
--- a/Graphics/UI/Gtk/Cast/TH.hs
+++ /dev/null
@@ -1,33 +0,0 @@
--- gtk2hs-cast-gtk -- A type class for cast functions of Gtk2hs: gtk package
--- Copyright (c) 2009 Marco Túlio Gontijo e Silva <marcot@holoscopio.com>
--- CC0 Waiver 1.0 Universal [Beta 3]
--- See LICENSE
-
-module Graphics.UI.Gtk.Cast.TH (instance_) where
-
--- base
-import Data.Maybe
-
--- hint
-import Language.Haskell.Interpreter
-
--- template-haskell
-import Language.Haskell.TH.Syntax
-
-instance_ :: Q [Dec]
-instance_
-  = do
-    (Right (elements :: [ModuleElem]))
-      <- qRunIO $ runInterpreter $ getModuleExports "Graphics.UI.Gtk"
-    return $ map makeInstance_ $ mapMaybe isCastTo elements
-
-isCastTo :: ModuleElem -> Maybe String
-isCastTo (Fun ('c' : 'a' : 's' : 't' : 'T' : 'o' : rest)) = Just rest
-isCastTo _others = Nothing
-
-makeInstance_ :: String -> Dec
-makeInstance_ type_
-  = InstanceD []
-  (AppT (ConT $ mkName "Cast") $ ConT $ mkName type_)
-  [ FunD (mkName "cast")
-    [ Clause [] (NormalB $ VarE $ mkName $ "castTo" ++ type_) []]]
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,8 +1,3 @@
--- gtk2hs-cast-gtk -- A type class for cast functions of Gtk2hs: gtk package
--- Copyright (c) 2009 Marco Túlio Gontijo e Silva <marcot@holoscopio.com>
--- CC0 Waiver 1.0 Universal [Beta 3]
--- See LICENSE
-
 import Distribution.Simple
 
 main :: IO ()
diff --git a/gtk2hs-cast-gtk.cabal b/gtk2hs-cast-gtk.cabal
--- a/gtk2hs-cast-gtk.cabal
+++ b/gtk2hs-cast-gtk.cabal
@@ -1,5 +1,5 @@
 name: gtk2hs-cast-gtk
-version: 0.10.1.1
+version: 0.10.1.2
 cabal-version: >= 1.6
 build-type: Simple
 license: OtherLicense
@@ -14,14 +14,24 @@
  This package contains a type class called Cast with a function cast, that is a
  wrapper for all the castTo* functions of gtk2hs.  It makes it easier to write
  other functions that require a castTo* as a parameter, like xmlGetWidget from
- glade.
+ glade.  The main utility of these packages is to use xmlGetWidgetCast, a
+ version of xmlGetWidget defined in gtk2hs-cast-glade, which has the type:
+ xmlGetWidgetCast :: (Cast widget, WidgetClass widget) => GladeXML -> String ->
+ IO widget.
  .
- This is the gtk package of gtk2hs-cast.
+ This is the gtk package of gtk2hs-cast, which contains the instances of Cast
+ for the types in the gtk package from gtk2hs.
 category: GUI
 tested-with: GHC == 6.10.1
 library
-  exposed-modules: Graphics.UI.Gtk.Cast, Graphics.UI.Gtk.Cast.TH
-  build-depends: base, hint, gtk, gtk2hs-cast-glib, template-haskell
+  exposed-modules: Graphics.UI.Gtk.Cast
+  build-depends:
+    base
+    , hint
+    , gtk
+    , gtk2hs-cast-glib
+    , gtk2hs-cast-th
+    , template-haskell
   extensions: ScopedTypeVariables, TemplateHaskell
 source-repository head
   type: darcs
