diff --git a/Graphics/UI/Gtk/Entry/Entry.chs b/Graphics/UI/Gtk/Entry/Entry.chs
--- a/Graphics/UI/Gtk/Entry/Entry.chs
+++ b/Graphics/UI/Gtk/Entry/Entry.chs
@@ -149,7 +149,11 @@
 import System.Glib.Properties
 import System.Glib.GObject		(makeNewGObject)
 import Graphics.UI.Gtk.Abstract.Object	(makeNewObject)
-import Graphics.UI.Gtk.General.Enums (DeleteType (..), MovementStep (..), EntryIconPosition (..))
+import Graphics.UI.Gtk.General.Enums (DeleteType (..), MovementStep (..)
+#if GTK_CHECK_VERSION(2,16,0)
+  , EntryIconPosition (..)
+#endif
+  )
 import Graphics.UI.Gtk.Gdk.EventM	(EventM, EButton, EKey)
 import Control.Monad.Reader             ( ask )
 import Control.Monad.Trans              ( liftIO )
diff --git a/Graphics/UI/Gtk/Gdk/EventM.hsc b/Graphics/UI/Gtk/Gdk/EventM.hsc
--- a/Graphics/UI/Gtk/Gdk/EventM.hsc
+++ b/Graphics/UI/Gtk/Gdk/EventM.hsc
@@ -518,11 +518,11 @@
 -- 'motionNotifyEvent' usually works like this:
 --
 -- > on widget motionNotifyEvent $ do
---     (x, y) <- eventCoordinates
---     -- handle the x,y motion:
---     ...
---     -- finally, notify that we are ready to get more motion events:
---     eventRequestMotions
+-- >   (x, y) <- eventCoordinates
+-- >   -- handle the x,y motion:
+-- >   ...
+-- >   -- finally, notify that we are ready to get more motion events:
+-- >   eventRequestMotions
 --
 eventRequestMotions :: EventM EMotion ()
 eventRequestMotions = ask >>= \ptr -> liftIO $
diff --git a/Graphics/UI/Gtk/MenuComboToolbar/ComboBoxEntry.chs b/Graphics/UI/Gtk/MenuComboToolbar/ComboBoxEntry.chs
--- a/Graphics/UI/Gtk/MenuComboToolbar/ComboBoxEntry.chs
+++ b/Graphics/UI/Gtk/MenuComboToolbar/ComboBoxEntry.chs
@@ -144,7 +144,7 @@
 --------------------
 -- Methods
 
--- | Set a model box that holds strings.
+-- | Set a model that holds strings.
 --
 -- This function stores a 'Graphics.UI.Gtk.ModelView.ListStore' with the
 -- widget and sets the model to the list store. The widget can contain only
