diff --git a/.hg_archival.txt b/.hg_archival.txt
--- a/.hg_archival.txt
+++ b/.hg_archival.txt
@@ -1,2 +1,2 @@
 repo: 73f9f23123106e581edbcf74b725d9a23e2eb1f4
-node: 7eab16509ef9e1c66dac522e1cfb48701d3ee1e8
+node: d6720590f1abaf37f58578d9aa71302681440f8c
diff --git a/.hgtags b/.hgtags
new file mode 100644
--- /dev/null
+++ b/.hgtags
@@ -0,0 +1,1 @@
+9e2bed8ab08ad6f310093bec0c339ae8f6ddb142 0.0.2
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,143 @@
+
+GNU LESSER GENERAL PUBLIC LICENSE
+
+Version 3, 29 June 2007
+
+Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+This version of the GNU Lesser General Public License incorporates the terms and
+conditions of version 3 of the GNU General Public License, supplemented by the
+additional permissions listed below.
+
+0. Additional Definitions.
+
+As used herein, “this License” refers to version 3 of the GNU Lesser General Public
+License, and the “GNU GPL” refers to version 3 of the GNU General Public License.
+
+“The Library” refers to a covered work governed by this License, other than an
+Application or a Combined Work as defined below.
+
+An “Application” is any work that makes use of an interface provided by the Library,
+but which is not otherwise based on the Library. Defining a subclass of a class
+defined by the Library is deemed a mode of using an interface provided by the
+Library.
+
+A “Combined Work” is a work produced by combining or linking an Application with the
+Library. The particular version of the Library with which the Combined Work was made
+is also called the “Linked Version”.
+
+The “Minimal Corresponding Source” for a Combined Work means the Corresponding
+Source for the Combined Work, excluding any source code for portions of the Combined
+Work that, considered in isolation, are based on the Application, and not on the
+Linked Version.
+
+The “Corresponding Application Code” for a Combined Work means the object code and/
+or source code for the Application, including any data and utility programs needed
+for reproducing the Combined Work from the Application, but excluding the System
+Libraries of the Combined Work.
+
+1. Exception to Section 3 of the GNU GPL.
+
+You may convey a covered work under sections 3 and 4 of this License without being
+bound by section 3 of the GNU GPL.
+
+2. Conveying Modified Versions.
+
+If you modify a copy of the Library, and, in your modifications, a facility refers
+to a function or data to be supplied by an Application that uses the facility (other
+than as an argument passed when the facility is invoked), then you may convey a copy
+of the modified version:
+
+  • a) under this License, provided that you make a good faith effort to ensure
+    that, in the event an Application does not supply the function or data, the
+    facility still operates, and performs whatever part of its purpose remains
+    meaningful, or
+  • b) under the GNU GPL, with none of the additional permissions of this License
+    applicable to that copy.
+
+3. Object Code Incorporating Material from Library Header Files.
+
+The object code form of an Application may incorporate material from a header file
+that is part of the Library. You may convey such object code under terms of your
+choice, provided that, if the incorporated material is not limited to numerical
+parameters, data structure layouts and accessors, or small macros, inline functions
+and templates (ten or fewer lines in length), you do both of the following:
+
+  • a) Give prominent notice with each copy of the object code that the Library is
+    used in it and that the Library and its use are covered by this License.
+  • b) Accompany the object code with a copy of the GNU GPL and this license
+    document.
+
+4. Combined Works.
+
+You may convey a Combined Work under terms of your choice that, taken together,
+effectively do not restrict modification of the portions of the Library contained in
+the Combined Work and reverse engineering for debugging such modifications, if you
+also do each of the following:
+
+  • a) Give prominent notice with each copy of the Combined Work that the Library is
+    used in it and that the Library and its use are covered by this License.
+  • b) Accompany the Combined Work with a copy of the GNU GPL and this license
+    document.
+  • c) For a Combined Work that displays copyright notices during execution, include
+    the copyright notice for the Library among these notices, as well as a reference
+    directing the user to the copies of the GNU GPL and this license document.
+  • d) Do one of the following:
+      □ 0) Convey the Minimal Corresponding Source under the terms of this License,
+        and the Corresponding Application Code in a form suitable for, and under
+        terms that permit, the user to recombine or relink the Application with a
+        modified version of the Linked Version to produce a modified Combined Work,
+        in the manner specified by section 6 of the GNU GPL for conveying
+        Corresponding Source.
+      □ 1) Use a suitable shared library mechanism for linking with the Library. A
+        suitable mechanism is one that (a) uses at run time a copy of the Library
+        already present on the user's computer system, and (b) will operate properly
+        with a modified version of the Library that is interface-compatible with the
+        Linked Version.
+  • e) Provide Installation Information, but only if you would otherwise be required
+    to provide such information under section 6 of the GNU GPL, and only to the
+    extent that such information is necessary to install and execute a modified
+    version of the Combined Work produced by recombining or relinking the
+    Application with a modified version of the Linked Version. (If you use option
+    4d0, the Installation Information must accompany the Minimal Corresponding
+    Source and Corresponding Application Code. If you use option 4d1, you must
+    provide the Installation Information in the manner specified by section 6 of the
+    GNU GPL for conveying Corresponding Source.)
+
+5. Combined Libraries.
+
+You may place library facilities that are a work based on the Library side by side
+in a single library together with other library facilities that are not Applications
+and are not covered by this License, and convey such a combined library under terms
+of your choice, if you do both of the following:
+
+  • a) Accompany the combined library with a copy of the same work based on the
+    Library, uncombined with any other library facilities, conveyed under the terms
+    of this License.
+  • b) Give prominent notice with the combined library that part of it is a work
+    based on the Library, and explaining where to find the accompanying uncombined
+    form of the same work.
+
+6. Revised Versions of the GNU Lesser General Public License.
+
+The Free Software Foundation may publish revised and/or new versions of the GNU
+Lesser General Public License from time to time. Such new versions will be similar
+in spirit to the present version, but may differ in detail to address new problems
+or concerns.
+
+Each version is given a distinguishing version number. If the Library as you
+received it specifies that a certain numbered version of the GNU Lesser General
+Public License “or any later version” applies to it, you have the option of
+following the terms and conditions either of that published version or of any later
+version published by the Free Software Foundation. If the Library as you received it
+does not specify a version number of the GNU Lesser General Public License, you may
+choose any version of the GNU Lesser General Public License ever published by the
+Free Software Foundation.
+
+If the Library as you received it specifies that a proxy can decide whether future
+versions of the GNU Lesser General Public License shall apply, that proxy's public
+statement of acceptance of any version is permanent authorization for you to choose
+that version for the Library.
diff --git a/examples/Setup.hs b/examples/Setup.hs
new file mode 100644
--- /dev/null
+++ b/examples/Setup.hs
@@ -0,0 +1,5 @@
+#!/usr/bin/env runhaskell
+
+import Distribution.Simple
+
+main = defaultMain
diff --git a/examples/example1.hs b/examples/example1.hs
new file mode 100644
--- /dev/null
+++ b/examples/example1.hs
@@ -0,0 +1,60 @@
+module Main where
+import Graphics.UI.Gtk
+import Graphics.UI.Gtk.Gdk.EventM
+import Graphics.Rendering.Cairo
+import Graphics.UI.Gtk.Layout.Rpn
+import Data.Monoid
+
+title :: String -> [AttrOp Window]
+title s = [windowTitle := s]
+pressed :: Signal Widget (EventM EButton Bool)
+pressed = buttonPressEvent
+
+main = do
+    initGUI
+
+    -- Create a new operator ('line') that takes a label
+    -- ('cLBL') and a button ('cBTNL') and pack then ('pBPED')
+    -- in a horizontal box ('cHBX').
+
+    let line s = mconcat [
+         cLBL (Just $ s ++ ":"),
+         cBTNL s,
+         cHBX True 0,
+         pBPED,
+         pBPED]
+
+    -- Create a new operator ('column') that packs many 'line'
+    -- in a vertical box ('cVBX').
+
+    let column = mconcat $ [
+         line "One Button",
+         line "Another Button",
+         line "Yet Another Button",
+         line "Last Button",
+         cVBX True 0] ++ replicate 4 pBPED
+
+    -- Take two copies of 'column' and add ('pNAP') then
+    -- to a notebook ('cNBK'). Then create a stock button
+    -- ('cBTNSTK') and attach a action to an event ('tON'). Then
+    -- join the notebook and that button in a vertical box.
+    -- Insert everything in a main window ('cWND, pCA'), and
+    -- finally make everything into widgets ('widgetsFromRpn').
+
+    [mainWindow] <- widgetsFromRpn $ mconcat $ [
+         column,
+         column,
+         cNBK,
+         pNAP "First Page",
+         pNAP "Second Page",
+         cBTNSTK stockQuit,
+         tON pressed (liftIO mainQuit >> return True),
+         cVBX False 0,
+         pBPE PackNatural 0,
+         pBPED,
+         cWND,
+         pCA,
+         tSET (title "Layout.RPN Example")]
+
+    widgetShowAll mainWindow
+    mainGUI
diff --git a/examples/examples.cabal b/examples/examples.cabal
new file mode 100644
--- /dev/null
+++ b/examples/examples.cabal
@@ -0,0 +1,12 @@
+cabal-Version: >= 1.2
+name: gtk2hs-rpn-examples
+version: 1
+build-type: Simple
+license: PublicDomain
+maintainer: Maurício CA <mauricio.antunes@gmail.com>
+Executable example1
+  main-is: example1.hs
+  build-depends: base, gtk, gtk2hs-rpn, mtl, cairo
+  hs-source-dirs: .
+  extensions:
+    NoMonomorphismRestriction
diff --git a/gtk2hs-rpn.cabal b/gtk2hs-rpn.cabal
--- a/gtk2hs-rpn.cabal
+++ b/gtk2hs-rpn.cabal
@@ -1,17 +1,20 @@
 cabal-Version: >= 1.2
 name: gtk2hs-rpn
