diff --git a/HROOT.cabal b/HROOT.cabal
--- a/HROOT.cabal
+++ b/HROOT.cabal
@@ -1,5 +1,5 @@
 Name:		HROOT
-Version:	0.6.4
+Version:	0.6.4.1
 Synopsis:	Wrapper for ROOT
 Description: 	Haskell FFI binding for ROOT  
 Homepage:       http://ianwookim.org/HROOT
@@ -29,7 +29,7 @@
 --   default-language: Haskell2010
 --   type: exitcode-stdio-1.0
 --   main-is: compiletest.hs
---   build-depends: base>4, base<5, HROOT==0.6.4
+--   build-depends: base>4, base<5, HROOT==0.6.4.1
 --   hs-source-dirs: test
 
 Library
diff --git a/src/HROOT/Class/TArc.hs b/src/HROOT/Class/TArc.hs
--- a/src/HROOT/Class/TArc.hs
+++ b/src/HROOT/Class/TArc.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TArc
   (
     TArc(..)
-  , ITArc 
+  , ITArc
+  , upcastTArc 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TArray.hs b/src/HROOT/Class/TArray.hs
--- a/src/HROOT/Class/TArray.hs
+++ b/src/HROOT/Class/TArray.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TArray
   (
     TArray(..)
-  , ITArray 
+  , ITArray
+  , upcastTArray 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TArrayC.hs b/src/HROOT/Class/TArrayC.hs
--- a/src/HROOT/Class/TArrayC.hs
+++ b/src/HROOT/Class/TArrayC.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TArrayC
   (
     TArrayC(..)
-  , ITArrayC 
+  , ITArrayC
+  , upcastTArrayC 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TArrayD.hs b/src/HROOT/Class/TArrayD.hs
--- a/src/HROOT/Class/TArrayD.hs
+++ b/src/HROOT/Class/TArrayD.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TArrayD
   (
     TArrayD(..)
-  , ITArrayD 
+  , ITArrayD
+  , upcastTArrayD 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TArrayF.hs b/src/HROOT/Class/TArrayF.hs
--- a/src/HROOT/Class/TArrayF.hs
+++ b/src/HROOT/Class/TArrayF.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TArrayF
   (
     TArrayF(..)
-  , ITArrayF 
+  , ITArrayF
+  , upcastTArrayF 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TArrayI.hs b/src/HROOT/Class/TArrayI.hs
--- a/src/HROOT/Class/TArrayI.hs
+++ b/src/HROOT/Class/TArrayI.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TArrayI
   (
     TArrayI(..)
-  , ITArrayI 
+  , ITArrayI
+  , upcastTArrayI 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TArrayL.hs b/src/HROOT/Class/TArrayL.hs
--- a/src/HROOT/Class/TArrayL.hs
+++ b/src/HROOT/Class/TArrayL.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TArrayL
   (
     TArrayL(..)
-  , ITArrayL 
+  , ITArrayL
+  , upcastTArrayL 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TArrayL64.hs b/src/HROOT/Class/TArrayL64.hs
--- a/src/HROOT/Class/TArrayL64.hs
+++ b/src/HROOT/Class/TArrayL64.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TArrayL64
   (
     TArrayL64(..)
-  , ITArrayL64 
+  , ITArrayL64
+  , upcastTArrayL64 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TArrayS.hs b/src/HROOT/Class/TArrayS.hs
--- a/src/HROOT/Class/TArrayS.hs
+++ b/src/HROOT/Class/TArrayS.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TArrayS
   (
     TArrayS(..)
-  , ITArrayS 
+  , ITArrayS
+  , upcastTArrayS 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TArrow.hs b/src/HROOT/Class/TArrow.hs
--- a/src/HROOT/Class/TArrow.hs
+++ b/src/HROOT/Class/TArrow.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TArrow
   (
     TArrow(..)
-  , ITArrow 
+  , ITArrow
+  , upcastTArrow 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TAtt3D.hs b/src/HROOT/Class/TAtt3D.hs
--- a/src/HROOT/Class/TAtt3D.hs
+++ b/src/HROOT/Class/TAtt3D.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TAtt3D
   (
     TAtt3D(..)
-  , ITAtt3D 
+  , ITAtt3D
+  , upcastTAtt3D 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TAttAxis.hs b/src/HROOT/Class/TAttAxis.hs
--- a/src/HROOT/Class/TAttAxis.hs
+++ b/src/HROOT/Class/TAttAxis.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TAttAxis
   (
     TAttAxis(..)
-  , ITAttAxis(..) 
+  , ITAttAxis(..)
+  , upcastTAttAxis 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TAttBBox.hs b/src/HROOT/Class/TAttBBox.hs
--- a/src/HROOT/Class/TAttBBox.hs
+++ b/src/HROOT/Class/TAttBBox.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TAttBBox
   (
     TAttBBox(..)
-  , ITAttBBox 
+  , ITAttBBox
+  , upcastTAttBBox 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TAttCanvas.hs b/src/HROOT/Class/TAttCanvas.hs
--- a/src/HROOT/Class/TAttCanvas.hs
+++ b/src/HROOT/Class/TAttCanvas.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TAttCanvas
   (
     TAttCanvas(..)
-  , ITAttCanvas 
+  , ITAttCanvas
+  , upcastTAttCanvas 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TAttFill.hs b/src/HROOT/Class/TAttFill.hs
--- a/src/HROOT/Class/TAttFill.hs
+++ b/src/HROOT/Class/TAttFill.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TAttFill
   (
     TAttFill(..)
-  , ITAttFill(..) 
+  , ITAttFill(..)
+  , upcastTAttFill 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TAttImage.hs b/src/HROOT/Class/TAttImage.hs
--- a/src/HROOT/Class/TAttImage.hs
+++ b/src/HROOT/Class/TAttImage.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TAttImage
   (
     TAttImage(..)
-  , ITAttImage 
+  , ITAttImage
+  , upcastTAttImage 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TAttLine.hs b/src/HROOT/Class/TAttLine.hs
--- a/src/HROOT/Class/TAttLine.hs
+++ b/src/HROOT/Class/TAttLine.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TAttLine
   (
     TAttLine(..)
-  , ITAttLine(..) 
+  , ITAttLine(..)
+  , upcastTAttLine 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TAttMarker.hs b/src/HROOT/Class/TAttMarker.hs
--- a/src/HROOT/Class/TAttMarker.hs
+++ b/src/HROOT/Class/TAttMarker.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TAttMarker
   (
     TAttMarker(..)
-  , ITAttMarker 
+  , ITAttMarker
+  , upcastTAttMarker 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TAttPad.hs b/src/HROOT/Class/TAttPad.hs
--- a/src/HROOT/Class/TAttPad.hs
+++ b/src/HROOT/Class/TAttPad.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TAttPad
   (
     TAttPad(..)
-  , ITAttPad 
+  , ITAttPad
+  , upcastTAttPad 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TAttParticle.hs b/src/HROOT/Class/TAttParticle.hs
--- a/src/HROOT/Class/TAttParticle.hs
+++ b/src/HROOT/Class/TAttParticle.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TAttParticle
   (
     TAttParticle(..)
-  , ITAttParticle 
+  , ITAttParticle
+  , upcastTAttParticle 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TAttText.hs b/src/HROOT/Class/TAttText.hs
--- a/src/HROOT/Class/TAttText.hs
+++ b/src/HROOT/Class/TAttText.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TAttText
   (
     TAttText(..)
-  , ITAttText(..) 
+  , ITAttText(..)
+  , upcastTAttText 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TAxis.hs b/src/HROOT/Class/TAxis.hs
--- a/src/HROOT/Class/TAxis.hs
+++ b/src/HROOT/Class/TAxis.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TAxis
   (
     TAxis(..)
-  , ITAxis 
+  , ITAxis
+  , upcastTAxis 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TBRIK.hs b/src/HROOT/Class/TBRIK.hs
--- a/src/HROOT/Class/TBRIK.hs
+++ b/src/HROOT/Class/TBRIK.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TBRIK
   (
     TBRIK(..)
-  , ITBRIK 
+  , ITBRIK
+  , upcastTBRIK 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TBox.hs b/src/HROOT/Class/TBox.hs
--- a/src/HROOT/Class/TBox.hs
+++ b/src/HROOT/Class/TBox.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TBox
   (
     TBox(..)
-  , ITBox 
+  , ITBox
+  , upcastTBox 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TBranch.hs b/src/HROOT/Class/TBranch.hs
--- a/src/HROOT/Class/TBranch.hs
+++ b/src/HROOT/Class/TBranch.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TBranch
   (
     TBranch(..)
-  , ITBranch 
+  , ITBranch
+  , upcastTBranch 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TChain.hs b/src/HROOT/Class/TChain.hs
--- a/src/HROOT/Class/TChain.hs
+++ b/src/HROOT/Class/TChain.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TChain
   (
     TChain(..)
-  , ITChain 
+  , ITChain
+  , upcastTChain 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TClass.hs b/src/HROOT/Class/TClass.hs
--- a/src/HROOT/Class/TClass.hs
+++ b/src/HROOT/Class/TClass.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TClass
   (
     TClass(..)
-  , ITClass 
+  , ITClass
+  , upcastTClass 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TCollection.hs b/src/HROOT/Class/TCollection.hs
--- a/src/HROOT/Class/TCollection.hs
+++ b/src/HROOT/Class/TCollection.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TCollection
   (
     TCollection(..)
-  , ITCollection 
+  , ITCollection
+  , upcastTCollection 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TCrown.hs b/src/HROOT/Class/TCrown.hs
--- a/src/HROOT/Class/TCrown.hs
+++ b/src/HROOT/Class/TCrown.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TCrown
   (
     TCrown(..)
-  , ITCrown 
+  , ITCrown
+  , upcastTCrown 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TCurlyArc.hs b/src/HROOT/Class/TCurlyArc.hs
--- a/src/HROOT/Class/TCurlyArc.hs
+++ b/src/HROOT/Class/TCurlyArc.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TCurlyArc
   (
     TCurlyArc(..)
-  , ITCurlyArc 
+  , ITCurlyArc
+  , upcastTCurlyArc 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TCurlyLine.hs b/src/HROOT/Class/TCurlyLine.hs
--- a/src/HROOT/Class/TCurlyLine.hs
+++ b/src/HROOT/Class/TCurlyLine.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TCurlyLine
   (
     TCurlyLine(..)
-  , ITCurlyLine 
+  , ITCurlyLine
+  , upcastTCurlyLine 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TCutG.hs b/src/HROOT/Class/TCutG.hs
--- a/src/HROOT/Class/TCutG.hs
+++ b/src/HROOT/Class/TCutG.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TCutG
   (
     TCutG(..)
-  , ITCutG 
+  , ITCutG
+  , upcastTCutG 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TDiamond.hs b/src/HROOT/Class/TDiamond.hs
--- a/src/HROOT/Class/TDiamond.hs
+++ b/src/HROOT/Class/TDiamond.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TDiamond
   (
     TDiamond(..)
-  , ITDiamond 
+  , ITDiamond
+  , upcastTDiamond 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TDirectory.hs b/src/HROOT/Class/TDirectory.hs
--- a/src/HROOT/Class/TDirectory.hs
+++ b/src/HROOT/Class/TDirectory.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TDirectory
   (
     TDirectory(..)
-  , ITDirectory(..) 
+  , ITDirectory(..)
+  , upcastTDirectory 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TDirectoryFile.hs b/src/HROOT/Class/TDirectoryFile.hs
--- a/src/HROOT/Class/TDirectoryFile.hs
+++ b/src/HROOT/Class/TDirectoryFile.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TDirectoryFile
   (
     TDirectoryFile(..)
-  , ITDirectoryFile 
+  , ITDirectoryFile
+  , upcastTDirectoryFile 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TEfficiency.hs b/src/HROOT/Class/TEfficiency.hs
--- a/src/HROOT/Class/TEfficiency.hs
+++ b/src/HROOT/Class/TEfficiency.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TEfficiency
   (
     TEfficiency(..)
-  , ITEfficiency 
+  , ITEfficiency
+  , upcastTEfficiency 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TEllipse.hs b/src/HROOT/Class/TEllipse.hs
--- a/src/HROOT/Class/TEllipse.hs
+++ b/src/HROOT/Class/TEllipse.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TEllipse
   (
     TEllipse(..)
-  , ITEllipse 
+  , ITEllipse
+  , upcastTEllipse 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TF1.hs b/src/HROOT/Class/TF1.hs
--- a/src/HROOT/Class/TF1.hs
+++ b/src/HROOT/Class/TF1.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TF1
   (
     TF1(..)
-  , ITF1 
+  , ITF1
+  , upcastTF1 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TFile.hs b/src/HROOT/Class/TFile.hs
--- a/src/HROOT/Class/TFile.hs
+++ b/src/HROOT/Class/TFile.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TFile
   (
     TFile(..)
-  , ITFile 
+  , ITFile
+  , upcastTFile 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TFormula.hs b/src/HROOT/Class/TFormula.hs
--- a/src/HROOT/Class/TFormula.hs
+++ b/src/HROOT/Class/TFormula.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TFormula
   (
     TFormula(..)
-  , ITFormula(..) 
+  , ITFormula(..)
+  , upcastTFormula 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TFrame.hs b/src/HROOT/Class/TFrame.hs
--- a/src/HROOT/Class/TFrame.hs
+++ b/src/HROOT/Class/TFrame.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TFrame
   (
     TFrame(..)
-  , ITFrame 
+  , ITFrame
+  , upcastTFrame 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TGaxis.hs b/src/HROOT/Class/TGaxis.hs
--- a/src/HROOT/Class/TGaxis.hs
+++ b/src/HROOT/Class/TGaxis.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TGaxis
   (
     TGaxis(..)
-  , ITGaxis 
+  , ITGaxis
+  , upcastTGaxis 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TGraph.hs b/src/HROOT/Class/TGraph.hs
--- a/src/HROOT/Class/TGraph.hs
+++ b/src/HROOT/Class/TGraph.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TGraph
   (
     TGraph(..)
-  , ITGraph 
+  , ITGraph
+  , upcastTGraph 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TGraphAsymmErrors.hs b/src/HROOT/Class/TGraphAsymmErrors.hs
--- a/src/HROOT/Class/TGraphAsymmErrors.hs
+++ b/src/HROOT/Class/TGraphAsymmErrors.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TGraphAsymmErrors
   (
     TGraphAsymmErrors(..)
-  , ITGraphAsymmErrors 
+  , ITGraphAsymmErrors
+  , upcastTGraphAsymmErrors 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TGraphBentErrors.hs b/src/HROOT/Class/TGraphBentErrors.hs
--- a/src/HROOT/Class/TGraphBentErrors.hs
+++ b/src/HROOT/Class/TGraphBentErrors.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TGraphBentErrors
   (
     TGraphBentErrors(..)
-  , ITGraphBentErrors 
+  , ITGraphBentErrors
+  , upcastTGraphBentErrors 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TGraphErrors.hs b/src/HROOT/Class/TGraphErrors.hs
--- a/src/HROOT/Class/TGraphErrors.hs
+++ b/src/HROOT/Class/TGraphErrors.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TGraphErrors
   (
     TGraphErrors(..)
-  , ITGraphErrors 
+  , ITGraphErrors
+  , upcastTGraphErrors 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TGraphPolar.hs b/src/HROOT/Class/TGraphPolar.hs
--- a/src/HROOT/Class/TGraphPolar.hs
+++ b/src/HROOT/Class/TGraphPolar.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TGraphPolar
   (
     TGraphPolar(..)
-  , ITGraphPolar 
+  , ITGraphPolar
+  , upcastTGraphPolar 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TGraphQQ.hs b/src/HROOT/Class/TGraphQQ.hs
--- a/src/HROOT/Class/TGraphQQ.hs
+++ b/src/HROOT/Class/TGraphQQ.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TGraphQQ
   (
     TGraphQQ(..)
-  , ITGraphQQ 
+  , ITGraphQQ
+  , upcastTGraphQQ 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TH1.hs b/src/HROOT/Class/TH1.hs
--- a/src/HROOT/Class/TH1.hs
+++ b/src/HROOT/Class/TH1.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TH1
   (
     TH1(..)
-  , ITH1(..) 
+  , ITH1(..)
+  , upcastTH1 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TH1C.hs b/src/HROOT/Class/TH1C.hs
--- a/src/HROOT/Class/TH1C.hs
+++ b/src/HROOT/Class/TH1C.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TH1C
   (
     TH1C(..)
-  , ITH1C 
+  , ITH1C
+  , upcastTH1C 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TH1D.hs b/src/HROOT/Class/TH1D.hs
--- a/src/HROOT/Class/TH1D.hs
+++ b/src/HROOT/Class/TH1D.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TH1D
   (
     TH1D(..)
-  , ITH1D 
+  , ITH1D
+  , upcastTH1D 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TH1F.hs b/src/HROOT/Class/TH1F.hs
--- a/src/HROOT/Class/TH1F.hs
+++ b/src/HROOT/Class/TH1F.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TH1F
   (
     TH1F(..)
-  , ITH1F 
+  , ITH1F
+  , upcastTH1F 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TH1I.hs b/src/HROOT/Class/TH1I.hs
--- a/src/HROOT/Class/TH1I.hs
+++ b/src/HROOT/Class/TH1I.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TH1I
   (
     TH1I(..)
-  , ITH1I 
+  , ITH1I
+  , upcastTH1I 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TH1S.hs b/src/HROOT/Class/TH1S.hs
--- a/src/HROOT/Class/TH1S.hs
+++ b/src/HROOT/Class/TH1S.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TH1S
   (
     TH1S(..)
-  , ITH1S 
+  , ITH1S
+  , upcastTH1S 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TH2.hs b/src/HROOT/Class/TH2.hs
--- a/src/HROOT/Class/TH2.hs
+++ b/src/HROOT/Class/TH2.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TH2
   (
     TH2(..)
-  , ITH2(..) 
+  , ITH2(..)
+  , upcastTH2 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TH2C.hs b/src/HROOT/Class/TH2C.hs
--- a/src/HROOT/Class/TH2C.hs
+++ b/src/HROOT/Class/TH2C.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TH2C
   (
     TH2C(..)
-  , ITH2C 
+  , ITH2C
+  , upcastTH2C 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TH2D.hs b/src/HROOT/Class/TH2D.hs
--- a/src/HROOT/Class/TH2D.hs
+++ b/src/HROOT/Class/TH2D.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TH2D
   (
     TH2D(..)
-  , ITH2D 
+  , ITH2D
+  , upcastTH2D 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TH2F.hs b/src/HROOT/Class/TH2F.hs
--- a/src/HROOT/Class/TH2F.hs
+++ b/src/HROOT/Class/TH2F.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TH2F
   (
     TH2F(..)
-  , ITH2F 
+  , ITH2F
+  , upcastTH2F 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TH2I.hs b/src/HROOT/Class/TH2I.hs
--- a/src/HROOT/Class/TH2I.hs
+++ b/src/HROOT/Class/TH2I.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TH2I
   (
     TH2I(..)
-  , ITH2I 
+  , ITH2I
+  , upcastTH2I 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TH2Poly.hs b/src/HROOT/Class/TH2Poly.hs
--- a/src/HROOT/Class/TH2Poly.hs
+++ b/src/HROOT/Class/TH2Poly.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TH2Poly
   (
     TH2Poly(..)
-  , ITH2Poly 
+  , ITH2Poly
+  , upcastTH2Poly 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TH2S.hs b/src/HROOT/Class/TH2S.hs
--- a/src/HROOT/Class/TH2S.hs
+++ b/src/HROOT/Class/TH2S.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TH2S
   (
     TH2S(..)
-  , ITH2S 
+  , ITH2S
+  , upcastTH2S 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TH3.hs b/src/HROOT/Class/TH3.hs
--- a/src/HROOT/Class/TH3.hs
+++ b/src/HROOT/Class/TH3.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TH3
   (
     TH3(..)
-  , ITH3 
+  , ITH3
+  , upcastTH3 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TH3C.hs b/src/HROOT/Class/TH3C.hs
--- a/src/HROOT/Class/TH3C.hs
+++ b/src/HROOT/Class/TH3C.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TH3C
   (
     TH3C(..)
-  , ITH3C 
+  , ITH3C
+  , upcastTH3C 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/THStack.hs b/src/HROOT/Class/THStack.hs
--- a/src/HROOT/Class/THStack.hs
+++ b/src/HROOT/Class/THStack.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.THStack
   (
     THStack(..)
-  , ITHStack 
+  , ITHStack
+  , upcastTHStack 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TLatex.hs b/src/HROOT/Class/TLatex.hs
--- a/src/HROOT/Class/TLatex.hs
+++ b/src/HROOT/Class/TLatex.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TLatex
   (
     TLatex(..)
-  , ITLatex 
+  , ITLatex
+  , upcastTLatex 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TLegend.hs b/src/HROOT/Class/TLegend.hs
--- a/src/HROOT/Class/TLegend.hs
+++ b/src/HROOT/Class/TLegend.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TLegend
   (
     TLegend(..)
-  , ITLegend 
+  , ITLegend
+  , upcastTLegend 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TLine.hs b/src/HROOT/Class/TLine.hs
--- a/src/HROOT/Class/TLine.hs
+++ b/src/HROOT/Class/TLine.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TLine
   (
     TLine(..)
-  , ITLine 
+  , ITLine
+  , upcastTLine 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TNamed.hs b/src/HROOT/Class/TNamed.hs
--- a/src/HROOT/Class/TNamed.hs
+++ b/src/HROOT/Class/TNamed.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TNamed
   (
     TNamed(..)
-  , ITNamed(..) 
+  , ITNamed(..)
+  , upcastTNamed 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TNtuple.hs b/src/HROOT/Class/TNtuple.hs
--- a/src/HROOT/Class/TNtuple.hs
+++ b/src/HROOT/Class/TNtuple.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TNtuple
   (
     TNtuple(..)
-  , ITNtuple 
+  , ITNtuple
+  , upcastTNtuple 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TNtupleD.hs b/src/HROOT/Class/TNtupleD.hs
--- a/src/HROOT/Class/TNtupleD.hs
+++ b/src/HROOT/Class/TNtupleD.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TNtupleD
   (
     TNtupleD(..)
-  , ITNtupleD 
+  , ITNtupleD
+  , upcastTNtupleD 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TObjArray.hs b/src/HROOT/Class/TObjArray.hs
--- a/src/HROOT/Class/TObjArray.hs
+++ b/src/HROOT/Class/TObjArray.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TObjArray
   (
     TObjArray(..)
-  , ITObjArray 
+  , ITObjArray
+  , upcastTObjArray 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TObject.hs b/src/HROOT/Class/TObject.hs
--- a/src/HROOT/Class/TObject.hs
+++ b/src/HROOT/Class/TObject.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TObject
   (
     TObject(..)
-  , ITObject(..) 
+  , ITObject(..)
+  , upcastTObject 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TPCON.hs b/src/HROOT/Class/TPCON.hs
--- a/src/HROOT/Class/TPCON.hs
+++ b/src/HROOT/Class/TPCON.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TPCON
   (
     TPCON(..)
-  , ITPCON 
+  , ITPCON
+  , upcastTPCON 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TPave.hs b/src/HROOT/Class/TPave.hs
--- a/src/HROOT/Class/TPave.hs
+++ b/src/HROOT/Class/TPave.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TPave
   (
     TPave(..)
-  , ITPave 
+  , ITPave
+  , upcastTPave 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TPaveClass.hs b/src/HROOT/Class/TPaveClass.hs
--- a/src/HROOT/Class/TPaveClass.hs
+++ b/src/HROOT/Class/TPaveClass.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TPaveClass
   (
     TPaveClass(..)
-  , ITPaveClass 
+  , ITPaveClass
+  , upcastTPaveClass 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TPaveLabel.hs b/src/HROOT/Class/TPaveLabel.hs
--- a/src/HROOT/Class/TPaveLabel.hs
+++ b/src/HROOT/Class/TPaveLabel.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TPaveLabel
   (
     TPaveLabel(..)
-  , ITPaveLabel 
+  , ITPaveLabel
+  , upcastTPaveLabel 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TPaveStats.hs b/src/HROOT/Class/TPaveStats.hs
--- a/src/HROOT/Class/TPaveStats.hs
+++ b/src/HROOT/Class/TPaveStats.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TPaveStats
   (
     TPaveStats(..)
-  , ITPaveStats 
+  , ITPaveStats
+  , upcastTPaveStats 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TPaveText.hs b/src/HROOT/Class/TPaveText.hs
--- a/src/HROOT/Class/TPaveText.hs
+++ b/src/HROOT/Class/TPaveText.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TPaveText
   (
     TPaveText(..)
-  , ITPaveText 
+  , ITPaveText
+  , upcastTPaveText 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TPavesText.hs b/src/HROOT/Class/TPavesText.hs
--- a/src/HROOT/Class/TPavesText.hs
+++ b/src/HROOT/Class/TPavesText.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TPavesText
   (
     TPavesText(..)
-  , ITPavesText 
+  , ITPavesText
+  , upcastTPavesText 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TPolyLine.hs b/src/HROOT/Class/TPolyLine.hs
--- a/src/HROOT/Class/TPolyLine.hs
+++ b/src/HROOT/Class/TPolyLine.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TPolyLine
   (
     TPolyLine(..)
-  , ITPolyLine 
+  , ITPolyLine
+  , upcastTPolyLine 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TSPHE.hs b/src/HROOT/Class/TSPHE.hs
--- a/src/HROOT/Class/TSPHE.hs
+++ b/src/HROOT/Class/TSPHE.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TSPHE
   (
     TSPHE(..)
-  , ITSPHE 
+  , ITSPHE
+  , upcastTSPHE 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TSeqCollection.hs b/src/HROOT/Class/TSeqCollection.hs
--- a/src/HROOT/Class/TSeqCollection.hs
+++ b/src/HROOT/Class/TSeqCollection.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TSeqCollection
   (
     TSeqCollection(..)
-  , ITSeqCollection 
+  , ITSeqCollection
+  , upcastTSeqCollection 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TShape.hs b/src/HROOT/Class/TShape.hs
--- a/src/HROOT/Class/TShape.hs
+++ b/src/HROOT/Class/TShape.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TShape
   (
     TShape(..)
-  , ITShape 
+  , ITShape
+  , upcastTShape 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TSliderBox.hs b/src/HROOT/Class/TSliderBox.hs
--- a/src/HROOT/Class/TSliderBox.hs
+++ b/src/HROOT/Class/TSliderBox.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TSliderBox
   (
     TSliderBox(..)
-  , ITSliderBox 
+  , ITSliderBox
+  , upcastTSliderBox 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TTUBE.hs b/src/HROOT/Class/TTUBE.hs
--- a/src/HROOT/Class/TTUBE.hs
+++ b/src/HROOT/Class/TTUBE.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TTUBE
   (
     TTUBE(..)
-  , ITTUBE 
+  , ITTUBE
+  , upcastTTUBE 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TText.hs b/src/HROOT/Class/TText.hs
--- a/src/HROOT/Class/TText.hs
+++ b/src/HROOT/Class/TText.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TText
   (
     TText(..)
-  , ITText 
+  , ITText
+  , upcastTText 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TTree.hs b/src/HROOT/Class/TTree.hs
--- a/src/HROOT/Class/TTree.hs
+++ b/src/HROOT/Class/TTree.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TTree
   (
     TTree(..)
-  , ITTree 
+  , ITTree
+  , upcastTTree 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TTreePlayer.hs b/src/HROOT/Class/TTreePlayer.hs
--- a/src/HROOT/Class/TTreePlayer.hs
+++ b/src/HROOT/Class/TTreePlayer.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TTreePlayer
   (
     TTreePlayer(..)
-  , ITTreePlayer 
+  , ITTreePlayer
+  , upcastTTreePlayer 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TTreeSQL.hs b/src/HROOT/Class/TTreeSQL.hs
--- a/src/HROOT/Class/TTreeSQL.hs
+++ b/src/HROOT/Class/TTreeSQL.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TTreeSQL
   (
     TTreeSQL(..)
-  , ITTreeSQL 
+  , ITTreeSQL
+  , upcastTTreeSQL 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TVirtualTreePlayer.hs b/src/HROOT/Class/TVirtualTreePlayer.hs
--- a/src/HROOT/Class/TVirtualTreePlayer.hs
+++ b/src/HROOT/Class/TVirtualTreePlayer.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TVirtualTreePlayer
   (
     TVirtualTreePlayer(..)
-  , ITVirtualTreePlayer 
+  , ITVirtualTreePlayer
+  , upcastTVirtualTreePlayer 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TWbox.hs b/src/HROOT/Class/TWbox.hs
--- a/src/HROOT/Class/TWbox.hs
+++ b/src/HROOT/Class/TWbox.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TWbox
   (
     TWbox(..)
-  , ITWbox(..) 
+  , ITWbox(..)
+  , upcastTWbox 
   ) where
 
 import HROOT.Class.Interface
diff --git a/src/HROOT/Class/TXTRU.hs b/src/HROOT/Class/TXTRU.hs
--- a/src/HROOT/Class/TXTRU.hs
+++ b/src/HROOT/Class/TXTRU.hs
@@ -1,7 +1,8 @@
 module HROOT.Class.TXTRU
   (
     TXTRU(..)
-  , ITXTRU 
+  , ITXTRU
+  , upcastTXTRU 
   ) where
 
 import HROOT.Class.Interface