diff --git a/Graphics/UI/Gtk/Printing/PrintSettings.chs b/Graphics/UI/Gtk/Printing/PrintSettings.chs
--- a/Graphics/UI/Gtk/Printing/PrintSettings.chs
+++ b/Graphics/UI/Gtk/Printing/PrintSettings.chs
@@ -150,7 +150,9 @@
 import System.Glib.UTFString
 import System.Glib.GError
 {#import Graphics.UI.Gtk.Types#}
+#if GTK_CHECK_VERSION(2,10,0)
 import Graphics.UI.Gtk.Printing.PaperSize (PaperSize(PaperSize), mkPaperSize, Unit(..))
+#endif
 
 {# context lib="gtk" prefix="gtk" #}
 
@@ -677,7 +679,6 @@
   {# call gtk_print_settings_set_resolution #}
     (toPrintSettings self)
     (fromIntegral resolution)
-#endif
 
 #if GTK_CHECK_VERSION(2,16,0)
 -- | Sets the values of 'PrintSettingsResolution', 'PrintSettingsResolutionX' and
@@ -733,6 +734,7 @@
   {# call gtk_print_settings_set_printer_lpi #}
     (toPrintSettings self)
     (realToFrac lpi)
+#endif
 
 -- | Gets the value of 'PrintSettingsScale'.
 printSettingsGetScale :: PrintSettingsClass self => self
@@ -767,7 +769,6 @@
   {# call gtk_print_settings_set_print_pages #}
     (toPrintSettings self)
     ((fromIntegral . fromEnum) pages)
-#endif
 
 -- | Gets the value of 'PrintSettingsPageRanges'.
 --
@@ -940,6 +941,7 @@
     (toPrintSettings self)
     fileNamePtr
     errorPtr
+#endif
 
 -- | Obtain the value of 'PrintSettingsPrinter'.
 printSettingsPrinter :: PrintSettingsClass self => Attr self String
diff --git a/Graphics/UI/Gtk/Types.chs b/Graphics/UI/Gtk/Types.chs
--- a/Graphics/UI/Gtk/Types.chs
+++ b/Graphics/UI/Gtk/Types.chs
@@ -40,10 +40,6 @@
   toAtkObject, 
   mkAtkObject, unAtkObject,
   castToAtkObject, gTypeAtkObject,
-  Accessible(Accessible), AccessibleClass,
-  toAccessible, 
-  mkAccessible, unAccessible,
-  castToAccessible, gTypeAccessible,
   Keymap(Keymap), KeymapClass,
   toKeymap, 
   mkKeymap, unKeymap,
@@ -212,14 +208,6 @@
   toContainer, 
   mkContainer, unContainer,
   castToContainer, gTypeContainer,
-  ToolPalette(ToolPalette), ToolPaletteClass,
-  toToolPalette, 
-  mkToolPalette, unToolPalette,
-  castToToolPalette, gTypeToolPalette,
-  ToolItemGroup(ToolItemGroup), ToolItemGroupClass,
-  toToolItemGroup, 
-  mkToolItemGroup, unToolItemGroup,
-  castToToolItemGroup, gTypeToolItemGroup,
   Bin(Bin), BinClass,
   toBin, 
   mkBin, unBin,
@@ -316,10 +304,6 @@
   toAssistant, 
   mkAssistant, unAssistant,
   castToAssistant, gTypeAssistant,
-  OffscreenWindow(OffscreenWindow), OffscreenWindowClass,
-  toOffscreenWindow, 
-  mkOffscreenWindow, unOffscreenWindow,
-  castToOffscreenWindow, gTypeOffscreenWindow,
   Dialog(Dialog), DialogClass,
   toDialog, 
   mkDialog, unDialog,
@@ -552,10 +536,6 @@
   toDrawingArea, 
   mkDrawingArea, unDrawingArea,
   castToDrawingArea, gTypeDrawingArea,
-  Spinner(Spinner), SpinnerClass,
-  toSpinner, 
-  mkSpinner, unSpinner,
-  castToSpinner, gTypeSpinner,
   Entry(Entry), EntryClass,
   toEntry, 
   mkEntry, unEntry,
@@ -660,10 +640,6 @@
   toCellRenderer, 
   mkCellRenderer, unCellRenderer,
   castToCellRenderer, gTypeCellRenderer,
-  CellRendererSpinner(CellRendererSpinner), CellRendererSpinnerClass,
-  toCellRendererSpinner, 
-  mkCellRendererSpinner, unCellRendererSpinner,
-  castToCellRendererSpinner, gTypeCellRendererSpinner,
   CellRendererPixbuf(CellRendererPixbuf), CellRendererPixbufClass,
   toCellRendererPixbuf, 
   mkCellRendererPixbuf, unCellRendererPixbuf,
@@ -862,30 +838,6 @@
 gTypeAtkObject =
   {# call fun unsafe atk_object_get_type #}
 
--- ***************************************************************** Accessible
-
-{#pointer *Accessible foreign newtype #} deriving (Eq,Ord)
-
-mkAccessible = (Accessible, objectUnrefFromMainloop)
-unAccessible (Accessible o) = o
-
-class AtkObjectClass o => AccessibleClass o
-toAccessible :: AccessibleClass o => o -> Accessible
-toAccessible = unsafeCastGObject . toGObject
-
-instance AccessibleClass Accessible
-instance AtkObjectClass Accessible
-instance GObjectClass Accessible where
-  toGObject = GObject . castForeignPtr . unAccessible
-  unsafeCastGObject = Accessible . castForeignPtr . unGObject
-
-castToAccessible :: GObjectClass obj => obj -> Accessible
-castToAccessible = castTo gTypeAccessible "Accessible"
-
-gTypeAccessible :: GType
-gTypeAccessible =
-  {# call fun unsafe gtk_accessible_get_type #}
-
 -- ********************************************************************* Keymap
 
 {#pointer *GdkKeymap as Keymap foreign newtype #} deriving (Eq,Ord)
@@ -1880,58 +1832,6 @@
 gTypeContainer =
   {# call fun unsafe gtk_container_get_type #}
 
--- **************************************************************** ToolPalette
-
-{#pointer *ToolPalette foreign newtype #} deriving (Eq,Ord)
-
-mkToolPalette = (ToolPalette, objectUnrefFromMainloop)
-unToolPalette (ToolPalette o) = o
-
-class ContainerClass o => ToolPaletteClass o
-toToolPalette :: ToolPaletteClass o => o -> ToolPalette
-toToolPalette = unsafeCastGObject . toGObject
-
-instance ToolPaletteClass ToolPalette
-instance ContainerClass ToolPalette
-instance WidgetClass ToolPalette
-instance ObjectClass ToolPalette
-instance GObjectClass ToolPalette where
-  toGObject = GObject . castForeignPtr . unToolPalette
-  unsafeCastGObject = ToolPalette . castForeignPtr . unGObject
-
-castToToolPalette :: GObjectClass obj => obj -> ToolPalette
-castToToolPalette = castTo gTypeToolPalette "ToolPalette"
-
-gTypeToolPalette :: GType
-gTypeToolPalette =
-  {# call fun unsafe gtk_tool_palette_get_type #}
-
--- ************************************************************** ToolItemGroup
-
-{#pointer *ToolItemGroup foreign newtype #} deriving (Eq,Ord)
-
-mkToolItemGroup = (ToolItemGroup, objectUnrefFromMainloop)
-unToolItemGroup (ToolItemGroup o) = o
-
-class ContainerClass o => ToolItemGroupClass o
-toToolItemGroup :: ToolItemGroupClass o => o -> ToolItemGroup
-toToolItemGroup = unsafeCastGObject . toGObject
-
-instance ToolItemGroupClass ToolItemGroup
-instance ContainerClass ToolItemGroup
-instance WidgetClass ToolItemGroup
-instance ObjectClass ToolItemGroup
-instance GObjectClass ToolItemGroup where
-  toGObject = GObject . castForeignPtr . unToolItemGroup
-  unsafeCastGObject = ToolItemGroup . castForeignPtr . unGObject
-
-castToToolItemGroup :: GObjectClass obj => obj -> ToolItemGroup
-castToToolItemGroup = castTo gTypeToolItemGroup "ToolItemGroup"
-
-gTypeToolItemGroup :: GType
-gTypeToolItemGroup =
-  {# call fun unsafe gtk_tool_item_group_get_type #}
-
 -- ************************************************************************ Bin
 
 {#pointer *Bin foreign newtype #} deriving (Eq,Ord)
@@ -2607,34 +2507,6 @@
 gTypeAssistant =
   {# call fun unsafe gtk_assistant_get_type #}
 
--- ************************************************************ OffscreenWindow
-
-{#pointer *OffscreenWindow foreign newtype #} deriving (Eq,Ord)
-
-mkOffscreenWindow = (OffscreenWindow, objectUnrefFromMainloop)
-unOffscreenWindow (OffscreenWindow o) = o
-
-class WindowClass o => OffscreenWindowClass o
-toOffscreenWindow :: OffscreenWindowClass o => o -> OffscreenWindow
-toOffscreenWindow = unsafeCastGObject . toGObject
-
-instance OffscreenWindowClass OffscreenWindow
-instance WindowClass OffscreenWindow
-instance BinClass OffscreenWindow
-instance ContainerClass OffscreenWindow
-instance WidgetClass OffscreenWindow
-instance ObjectClass OffscreenWindow
-instance GObjectClass OffscreenWindow where
-  toGObject = GObject . castForeignPtr . unOffscreenWindow
-  unsafeCastGObject = OffscreenWindow . castForeignPtr . unGObject
-
-castToOffscreenWindow :: GObjectClass obj => obj -> OffscreenWindow
-castToOffscreenWindow = castTo gTypeOffscreenWindow "OffscreenWindow"
-
-gTypeOffscreenWindow :: GType
-gTypeOffscreenWindow =
-  {# call fun unsafe gtk_offscreen_window_get_type #}
-
 -- ********************************************************************* Dialog
 
 {#pointer *Dialog foreign newtype #} deriving (Eq,Ord)
@@ -4218,32 +4090,6 @@
 gTypeDrawingArea =
   {# call fun unsafe gtk_drawing_area_get_type #}
 
--- ******************************************************************** Spinner
-
-{#pointer *Spinner foreign newtype #} deriving (Eq,Ord)
-
-mkSpinner = (Spinner, objectUnrefFromMainloop)
-unSpinner (Spinner o) = o
-
-class DrawingAreaClass o => SpinnerClass o
-toSpinner :: SpinnerClass o => o -> Spinner
-toSpinner = unsafeCastGObject . toGObject
-
-instance SpinnerClass Spinner
-instance DrawingAreaClass Spinner
-instance WidgetClass Spinner
-instance ObjectClass Spinner
-instance GObjectClass Spinner where
-  toGObject = GObject . castForeignPtr . unSpinner
-  unsafeCastGObject = Spinner . castForeignPtr . unGObject
-
-castToSpinner :: GObjectClass obj => obj -> Spinner
-castToSpinner = castTo gTypeSpinner "Spinner"
-
-gTypeSpinner :: GType
-gTypeSpinner =
-  {# call fun unsafe gtk_spinner_get_type #}
-
 -- ********************************************************************** Entry
 
 {#pointer *Entry foreign newtype #} deriving (Eq,Ord)
@@ -4902,31 +4748,6 @@
 gTypeCellRenderer :: GType
 gTypeCellRenderer =
   {# call fun unsafe gtk_cell_renderer_get_type #}
-
--- ******************************************************** CellRendererSpinner
-
-{#pointer *CellRendererSpinner foreign newtype #} deriving (Eq,Ord)
-
-mkCellRendererSpinner = (CellRendererSpinner, objectUnrefFromMainloop)
-unCellRendererSpinner (CellRendererSpinner o) = o
-
-class CellRendererClass o => CellRendererSpinnerClass o
-toCellRendererSpinner :: CellRendererSpinnerClass o => o -> CellRendererSpinner
-toCellRendererSpinner = unsafeCastGObject . toGObject
-
-instance CellRendererSpinnerClass CellRendererSpinner
-instance CellRendererClass CellRendererSpinner
-instance ObjectClass CellRendererSpinner
-instance GObjectClass CellRendererSpinner where
-  toGObject = GObject . castForeignPtr . unCellRendererSpinner
-  unsafeCastGObject = CellRendererSpinner . castForeignPtr . unGObject
-
-castToCellRendererSpinner :: GObjectClass obj => obj -> CellRendererSpinner
-castToCellRendererSpinner = castTo gTypeCellRendererSpinner "CellRendererSpinner"
-
-gTypeCellRendererSpinner :: GType
-gTypeCellRendererSpinner =
-  {# call fun unsafe gtk_cell_renderer_spinner_get_type #}
 
 -- ********************************************************* CellRendererPixbuf
 
diff --git a/Gtk2HsSetup.hs b/Gtk2HsSetup.hs
--- a/Gtk2HsSetup.hs
+++ b/Gtk2HsSetup.hs
@@ -9,7 +9,10 @@
 module Gtk2HsSetup ( 
   gtk2hsUserHooks, 
   getPkgConfigPackages, 
-  checkGtk2hsBuildtools
+  checkGtk2hsBuildtools,
+  typeGenProgram,
+  signalGenProgram,
+  c2hsLocal
   ) where
 
 import Distribution.Simple
@@ -411,11 +414,11 @@
             (out',visited') = foldl visit (out, m `S.insert` visited) (mdRequires md)
 
 -- Check user whether install gtk2hs-buildtools correctly.
-checkGtk2hsBuildtools :: [String] -> IO ()
+checkGtk2hsBuildtools :: [Program] -> IO ()
 checkGtk2hsBuildtools programs = do
-  programInfos <- mapM (\ name -> do
-                         location <- programFindLocation (simpleProgram name) normal
-                         return (name, location)
+  programInfos <- mapM (\ prog -> do
+                         location <- programFindLocation prog normal
+                         return (programName prog, location)
                       ) programs
   let printError name = do
         putStrLn $ "Cannot find " ++ name ++ "\n" 
diff --git a/SetupMain.hs b/SetupMain.hs
--- a/SetupMain.hs
+++ b/SetupMain.hs
@@ -3,10 +3,11 @@
 -- all Gtk2Hs-specific boilerplate is kept in Gtk2HsSetup.hs
 -- which should be kept identical across all packages.
 --
-import Gtk2HsSetup ( gtk2hsUserHooks, checkGtk2hsBuildtools )
+import Gtk2HsSetup ( gtk2hsUserHooks, checkGtk2hsBuildtools,
+                     typeGenProgram, signalGenProgram, c2hsLocal)
 import Distribution.Simple ( defaultMainWithHooks )
 
 main = do
-  checkGtk2hsBuildtools ["gtk2hsC2hs", "gtk2hsTypeGen", "gtk2hsHookGenerator"]
+  checkGtk2hsBuildtools [typeGenProgram, signalGenProgram, c2hsLocal]
   defaultMainWithHooks gtk2hsUserHooks
   
diff --git a/gtk.cabal b/gtk.cabal
--- a/gtk.cabal
+++ b/gtk.cabal
@@ -1,5 +1,5 @@
 Name:           gtk
-Version:        0.12.1
+Version:        0.12.2
 License:        LGPL-2.1
 License-file:   COPYING
 Copyright:      (c) 2001-2010 The Gtk2Hs Team