-version: 0.0.1
+version: 0.0.2
 synopsis:
   Adds a module to gtk2hs allowing layouts to
   be defined using reverse polish notation.
 description:
-  Adds a module 'Graphics.UI.Gtk.Layout.Rpn' to
-  gtk2hs. This module defines a type 'RPN' for
-  operators, and is an instance of Monoid class.
-  You can combine those operators to define a
-  layout, as well as buttons and other widgets.
+  Adds a module 'Graphics.UI.Gtk.Layout.Rpn' to gtk2hs. This
+  module defines a type 'RPN' for operators, and is an instance
+  of Monoid class.  You can combine those operators using reverse
+  polish notation, as made popular by, say, HP calculators. There
+  are operators for layout elements, like expanders, panes,
+  boxes and notebooks, and for a few other widgets, like buttons
+  and labels. You can include any gtk2hs widget in the stack.
 build-type: Simple
 license: LGPL
+license-file: LICENSE
 maintainer: Maurício CA <mauricio.antunes@gmail.com>
 category: GUI
 Library
@@ -21,9 +24,4 @@
     NoMonomorphismRestriction
   exposed-modules:
     Graphics.UI.Gtk.Layout.Rpn
-Executable example
-  main-is: example.hs
-  build-depends: base, gtk >= 0.10, cairo
-  hs-source-dirs: src
-  extensions:
-    NoMonomorphismRestriction
+    Graphics.UI.Gtk.Layout.Rpn.CanBeCasted
diff --git a/src/CanBeCasted.hs b/src/CanBeCasted.hs
deleted file mode 100644
--- a/src/CanBeCasted.hs
+++ /dev/null
@@ -1,508 +0,0 @@
-module CanBeCasted where {
-import Graphics.UI.Gtk ;
-import Graphics.UI.Gtk.Types ;
-
- class ( GObjectClass g ) => CanBeCasted g where {
-     glibCast :: ( GObjectClass o ) => o -> Maybe g ;
-     glibCast a = if isA a t then Just ( c a ) else Nothing
-         where { ( t , c ) = castData } ;
-     castData :: ( GObjectClass g1 ) => ( GType , g1 -> g )
- } ;
-
- instance CanBeCasted AboutDialog where {
-     castData = ( gTypeAboutDialog , castToAboutDialog )
- } ;
- instance CanBeCasted AccelLabel where {
-     castData = ( gTypeAccelLabel , castToAccelLabel )
- } ;
- instance CanBeCasted Action where {
-     castData = ( gTypeAction , castToAction )
- } ;
- instance CanBeCasted ActionGroup where {
-     castData = ( gTypeActionGroup , castToActionGroup )
- } ;
--- instance CanBeCasted Adapter where {
---     castData = ( gTypeAdapter , castToAdapter )
--- } ;
- instance CanBeCasted Adjustment where {
-     castData = ( gTypeAdjustment , castToAdjustment )
- } ;
- instance CanBeCasted Alignment where {
-     castData = ( gTypeAlignment , castToAlignment )
- } ;
- instance CanBeCasted Arrow where {
-     castData = ( gTypeArrow , castToArrow )
- } ;
- instance CanBeCasted AspectFrame where {
-     castData = ( gTypeAspectFrame , castToAspectFrame )
- } ;
--- instance CanBeCasted BaseSink where {
---     castData = ( gTypeBaseSink , castToBaseSink )
--- } ;
--- instance CanBeCasted BaseSrc where {
---     castData = ( gTypeBaseSrc , castToBaseSrc )
--- } ;
--- instance CanBeCasted BaseTransform where {
---     castData = ( gTypeBaseTransform , castToBaseTransform )
--- } ;
- instance CanBeCasted Bin where {
-     castData = ( gTypeBin , castToBin )
- } ;
- instance CanBeCasted Box where {
-     castData = ( gTypeBox , castToBox )
- } ;
--- instance CanBeCasted Buffer where {
---     castData = ( gTypeBuffer , castToBuffer )
--- } ;
--- instance CanBeCasted Bus where {
---     castData = ( gTypeBus , castToBus )
--- } ;
- instance CanBeCasted Button where {
-     castData = ( gTypeButton , castToButton )
- } ;
- instance CanBeCasted ButtonBox where {
-     castData = ( gTypeButtonBox , castToButtonBox )
- } ;
- instance CanBeCasted Calendar where {
-     castData = ( gTypeCalendar , castToCalendar )
- } ;
- instance CanBeCasted CellRenderer where {
-     castData = ( gTypeCellRenderer , castToCellRenderer )
- } ;
- instance CanBeCasted CellRendererCombo where {
-     castData = ( gTypeCellRendererCombo , castToCellRendererCombo )
- } ;
- instance CanBeCasted CellRendererPixbuf where {
-     castData = ( gTypeCellRendererPixbuf , castToCellRendererPixbuf )
- } ;
- instance CanBeCasted CellRendererProgress where {
-     castData = ( gTypeCellRendererProgress , castToCellRendererProgress )
- } ;
- instance CanBeCasted CellRendererText where {
-     castData = ( gTypeCellRendererText , castToCellRendererText )
- } ;
- instance CanBeCasted CellRendererToggle where {
-     castData = ( gTypeCellRendererToggle , castToCellRendererToggle )
- } ;
- instance CanBeCasted CellView where {
-     castData = ( gTypeCellView , castToCellView )
- } ;
- instance CanBeCasted CheckButton where {
-     castData = ( gTypeCheckButton , castToCheckButton )
- } ;
- instance CanBeCasted CheckMenuItem where {
-     castData = ( gTypeCheckMenuItem , castToCheckMenuItem )
- } ;
- instance CanBeCasted Clipboard where {
-     castData = ( gTypeClipboard , castToClipboard )
- } ;
--- instance CanBeCasted Clock where {
---     castData = ( gTypeClock , castToClock )
--- } ;
- instance CanBeCasted ColorButton where {
-     castData = ( gTypeColorButton , castToColorButton )
- } ;
- instance CanBeCasted ColorSelection where {
-     castData = ( gTypeColorSelection , castToColorSelection )
- } ;
- instance CanBeCasted ColorSelectionDialog where {
-     castData = ( gTypeColorSelectionDialog , castToColorSelectionDialog )
- } ;
- instance CanBeCasted Combo where {
-     castData = ( gTypeCombo , castToCombo )
- } ;
- instance CanBeCasted ComboBox where {
-     castData = ( gTypeComboBox , castToComboBox )
- } ;
- instance CanBeCasted ComboBoxEntry where {
-     castData = ( gTypeComboBoxEntry , castToComboBoxEntry )
- } ;
- instance CanBeCasted Container where {
-     castData = ( gTypeContainer , castToContainer )
- } ;
- instance CanBeCasted Dialog where {
-     castData = ( gTypeDialog , castToDialog )
- } ;
- instance CanBeCasted DragContext where {
-     castData = ( gTypeDragContext , castToDragContext )
- } ;
- instance CanBeCasted DrawWindow where {
-     castData = ( gTypeDrawWindow , castToDrawWindow )
- } ;
- instance CanBeCasted Drawable where {
-     castData = ( gTypeDrawable , castToDrawable )
- } ;
- instance CanBeCasted DrawingArea where {
-     castData = ( gTypeDrawingArea , castToDrawingArea )
- } ;
--- instance CanBeCasted Drive where {
---     castData = ( gTypeDrive , castToDrive )
--- } ;
- instance CanBeCasted Editable where {
-     castData = ( gTypeEditable , castToEditable )
- } ;
--- instance CanBeCasted Element where {
---     castData = ( gTypeElement , castToElement )
--- } ;
--- instance CanBeCasted ElementFactory where {
---     castData = ( gTypeElementFactory , castToElementFactory )
--- } ;
- instance CanBeCasted Entry where {
-     castData = ( gTypeEntry , castToEntry )
- } ;
- instance CanBeCasted EntryCompletion where {
-     castData = ( gTypeEntryCompletion , castToEntryCompletion )
- } ;
- instance CanBeCasted EventBox where {
-     castData = ( gTypeEventBox , castToEventBox )
- } ;
- instance CanBeCasted Expander where {
-     castData = ( gTypeExpander , castToExpander )
- } ;
- instance CanBeCasted FileChooser where {
-     castData = ( gTypeFileChooser , castToFileChooser )
- } ;
- instance CanBeCasted FileChooserButton where {
-     castData = ( gTypeFileChooserButton , castToFileChooserButton )
- } ;
- instance CanBeCasted FileChooserDialog where {
-     castData = ( gTypeFileChooserDialog , castToFileChooserDialog )
- } ;
- instance CanBeCasted FileChooserWidget where {
-     castData = ( gTypeFileChooserWidget , castToFileChooserWidget )
- } ;
- instance CanBeCasted FileFilter where {
-     castData = ( gTypeFileFilter , castToFileFilter )
- } ;
- instance CanBeCasted FileSelection where {
-     castData = ( gTypeFileSelection , castToFileSelection )
- } ;
- instance CanBeCasted Fixed where {
-     castData = ( gTypeFixed , castToFixed )
- } ;
- instance CanBeCasted FontButton where {
-     castData = ( gTypeFontButton , castToFontButton )
- } ;
- instance CanBeCasted FontSelection where {
-     castData = ( gTypeFontSelection , castToFontSelection )
- } ;
- instance CanBeCasted FontSelectionDialog where {
-     castData = ( gTypeFontSelectionDialog , castToFontSelectionDialog )
- } ;
- instance CanBeCasted Frame where {
-     castData = ( gTypeFrame , castToFrame )
- } ;
- instance CanBeCasted GC where {
-     castData = ( gTypeGC , castToGC )
- } ;
--- instance CanBeCasted GLConfig where {
---     castData = ( gTypeGLConfig , castToGLConfig )
--- } ;
--- instance CanBeCasted GLContext where {
---     castData = ( gTypeGLContext , castToGLContext )
--- } ;
--- instance CanBeCasted GLDrawable where {
---     castData = ( gTypeGLDrawable , castToGLDrawable )
--- } ;
--- instance CanBeCasted GLPixmap where {
---     castData = ( gTypeGLPixmap , castToGLPixmap )
--- } ;
--- instance CanBeCasted GLWindow where {
---     castData = ( gTypeGLWindow , castToGLWindow )
--- } ;
--- instance CanBeCasted GhostPad where {
---     castData = ( gTypeGhostPad , castToGhostPad )
--- } ;
- instance CanBeCasted HBox where {
-     castData = ( gTypeHBox , castToHBox )
- } ;
- instance CanBeCasted HButtonBox where {
-     castData = ( gTypeHButtonBox , castToHButtonBox )
- } ;
- instance CanBeCasted HPaned where {
-     castData = ( gTypeHPaned , castToHPaned )
- } ;
- instance CanBeCasted HScale where {
-     castData = ( gTypeHScale , castToHScale )
- } ;
- instance CanBeCasted HScrollbar where {
-     castData = ( gTypeHScrollbar , castToHScrollbar )
- } ;
- instance CanBeCasted HSeparator where {
-     castData = ( gTypeHSeparator , castToHSeparator )
- } ;
- instance CanBeCasted HandleBox where {
-     castData = ( gTypeHandleBox , castToHandleBox )
- } ;
- instance CanBeCasted IconFactory where {
-     castData = ( gTypeIconFactory , castToIconFactory )
- } ;
- instance CanBeCasted IconView where {
-     castData = ( gTypeIconView , castToIconView )
- } ;
- instance CanBeCasted Image where {
-     castData = ( gTypeImage , castToImage )
- } ;
- instance CanBeCasted ImageMenuItem where {
-     castData = ( gTypeImageMenuItem , castToImageMenuItem )
- } ;
--- instance CanBeCasted ImplementsInterface where {
---     castData = ( gTypeImplementsInterface , castToImplementsInterface )
--- } ;
--- instance CanBeCasted Index where {
---     castData = ( gTypeIndex , castToIndex )
--- } ;
--- instance CanBeCasted IndexFactory where {
---     castData = ( gTypeIndexFactory , castToIndexFactory )
--- } ;
- instance CanBeCasted Label where {
-     castData = ( gTypeLabel , castToLabel )
- } ;
- instance CanBeCasted Layout where {
-     castData = ( gTypeLayout , castToLayout )
- } ;
- instance CanBeCasted Menu where {
-     castData = ( gTypeMenu , castToMenu )
- } ;
- instance CanBeCasted MenuBar where {
-     castData = ( gTypeMenuBar , castToMenuBar )
- } ;
- instance CanBeCasted MenuItem where {
-     castData = ( gTypeMenuItem , castToMenuItem )
- } ;
- instance CanBeCasted MenuShell where {
-     castData = ( gTypeMenuShell , castToMenuShell )
- } ;
- instance CanBeCasted MenuToolButton where {
-     castData = ( gTypeMenuToolButton , castToMenuToolButton )
- } ;
--- instance CanBeCasted Message where {
---     castData = ( gTypeMessage , castToMessage )
--- } ;
- instance CanBeCasted MessageDialog where {
-     castData = ( gTypeMessageDialog , castToMessageDialog )
- } ;
--- instance CanBeCasted MiniObject where {
---     castData = ( gTypeMiniObject , castToMiniObject )
--- } ;
- instance CanBeCasted Misc where {
-     castData = ( gTypeMisc , castToMisc )
- } ;
- instance CanBeCasted Notebook where {
-     castData = ( gTypeNotebook , castToNotebook )
- } ;
- instance CanBeCasted Object where {
-     castData = ( gTypeObject , castToObject )
- } ;
- instance CanBeCasted OptionMenu where {
-     castData = ( gTypeOptionMenu , castToOptionMenu )
- } ;
--- instance CanBeCasted Pad where {
---     castData = ( gTypePad , castToPad )
--- } ;
--- instance CanBeCasted PadTemplate where {
---     castData = ( gTypePadTemplate , castToPadTemplate )
--- } ;
- instance CanBeCasted Paned where {
-     castData = ( gTypePaned , castToPaned )
- } ;
--- instance CanBeCasted Pipeline where {
---     castData = ( gTypePipeline , castToPipeline )
--- } ;
- instance CanBeCasted Pixbuf where {
-     castData = ( gTypePixbuf , castToPixbuf )
- } ;
- instance CanBeCasted Plug where {
-     castData = ( gTypePlug , castToPlug )
- } ;
--- instance CanBeCasted Plugin where {
---     castData = ( gTypePlugin , castToPlugin )
--- } ;
--- instance CanBeCasted PluginFeature where {
---     castData = ( gTypePluginFeature , castToPluginFeature )
--- } ;
- instance CanBeCasted ProgressBar where {
-     castData = ( gTypeProgressBar , castToProgressBar )
- } ;
--- instance CanBeCasted PushSrc where {
---     castData = ( gTypePushSrc , castToPushSrc )
--- } ;
--- instance CanBeCasted Query where {
---     castData = ( gTypeQuery , castToQuery )
--- } ;
- instance CanBeCasted RadioAction where {
-     castData = ( gTypeRadioAction , castToRadioAction )
- } ;
- instance CanBeCasted RadioButton where {
-     castData = ( gTypeRadioButton , castToRadioButton )
- } ;
- instance CanBeCasted RadioMenuItem where {
-     castData = ( gTypeRadioMenuItem , castToRadioMenuItem )
- } ;
- instance CanBeCasted RadioToolButton where {
-     castData = ( gTypeRadioToolButton , castToRadioToolButton )
- } ;
- instance CanBeCasted Range where {
-     castData = ( gTypeRange , castToRange )
- } ;
--- instance CanBeCasted Registry where {
---     castData = ( gTypeRegistry , castToRegistry )
--- } ;
- instance CanBeCasted Scale where {
-     castData = ( gTypeScale , castToScale )
- } ;
- instance CanBeCasted Screen where {
-     castData = ( gTypeScreen , castToScreen )
- } ;
- instance CanBeCasted Scrollbar where {
-     castData = ( gTypeScrollbar , castToScrollbar )
- } ;
- instance CanBeCasted ScrolledWindow where {
-     castData = ( gTypeScrolledWindow , castToScrolledWindow )
- } ;
- instance CanBeCasted Separator where {
-     castData = ( gTypeSeparator , castToSeparator )
- } ;
- instance CanBeCasted SeparatorMenuItem where {
-     castData = ( gTypeSeparatorMenuItem , castToSeparatorMenuItem )
- } ;
- instance CanBeCasted SeparatorToolItem where {
-     castData = ( gTypeSeparatorToolItem , castToSeparatorToolItem )
- } ;
- instance CanBeCasted SizeGroup where {
-     castData = ( gTypeSizeGroup , castToSizeGroup )
- } ;
- instance CanBeCasted Socket where {
-     castData = ( gTypeSocket , castToSocket )
- } ;
--- instance CanBeCasted SourceBuffer where {
---     castData = ( gTypeSourceBuffer , castToSourceBuffer )
--- } ;
--- instance CanBeCasted SourceLanguage where {
---     castData = ( gTypeSourceLanguage , castToSourceLanguage )
--- } ;
--- instance CanBeCasted SourceLanguageManager where {
---     castData = ( gTypeSourceLanguageManager , castToSourceLanguageManager )
--- } ;
--- instance CanBeCasted SourceMark where {
---     castData = ( gTypeSourceMark , castToSourceMark )
--- } ;
--- instance CanBeCasted SourceStyleScheme where {
---     castData = ( gTypeSourceStyleScheme , castToSourceStyleScheme )
--- } ;
--- instance CanBeCasted SourceView where {
---     castData = ( gTypeSourceView , castToSourceView )
--- } ;
- instance CanBeCasted SpinButton where {
-     castData = ( gTypeSpinButton , castToSpinButton )
- } ;
- instance CanBeCasted StatusIcon where {
-     castData = ( gTypeStatusIcon , castToStatusIcon )
- } ;
- instance CanBeCasted Statusbar where {
-     castData = ( gTypeStatusbar , castToStatusbar )
- } ;
- instance CanBeCasted Style where {
-     castData = ( gTypeStyle , castToStyle )
- } ;
--- instance CanBeCasted SystemClock where {
---     castData = ( gTypeSystemClock , castToSystemClock )
--- } ;
- instance CanBeCasted Table where {
-     castData = ( gTypeTable , castToTable )
- } ;
- instance CanBeCasted TearoffMenuItem where {
-     castData = ( gTypeTearoffMenuItem , castToTearoffMenuItem )
- } ;
- instance CanBeCasted TextBuffer where {
-     castData = ( gTypeTextBuffer , castToTextBuffer )
- } ;
- instance CanBeCasted TextMark where {
-     castData = ( gTypeTextMark , castToTextMark )
- } ;
- instance CanBeCasted TextTag where {
-     castData = ( gTypeTextTag , castToTextTag )
- } ;
- instance CanBeCasted TextTagTable where {
-     castData = ( gTypeTextTagTable , castToTextTagTable )
- } ;
- instance CanBeCasted TextView where {
-     castData = ( gTypeTextView , castToTextView )
- } ;
- instance CanBeCasted ToggleAction where {
-     castData = ( gTypeToggleAction , castToToggleAction )
- } ;
- instance CanBeCasted ToggleButton where {
-     castData = ( gTypeToggleButton , castToToggleButton )
- } ;
- instance CanBeCasted ToggleToolButton where {
-     castData = ( gTypeToggleToolButton , castToToggleToolButton )
- } ;
- instance CanBeCasted ToolButton where {
-     castData = ( gTypeToolButton , castToToolButton )
- } ;
- instance CanBeCasted ToolItem where {
-     castData = ( gTypeToolItem , castToToolItem )
- } ;
- instance CanBeCasted Toolbar where {
-     castData = ( gTypeToolbar , castToToolbar )
- } ;
- instance CanBeCasted Tooltips where {
-     castData = ( gTypeTooltips , castToTooltips )
- } ;
- instance CanBeCasted TreeModel where {
-     castData = ( gTypeTreeModel , castToTreeModel )
- } ;
- instance CanBeCasted TreeModelSort where {
-     castData = ( gTypeTreeModelSort , castToTreeModelSort )
- } ;
- instance CanBeCasted TreeSelection where {
-     castData = ( gTypeTreeSelection , castToTreeSelection )
- } ;
- instance CanBeCasted TreeSortable where {
-     castData = ( gTypeTreeSortable , castToTreeSortable )
- } ;
- instance CanBeCasted TreeView where {
-     castData = ( gTypeTreeView , castToTreeView )
- } ;
- instance CanBeCasted TreeViewColumn where {
-     castData = ( gTypeTreeViewColumn , castToTreeViewColumn )
- } ;
- instance CanBeCasted UIManager where {
-     castData = ( gTypeUIManager , castToUIManager )
- } ;
- instance CanBeCasted VBox where {
-     castData = ( gTypeVBox , castToVBox )
- } ;
- instance CanBeCasted VButtonBox where {
-     castData = ( gTypeVButtonBox , castToVButtonBox )
- } ;
- instance CanBeCasted VPaned where {
-     castData = ( gTypeVPaned , castToVPaned )
- } ;
- instance CanBeCasted VScale where {
-     castData = ( gTypeVScale , castToVScale )
- } ;
- instance CanBeCasted VScrollbar where {
-     castData = ( gTypeVScrollbar , castToVScrollbar )
- } ;
- instance CanBeCasted VSeparator where {
-     castData = ( gTypeVSeparator , castToVSeparator )
- } ;
- instance CanBeCasted Viewport where {
-     castData = ( gTypeViewport , castToViewport )
- } ;
--- instance CanBeCasted Volume where {
---     castData = ( gTypeVolume , castToVolume )
--- } ;
- instance CanBeCasted Widget where {
-     castData = ( gTypeWidget , castToWidget )
- } ;
- instance CanBeCasted Window where {
-     castData = ( gTypeWindow , castToWindow )
- } ;
- instance CanBeCasted WindowGroup where {
-     castData = ( gTypeWindowGroup , castToWindowGroup )
- }
-
-}
diff --git a/src/Graphics/UI/Gtk/Layout/Rpn.hs b/src/Graphics/UI/Gtk/Layout/Rpn.hs
--- a/src/Graphics/UI/Gtk/Layout/Rpn.hs
+++ b/src/Graphics/UI/Gtk/Layout/Rpn.hs
@@ -7,7 +7,7 @@
 import Data.IORef ;
 import Data.Maybe ;
 import Data.List ;
-import CanBeCasted ;
+import Graphics.UI.Gtk.Layout.Rpn.CanBeCasted ;
 
  doNothing :: (Monad m) => m () ;
  doNothing = return () ;
diff --git a/src/Graphics/UI/Gtk/Layout/Rpn/CanBeCasted.hs b/src/Graphics/UI/Gtk/Layout/Rpn/CanBeCasted.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/UI/Gtk/Layout/Rpn/CanBeCasted.hs
@@ -0,0 +1,508 @@
+module Graphics.UI.Gtk.Layout.Rpn.CanBeCasted where {
+import Graphics.UI.Gtk ;
+import Graphics.UI.Gtk.Types ;
+
+ class ( GObjectClass g ) => CanBeCasted g where {
+     glibCast :: ( GObjectClass o ) => o -> Maybe g ;
+     glibCast a = if isA a t then Just ( c a ) else Nothing
+         where { ( t , c ) = castData } ;
+     castData :: ( GObjectClass g1 ) => ( GType , g1 -> g )
+ } ;
+
+ instance CanBeCasted AboutDialog where {
+     castData = ( gTypeAboutDialog , castToAboutDialog )
+ } ;
+ instance CanBeCasted AccelLabel where {
+     castData = ( gTypeAccelLabel , castToAccelLabel )
+ } ;
+ instance CanBeCasted Action where {
+     castData = ( gTypeAction , castToAction )
+ } ;
+ instance CanBeCasted ActionGroup where {
+     castData = ( gTypeActionGroup , castToActionGroup )
+ } ;
+-- instance CanBeCasted Adapter where {
+--     castData = ( gTypeAdapter , castToAdapter )
+-- } ;
+ instance CanBeCasted Adjustment where {
+     castData = ( gTypeAdjustment , castToAdjustment )
+ } ;
+ instance CanBeCasted Alignment where {
+     castData = ( gTypeAlignment , castToAlignment )
+ } ;
+ instance CanBeCasted Arrow where {
+     castData = ( gTypeArrow , castToArrow )
+ } ;
+ instance CanBeCasted AspectFrame where {
+     castData = ( gTypeAspectFrame , castToAspectFrame )
+ } ;
+-- instance CanBeCasted BaseSink where {
+--     castData = ( gTypeBaseSink , castToBaseSink )
+-- } ;
+-- instance CanBeCasted BaseSrc where {
+--     castData = ( gTypeBaseSrc , castToBaseSrc )
+-- } ;
+-- instance CanBeCasted BaseTransform where {
+--     castData = ( gTypeBaseTransform , castToBaseTransform )
+-- } ;
+ instance CanBeCasted Bin where {
+     castData = ( gTypeBin , castToBin )
+ } ;
+ instance CanBeCasted Box where {
+     castData = ( gTypeBox , castToBox )
+ } ;
+-- instance CanBeCasted Buffer where {
+--     castData = ( gTypeBuffer , castToBuffer )
+-- } ;
+-- instance CanBeCasted Bus where {
+--     castData = ( gTypeBus , castToBus )
+-- } ;
+ instance CanBeCasted Button where {
+     castData = ( gTypeButton , castToButton )
+ } ;
+ instance CanBeCasted ButtonBox where {
+     castData = ( gTypeButtonBox , castToButtonBox )
+ } ;
+ instance CanBeCasted Calendar where {
+     castData = ( gTypeCalendar , castToCalendar )
+ } ;
+ instance CanBeCasted CellRenderer where {
+     castData = ( gTypeCellRenderer , castToCellRenderer )
+ } ;
+ instance CanBeCasted CellRendererCombo where {
+     castData = ( gTypeCellRendererCombo , castToCellRendererCombo )
+ } ;
+ instance CanBeCasted CellRendererPixbuf where {
+     castData = ( gTypeCellRendererPixbuf , castToCellRendererPixbuf )
+ } ;
+ instance CanBeCasted CellRendererProgress where {
+     castData = ( gTypeCellRendererProgress , castToCellRendererProgress )
+ } ;
+ instance CanBeCasted CellRendererText where {
+     castData = ( gTypeCellRendererText , castToCellRendererText )
+ } ;
+ instance CanBeCasted CellRendererToggle where {
+     castData = ( gTypeCellRendererToggle , castToCellRendererToggle )
+ } ;
+ instance CanBeCasted CellView where {
+     castData = ( gTypeCellView , castToCellView )
+ } ;
+ instance CanBeCasted CheckButton where {
+     castData = ( gTypeCheckButton , castToCheckButton )
+ } ;
+ instance CanBeCasted CheckMenuItem where {
+     castData = ( gTypeCheckMenuItem , castToCheckMenuItem )
+ } ;
+ instance CanBeCasted Clipboard where {
+     castData = ( gTypeClipboard , castToClipboard )
+ } ;
+-- instance CanBeCasted Clock where {
+--     castData = ( gTypeClock , castToClock )
+-- } ;
+ instance CanBeCasted ColorButton where {
+     castData = ( gTypeColorButton , castToColorButton )
+ } ;
+ instance CanBeCasted ColorSelection where {
+     castData = ( gTypeColorSelection , castToColorSelection )
+ } ;
+ instance CanBeCasted ColorSelectionDialog where {
+     castData = ( gTypeColorSelectionDialog , castToColorSelectionDialog )
+ } ;
+ instance CanBeCasted Combo where {
+     castData = ( gTypeCombo , castToCombo )
+ } ;
+ instance CanBeCasted ComboBox where {
+     castData = ( gTypeComboBox , castToComboBox )
+ } ;
+ instance CanBeCasted ComboBoxEntry where {
+     castData = ( gTypeComboBoxEntry , castToComboBoxEntry )
+ } ;
+ instance CanBeCasted Container where {
+     castData = ( gTypeContainer , castToContainer )
+ } ;
+ instance CanBeCasted Dialog where {
+     castData = ( gTypeDialog , castToDialog )
+ } ;
+ instance CanBeCasted DragContext where {
+     castData = ( gTypeDragContext , castToDragContext )
+ } ;
+ instance CanBeCasted DrawWindow where {
+     castData = ( gTypeDrawWindow , castToDrawWindow )
+ } ;
+ instance CanBeCasted Drawable where {
+     castData = ( gTypeDrawable , castToDrawable )
+ } ;
+ instance CanBeCasted DrawingArea where {
+     castData = ( gTypeDrawingArea , castToDrawingArea )
+ } ;
+-- instance CanBeCasted Drive where {
+--     castData = ( gTypeDrive , castToDrive )
+-- } ;
+ instance CanBeCasted Editable where {
+     castData = ( gTypeEditable , castToEditable )
+ } ;
+-- instance CanBeCasted Element where {
+--     castData = ( gTypeElement , castToElement )
+-- } ;
+-- instance CanBeCasted ElementFactory where {
+--     castData = ( gTypeElementFactory , castToElementFactory )
+-- } ;
+ instance CanBeCasted Entry where {
+     castData = ( gTypeEntry , castToEntry )
+ } ;
+ instance CanBeCasted EntryCompletion where {
+     castData = ( gTypeEntryCompletion , castToEntryCompletion )
+ } ;
+ instance CanBeCasted EventBox where {
+     castData = ( gTypeEventBox , castToEventBox )
+ } ;
+ instance CanBeCasted Expander where {
+     castData = ( gTypeExpander , castToExpander )
+ } ;
+ instance CanBeCasted FileChooser where {
+     castData = ( gTypeFileChooser , castToFileChooser )
+ } ;
+ instance CanBeCasted FileChooserButton where {
+     castData = ( gTypeFileChooserButton , castToFileChooserButton )
+ } ;
+ instance CanBeCasted FileChooserDialog where {
+     castData = ( gTypeFileChooserDialog , castToFileChooserDialog )
+ } ;
+ instance CanBeCasted FileChooserWidget where {
+     castData = ( gTypeFileChooserWidget , castToFileChooserWidget )
+ } ;
+ instance CanBeCasted FileFilter where {
+     castData = ( gTypeFileFilter , castToFileFilter )
+ } ;
+ instance CanBeCasted FileSelection where {
+     castData = ( gTypeFileSelection , castToFileSelection )
+ } ;
+ instance CanBeCasted Fixed where {
+     castData = ( gTypeFixed , castToFixed )
+ } ;
+ instance CanBeCasted FontButton where {
+     castData = ( gTypeFontButton , castToFontButton )
+ } ;
+ instance CanBeCasted FontSelection where {
+     castData = ( gTypeFontSelection , castToFontSelection )
+ } ;
+ instance CanBeCasted FontSelectionDialog where {
+     castData = ( gTypeFontSelectionDialog , castToFontSelectionDialog )
+ } ;
+ instance CanBeCasted Frame where {
+     castData = ( gTypeFrame , castToFrame )
+ } ;
+ instance CanBeCasted GC where {
+     castData = ( gTypeGC , castToGC )
+ } ;
+-- instance CanBeCasted GLConfig where {
+--     castData = ( gTypeGLConfig , castToGLConfig )
+-- } ;
+-- instance CanBeCasted GLContext where {
+--     castData = ( gTypeGLContext , castToGLContext )
+-- } ;
+-- instance CanBeCasted GLDrawable where {
+--     castData = ( gTypeGLDrawable , castToGLDrawable )
+-- } ;
+-- instance CanBeCasted GLPixmap where {
+--     castData = ( gTypeGLPixmap , castToGLPixmap )
+-- } ;
+-- instance CanBeCasted GLWindow where {
+--     castData = ( gTypeGLWindow , castToGLWindow )
+-- } ;
+-- instance CanBeCasted GhostPad where {
+--     castData = ( gTypeGhostPad , castToGhostPad )
+-- } ;
+ instance CanBeCasted HBox where {
+     castData = ( gTypeHBox , castToHBox )
+ } ;
+ instance CanBeCasted HButtonBox where {
+     castData = ( gTypeHButtonBox , castToHButtonBox )
+ } ;
+ instance CanBeCasted HPaned where {
+     castData = ( gTypeHPaned , castToHPaned )
+ } ;
+ instance CanBeCasted HScale where {
+     castData = ( gTypeHScale , castToHScale )
+ } ;
+ instance CanBeCasted HScrollbar where {
+     castData = ( gTypeHScrollbar , castToHScrollbar )
+ } ;
+ instance CanBeCasted HSeparator where {
+     castData = ( gTypeHSeparator , castToHSeparator )
+ } ;
+ instance CanBeCasted HandleBox where {
+     castData = ( gTypeHandleBox , castToHandleBox )
+ } ;
+ instance CanBeCasted IconFactory where {
+     castData = ( gTypeIconFactory , castToIconFactory )
+ } ;
+ instance CanBeCasted IconView where {
+     castData = ( gTypeIconView , castToIconView )
+ } ;
+ instance CanBeCasted Image where {
+     castData = ( gTypeImage , castToImage )
+ } ;
+ instance CanBeCasted ImageMenuItem where {
+     castData = ( gTypeImageMenuItem , castToImageMenuItem )
+ } ;
+-- instance CanBeCasted ImplementsInterface where {
+--     castData = ( gTypeImplementsInterface , castToImplementsInterface )
+-- } ;
+-- instance CanBeCasted Index where {
+--     castData = ( gTypeIndex , castToIndex )
+-- } ;
+-- instance CanBeCasted IndexFactory where {
+--     castData = ( gTypeIndexFactory , castToIndexFactory )
+-- } ;
+ instance CanBeCasted Label where {
+     castData = ( gTypeLabel , castToLabel )
+ } ;
+ instance CanBeCasted Layout where {
+     castData = ( gTypeLayout , castToLayout )
+ } ;
+ instance CanBeCasted Menu where {
+     castData = ( gTypeMenu , castToMenu )
+ } ;
+ instance CanBeCasted MenuBar where {
+     castData = ( gTypeMenuBar , castToMenuBar )
+ } ;
+ instance CanBeCasted MenuItem where {
+     castData = ( gTypeMenuItem , castToMenuItem )
+ } ;
+ instance CanBeCasted MenuShell where {
+     castData = ( gTypeMenuShell , castToMenuShell )
+ } ;
+ instance CanBeCasted MenuToolButton where {
+     castData = ( gTypeMenuToolButton , castToMenuToolButton )
+ } ;
+-- instance CanBeCasted Message where {
+--     castData = ( gTypeMessage , castToMessage )
+-- } ;
+ instance CanBeCasted MessageDialog where {
+     castData = ( gTypeMessageDialog , castToMessageDialog )
+ } ;
+-- instance CanBeCasted MiniObject where {
+--     castData = ( gTypeMiniObject , castToMiniObject )
+-- } ;
+ instance CanBeCasted Misc where {
+     castData = ( gTypeMisc , castToMisc )
+ } ;
+ instance CanBeCasted Notebook where {
+     castData = ( gTypeNotebook , castToNotebook )
+ } ;
+ instance CanBeCasted Object where {
+     castData = ( gTypeObject , castToObject )
+ } ;
+ instance CanBeCasted OptionMenu where {
+     castData = ( gTypeOptionMenu , castToOptionMenu )
+ } ;
+-- instance CanBeCasted Pad where {
+--     castData = ( gTypePad , castToPad )
+-- } ;
+-- instance CanBeCasted PadTemplate where {
+--     castData = ( gTypePadTemplate , castToPadTemplate )
+-- } ;
+ instance CanBeCasted Paned where {
+     castData = ( gTypePaned , castToPaned )
+ } ;
+-- instance CanBeCasted Pipeline where {
+--     castData = ( gTypePipeline , castToPipeline )
+-- } ;
+ instance CanBeCasted Pixbuf where {
+     castData = ( gTypePixbuf , castToPixbuf )
+ } ;
+ instance CanBeCasted Plug where {
+     castData = ( gTypePlug , castToPlug )
+ } ;
+-- instance CanBeCasted Plugin where {
+--     castData = ( gTypePlugin , castToPlugin )
+-- } ;
+-- instance CanBeCasted PluginFeature where {
+--     castData = ( gTypePluginFeature , castToPluginFeature )
+-- } ;
+ instance CanBeCasted ProgressBar where {
+     castData = ( gTypeProgressBar , castToProgressBar )
+ } ;
+-- instance CanBeCasted PushSrc where {
+--     castData = ( gTypePushSrc , castToPushSrc )
+-- } ;
+-- instance CanBeCasted Query where {
+--     castData = ( gTypeQuery , castToQuery )
+-- } ;
+ instance CanBeCasted RadioAction where {
+     castData = ( gTypeRadioAction , castToRadioAction )
+ } ;
+ instance CanBeCasted RadioButton where {
+     castData = ( gTypeRadioButton , castToRadioButton )
+ } ;
+ instance CanBeCasted RadioMenuItem where {
+     castData = ( gTypeRadioMenuItem , castToRadioMenuItem )
+ } ;
+ instance CanBeCasted RadioToolButton where {
+     castData = ( gTypeRadioToolButton , castToRadioToolButton )
+ } ;
+ instance CanBeCasted Range where {
+     castData = ( gTypeRange , castToRange )
+ } ;
+-- instance CanBeCasted Registry where {
+--     castData = ( gTypeRegistry , castToRegistry )
+-- } ;
+ instance CanBeCasted Scale where {
+     castData = ( gTypeScale , castToScale )
+ } ;
+ instance CanBeCasted Screen where {
+     castData = ( gTypeScreen , castToScreen )
+ } ;
+ instance CanBeCasted Scrollbar where {
+     castData = ( gTypeScrollbar , castToScrollbar )
+ } ;
+ instance CanBeCasted ScrolledWindow where {
+     castData = ( gTypeScrolledWindow , castToScrolledWindow )
+ } ;
+ instance CanBeCasted Separator where {
+     castData = ( gTypeSeparator , castToSeparator )
+ } ;
+ instance CanBeCasted SeparatorMenuItem where {
+     castData = ( gTypeSeparatorMenuItem , castToSeparatorMenuItem )
+ } ;
+ instance CanBeCasted SeparatorToolItem where {
+     castData = ( gTypeSeparatorToolItem , castToSeparatorToolItem )
+ } ;
+ instance CanBeCasted SizeGroup where {
+     castData = ( gTypeSizeGroup , castToSizeGroup )
+ } ;
+ instance CanBeCasted Socket where {
+     castData = ( gTypeSocket , castToSocket )
+ } ;
+-- instance CanBeCasted SourceBuffer where {
+--     castData = ( gTypeSourceBuffer , castToSourceBuffer )
+-- } ;
+-- instance CanBeCasted SourceLanguage where {
+--     castData = ( gTypeSourceLanguage , castToSourceLanguage )
+-- } ;
+-- instance CanBeCasted SourceLanguageManager where {
+--     castData = ( gTypeSourceLanguageManager , castToSourceLanguageManager )
+-- } ;
+-- instance CanBeCasted SourceMark where {
+--     castData = ( gTypeSourceMark , castToSourceMark )
+-- } ;
+-- instance CanBeCasted SourceStyleScheme where {
+--     castData = ( gTypeSourceStyleScheme , castToSourceStyleScheme )
+-- } ;
+-- instance CanBeCasted SourceView where {
+--     castData = ( gTypeSourceView , castToSourceView )
+-- } ;
+ instance CanBeCasted SpinButton where {
+     castData = ( gTypeSpinButton , castToSpinButton )
+ } ;
+ instance CanBeCasted StatusIcon where {
+     castData = ( gTypeStatusIcon , castToStatusIcon )
+ } ;
+ instance CanBeCasted Statusbar where {
+     castData = ( gTypeStatusbar , castToStatusbar )
+ } ;
+ instance CanBeCasted Style where {
+     castData = ( gTypeStyle , castToStyle )
+ } ;
+-- instance CanBeCasted SystemClock where {
+--     castData = ( gTypeSystemClock , castToSystemClock )
+-- } ;
+ instance CanBeCasted Table where {
+     castData = ( gTypeTable , castToTable )
+ } ;
+ instance CanBeCasted TearoffMenuItem where {
+     castData = ( gTypeTearoffMenuItem , castToTearoffMenuItem )
+ } ;
+ instance CanBeCasted TextBuffer where {
+     castData = ( gTypeTextBuffer , castToTextBuffer )
+ } ;
+ instance CanBeCasted TextMark where {
+     castData = ( gTypeTextMark , castToTextMark )
+ } ;
+ instance CanBeCasted TextTag where {
+     castData = ( gTypeTextTag , castToTextTag )
+ } ;
+ instance CanBeCasted TextTagTable where {
+     castData = ( gTypeTextTagTable , castToTextTagTable )
+ } ;
+ instance CanBeCasted TextView where {
+     castData = ( gTypeTextView , castToTextView )
+ } ;
+ instance CanBeCasted ToggleAction where {
+     castData = ( gTypeToggleAction , castToToggleAction )
+ } ;
+ instance CanBeCasted ToggleButton where {
+     castData = ( gTypeToggleButton , castToToggleButton )
+ } ;
+ instance CanBeCasted ToggleToolButton where {
+     castData = ( gTypeToggleToolButton , castToToggleToolButton )
+ } ;
+ instance CanBeCasted ToolButton where {
+     castData = ( gTypeToolButton , castToToolButton )
+ } ;
+ instance CanBeCasted ToolItem where {
+     castData = ( gTypeToolItem , castToToolItem )
+ } ;
+ instance CanBeCasted Toolbar where {
+     castData = ( gTypeToolbar , castToToolbar )
+ } ;
+ instance CanBeCasted Tooltips where {
+     castData = ( gTypeTooltips , castToTooltips )
+ } ;
+ instance CanBeCasted TreeModel where {
+     castData = ( gTypeTreeModel , castToTreeModel )
+ } ;
+ instance CanBeCasted TreeModelSort where {
+     castData = ( gTypeTreeModelSort , castToTreeModelSort )
+ } ;
+ instance CanBeCasted TreeSelection where {
+     castData = ( gTypeTreeSelection , castToTreeSelection )
+ } ;
+ instance CanBeCasted TreeSortable where {
+     castData = ( gTypeTreeSortable , castToTreeSortable )
+ } ;
+ instance CanBeCasted TreeView where {
+     castData = ( gTypeTreeView , castToTreeView )
+ } ;
+ instance CanBeCasted TreeViewColumn where {
+     castData = ( gTypeTreeViewColumn , castToTreeViewColumn )
+ } ;
+ instance CanBeCasted UIManager where {
+     castData = ( gTypeUIManager , castToUIManager )
+ } ;
+ instance CanBeCasted VBox where {
+     castData = ( gTypeVBox , castToVBox )
+ } ;
+ instance CanBeCasted VButtonBox where {
+     castData = ( gTypeVButtonBox , castToVButtonBox )
+ } ;
+ instance CanBeCasted VPaned where {
+     castData = ( gTypeVPaned , castToVPaned )
+ } ;
+ instance CanBeCasted VScale where {
+     castData = ( gTypeVScale , castToVScale )
+ } ;
+ instance CanBeCasted VScrollbar where {
+     castData = ( gTypeVScrollbar , castToVScrollbar )
+ } ;
+ instance CanBeCasted VSeparator where {
+     castData = ( gTypeVSeparator , castToVSeparator )
+ } ;
+ instance CanBeCasted Viewport where {
+     castData = ( gTypeViewport , castToViewport )
+ } ;
+-- instance CanBeCasted Volume where {
+--     castData = ( gTypeVolume , castToVolume )
+-- } ;
+ instance CanBeCasted Widget where {
+     castData = ( gTypeWidget , castToWidget )
+ } ;
+ instance CanBeCasted Window where {
+     castData = ( gTypeWindow , castToWindow )
+ } ;
+ instance CanBeCasted WindowGroup where {
+     castData = ( gTypeWindowGroup , castToWindowGroup )
+ }
+
+}
diff --git a/src/example.hs b/src/example.hs
deleted file mode 100644
--- a/src/example.hs
+++ /dev/null
@@ -1,60 +0,0 @@
-module Main where
-import Graphics.UI.Gtk
-import Graphics.UI.Gtk.Gdk.EventM
-import Graphics.Rendering.Cairo
-import Graphics.UI.Gtk.Layout.Rpn
-import Data.Monoid
-
-title :: String -> [AttrOp Window]
-title s = [windowTitle := s]
-pressed :: Signal Widget (EventM EButton Bool)
-pressed = buttonPressEvent
-
-main = do
-    initGUI
-
-    -- Create a new operator ('line') that takes a label
-    -- ('cLBL') and a button ('cBTNL') and pack then ('pBPED')
-    -- in a horizontal box ('cHBX').
-
-    let line s = mconcat [
-         cLBL (Just $ s ++ ":"),
-         cBTNL s,
-         cHBX True 0,
-         pBPED,
-         pBPED]
-
-    -- Create a new operator ('column') that packs many 'line'
-    -- in a vertical box ('cVBX').
-
-    let column = mconcat $ [
-         line "One Button",
-         line "Another Button",
-         line "Yet Another Button",
-         line "Last Button",
-         cVBX True 0] ++ replicate 4 pBPED
-
-    -- Take two copies of 'column' and add ('pNAP') then
-    -- to a notebook ('cNBK'). Then create a stock button
-    -- ('cBTNSTK') and attach a action to an event ('tON'). Then
-    -- join the notebook and that button in a vertical box.
-    -- Insert everything in a main window ('cWND, pCA'), and
-    -- finally make everything into widgets ('widgetsFromRpn').
-
-    [mainWindow] <- widgetsFromRpn $ mconcat $ [
-         column,
-         column,
-         cNBK,
-         pNAP "First Page",
-         pNAP "Second Page",
-         cBTNSTK stockQuit,
-         tON pressed (liftIO mainQuit >> return True),
-         cVBX False 0,
-         pBPE PackNatural 0,
-         pBPED,
-         cWND,
-         pCA,
-         tSET (title "Layout.RPN Example")]
-
-    widgetShowAll mainWindow
-    mainGUI
diff --git a/src/rpnCompilar.hs b/src/rpnCompilar.hs
deleted file mode 100644
--- a/src/rpnCompilar.hs
+++ /dev/null
@@ -1,8 +0,0 @@
-module Main where {
-import Graphics.UI.Gtk ;
-import Graphics.Rendering.Cairo ;
-import Graphics.UI.Gtk.Layout.Rpn ;
-
- main = return ()
-
-}
diff --git a/src/rpnTeste.hs b/src/rpnTeste.hs
deleted file mode 100644
--- a/src/rpnTeste.hs
+++ /dev/null
@@ -1,37 +0,0 @@
-module Main where {
-import Data.Monoid ;
-import Graphics.UI.Gtk ; import Graphics.UI.Gtk.Layout.Rpn ;
-import Graphics.Rendering.Cairo ;
-
- main = do {
-
-     initGUI ;
-
-     janelaPrincipal <- windowNew ; onDestroy janelaPrincipal mainQuit ;
-
-     [ w ] <- widgetsFromRpn $ mconcat [
-
-         cBTNSTK stockAbout ,
-         cBTNSTK stockQuit ,
-         cHBXBTN ,
-         pCA ,
-         pCA ,
-         cLBL $ Just "<b> Oi! </b>" ,
-         tSET $ ([labelUseMarkup := True] :: [AttrOp Label]) ,
-         cDRW ,
-         cVPD ,
-         pPA2 ,
-         pPA1 ,
-         cVBX False 0 ,
-         pBPE PackGrow 0 ,
-         pBPE PackNatural 0
-
-     ] ;
-
-     containerAdd janelaPrincipal w ;
-
-     widgetShowAll janelaPrincipal ;    mainGUI
-
- }
-
-}
diff --git a/src/rpnTeste2.hs b/src/rpnTeste2.hs
deleted file mode 100644
--- a/src/rpnTeste2.hs
+++ /dev/null
@@ -1,108 +0,0 @@
-module Main where {
-import Graphics.UI.Gtk ;
-import Graphics.UI.Gtk.Layout.Rpn ;
-import Graphics.Rendering.Cairo ;
-import Data.Monoid ;
-import Data.IORef ;
-
-desenharQuadrados = do {
-    dw <- eventWindow ;
-    (w,h) <- drawableGetSize ;
-
-dQ :: IORef (Double,Double) -> Int -> RPN ;
-dQ ior n = mconcat [
-    cDRW ,
-    tON widgetExposeEvent desenharQuadrados ,
-    cFRM ,
-    tSET label ,
-    pCA
- ] where {
-    widgetExposeEvent :: Signal Widget (EventM ECrossing Bool) ;
-    widgetExposeEvent = exposeEvent ;
-    label :: [AttrOp Frame] ;
-    label = [frameLabel := ( show n ++ " cm" )] ;
-    desenharQuadrados = do {
-        dw <- eventWindow ;
-        (w,h) <- drawableGetSize ;
-        let (w',h') = (fromIntegral w, fromIntegral h) ;
-        (eX,eY) <- readIORef ior ;
-        xs <- [0,n'*eX..w'] ;
-        ys <- [0,n'*eY..h'] ;
-        renderWithDrawable dw $ do {
-
-
-main = do {
-
- initGUI ;
-
-     janelaPrincipal <- windowNew ;
-
-     proporções <- newIORef ( 10 , 10 ) ;
-
-     let {
-         atualizarX = \v -> modifyIORef proporções $ \( _ , y ) -> ( 200 / v , y ) ;
-         atualizarY = \v -> modifyIORef proporções $ \( x , _ ) -> ( x , 200 / v ) ;
-         desenharQuadrados n = do {
-             ( px , py ) <- readIORef proporções ;
-             return $ Just $ \( w , h ) -> do {
-                 let { dx = n * px ; dy = n * py } ;
-                 sequence $ ( flip map ) [ 0 , dx .. w ] $
-                  \v -> moveTo v 0 >> lineTo v h ;
-                 sequence $ ( flip map ) [ 0 , dy .. h ] $
-                  \v -> moveTo 0 v >> lineTo w v ;
-                 stroke
-             } ;
-         } ;
-         janelinha n = mconcat [
-             rpnCairoLiveShape ( desenharQuadrados n ) 2000 ,
-             rpnFrame $ Just $ "<b> Quadrados de " ++ show n ++ " <i> cm </i></b>"
-         ] ;
-     } ;
-
-     [conteúdo] <- widgetFromRpn $ mconcat [
-
-         rpnCairoShape $ const $ rectangle 10 10 200 200 >> stroke ,
-         rpnMinimumSize 220 220 ,
-
-         rpnSetOrientation OrientationVertical ,
-         rpnScale 2 10 20 1 ( Just PosRight ) atualizarY ,
-
-         rpnSetOrientation OrientationHorizontal ,
-         rpnBox [ PackGrow , PackNatural ] ,
-
-         rpnSetOrientation OrientationHorizontal ,
-         rpnScale 2 10 20 1 ( Just PosBottom ) atualizarX ,
-
-         rpnSetOrientation OrientationVertical ,
-         rpnBox [ PackNatural , PackNatural ] ,
-
-         rpnSetAlign ( 0.5 , 0.5 ) ,
-         rpnAlign 0 0 ,
-
-         rpnSetOrientation OrientationHorizontal ,
-         rpnStockButton stockQuit mainQuit ,
-         rpnButtonBox ButtonboxCenter [False] ,
-
-         rpnSetOrientation OrientationVertical ,
-         rpnBox [ PackGrow , PackNatural ] ,
-
-         janelinha 1 ,
-         janelinha 2 ,
-         janelinha 3 ,
-         rpnBox $ take 3 $ replicate 3 PackGrow ,
-
-         rpnSetOrientation OrientationHorizontal ,
-         rpnBox [ PackNatural , PackGrow ]
-
-     ] ;
-
-     containerAdd janelaPrincipal conteúdo ;
-
-     widgetShowAll janelaPrincipal ;
-
-     mainGUI
-
- }
-
-
-}
