diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -30,3 +30,7 @@
 0.7 : 8 Nov 2011
    * separate all class interfaces and implementation in different modules
    * overhaul Existential 
+
+0.7.1 : 12 Nov 2011 
+   * support for static methods
+   * add TROOT
diff --git a/HROOT.cabal b/HROOT.cabal
--- a/HROOT.cabal
+++ b/HROOT.cabal
@@ -1,5 +1,5 @@
 Name:		HROOT
-Version:	0.7
+Version:	0.7.1
 Synopsis:	Wrapper for ROOT
 Description: 	Haskell FFI binding for ROOT  
 Homepage:       http://ianwookim.org/HROOT
@@ -79,6 +79,7 @@
                        csrc/HROOTTLatex.h
                        csrc/HROOTTText.h
                        csrc/HROOTTDirectory.h
+                       csrc/HROOTTROOT.h
                        csrc/HROOTTDirectoryFile.h
                        csrc/HROOTTFile.h
                        csrc/HROOTTBranch.h
@@ -195,6 +196,7 @@
                        csrc/HROOTTLatex.cpp
                        csrc/HROOTTText.cpp
                        csrc/HROOTTDirectory.cpp
+                       csrc/HROOTTROOT.cpp
                        csrc/HROOTTDirectoryFile.cpp
                        csrc/HROOTTFile.cpp
                        csrc/HROOTTBranch.cpp
@@ -258,14 +260,14 @@
                        test/compiletest.hs
 
 Source-repository head
-  type:     darcs
-  location: http://ianwookim.org/public/repo/HROOT
+  type:     git
+  location: https://github.com/wavewave/HROOT, https://github.com/wavewave/HROOT-generate
 
 -- Test-Suite compiletest
 --   default-language: Haskell2010
 --   type: exitcode-stdio-1.0
 --   main-is: compiletest.hs
---   build-depends: base>4, base<5, HROOT==0.7
+--   build-depends: base>4, base<5, HROOT==0.7.1
 --   hs-source-dirs: test
 
 Library
@@ -341,6 +343,7 @@
                        HROOT.Class.TLatex
                        HROOT.Class.TText
                        HROOT.Class.TDirectory
+                       HROOT.Class.TROOT
                        HROOT.Class.TDirectoryFile
                        HROOT.Class.TFile
                        HROOT.Class.TBranch
@@ -459,6 +462,7 @@
                        HROOT.Class.TLatex.RawType
                        HROOT.Class.TText.RawType
                        HROOT.Class.TDirectory.RawType
+                       HROOT.Class.TROOT.RawType
                        HROOT.Class.TDirectoryFile.RawType
                        HROOT.Class.TFile.RawType
                        HROOT.Class.TBranch.RawType
@@ -575,6 +579,7 @@
                        HROOT.Class.TLatex.FFI
                        HROOT.Class.TText.FFI
                        HROOT.Class.TDirectory.FFI
+                       HROOT.Class.TROOT.FFI
                        HROOT.Class.TDirectoryFile.FFI
                        HROOT.Class.TFile.FFI
                        HROOT.Class.TBranch.FFI
@@ -691,6 +696,7 @@
                        HROOT.Class.TLatex.Interface
                        HROOT.Class.TText.Interface
                        HROOT.Class.TDirectory.Interface
+                       HROOT.Class.TROOT.Interface
                        HROOT.Class.TDirectoryFile.Interface
                        HROOT.Class.TFile.Interface
                        HROOT.Class.TBranch.Interface
@@ -807,6 +813,7 @@
                        HROOT.Class.TLatex.Cast
                        HROOT.Class.TText.Cast
                        HROOT.Class.TDirectory.Cast
+                       HROOT.Class.TROOT.Cast
                        HROOT.Class.TDirectoryFile.Cast
                        HROOT.Class.TFile.Cast
                        HROOT.Class.TBranch.Cast
@@ -923,6 +930,7 @@
                        HROOT.Class.TLatex.Implementation
                        HROOT.Class.TText.Implementation
                        HROOT.Class.TDirectory.Implementation
+                       HROOT.Class.TROOT.Implementation
                        HROOT.Class.TDirectoryFile.Implementation
                        HROOT.Class.TFile.Implementation
                        HROOT.Class.TBranch.Implementation
@@ -1053,6 +1061,7 @@
                        HROOTTLatex.h
                        HROOTTText.h
                        HROOTTDirectory.h
+                       HROOTTROOT.h
                        HROOTTDirectoryFile.h
                        HROOTTFile.h
                        HROOTTBranch.h
@@ -1171,6 +1180,7 @@
                        csrc/HROOTTLatex.cpp
                        csrc/HROOTTText.cpp
                        csrc/HROOTTDirectory.cpp
+                       csrc/HROOTTROOT.cpp
                        csrc/HROOTTDirectoryFile.cpp
                        csrc/HROOTTFile.cpp
                        csrc/HROOTTBranch.cpp
diff --git a/csrc/HROOTTDirectory.h b/csrc/HROOTTDirectory.h
--- a/csrc/HROOTTDirectory.h
+++ b/csrc/HROOTTDirectory.h
@@ -18,7 +18,8 @@
 
 #undef ROOT_TDIRECTORY_DECLARATIONNONVIRT
 #define ROOT_TDIRECTORY_DECLARATIONNONVIRT(Type) \
-
+void Type ## _tDirectoryAddDirectory ( int add ); \
+int Type ## _tDirectoryAddDirectoryStatus (  )
 
 #undef ROOT_TDIRECTORY_DEFINITIONVIRT
 #define ROOT_TDIRECTORY_DEFINITIONVIRT(Type)\
@@ -45,7 +46,14 @@
 
 #undef ROOT_TDIRECTORY_DEFINITIONNONVIRT
 #define ROOT_TDIRECTORY_DEFINITIONNONVIRT(Type)\
-
+void Type ## _tDirectoryAddDirectory ( int add )\
+{\
+TDirectory::AddDirectory(add);\
+}\
+int Type ## _tDirectoryAddDirectoryStatus (  )\
+{\
+return TDirectory::AddDirectoryStatus();\
+}
 
 ROOT_TNAMED_DECLARATIONVIRT(TDirectory);
 ROOT_TOBJECT_DECLARATIONVIRT(TDirectory);
diff --git a/csrc/HROOTTF1.h b/csrc/HROOTTF1.h
--- a/csrc/HROOTTF1.h
+++ b/csrc/HROOTTF1.h
@@ -67,12 +67,20 @@
 #undef ROOT_TF1_DECLARATIONNONVIRT
 #define ROOT_TF1_DECLARATIONNONVIRT(Type) \
 Type ## _p Type ## _newTF1 ( const char * name, const char * formula, double xmin, double xmax ); \
+double Type ## _tF1DerivativeError (  ); \
 double Type ## _tF1GetChisquare ( Type ## _p p ); \
 TH1_p Type ## _tF1GetHistogram ( Type ## _p p ); \
 TObject_p Type ## _tF1GetParent ( Type ## _p p ); \
 TAxis_p Type ## _tF1GetXaxis ( Type ## _p p ); \
 TAxis_p Type ## _tF1GetYaxis ( Type ## _p p ); \
-TAxis_p Type ## _tF1GetZaxis ( Type ## _p p )
+TAxis_p Type ## _tF1GetZaxis ( Type ## _p p ); \
+void Type ## _tF1InitStandardFunctions (  ); \
+TF1_p Type ## _tF1GetCurrent (  ); \
+void Type ## _tF1AbsValue ( int reject ); \
+void Type ## _tF1RejectPoint ( int reject ); \
+int Type ## _tF1RejectedPoint (  ); \
+void Type ## _tF1SetCurrent ( TF1_p f1 ); \
+void Type ## _tF1CalcGaussLegendreSamplingPoints ( int  num, double * x, double * w, double eps )
 
 #undef ROOT_TF1_DEFINITIONVIRT
 #define ROOT_TF1_DEFINITIONVIRT(Type)\
@@ -280,6 +288,10 @@
 Type * newp = new Type (name, formula, xmin, xmax); \
 return to_nonconst<Type ## _t, Type >(newp);\
 }\
+double Type ## _tF1DerivativeError (  )\
+{\
+return TF1::DerivativeError();\
+}\
 double Type ## _tF1GetChisquare ( Type ## _p p )\
 {\
 return to_nonconst<Type,Type ## _t>(p)->GetChisquare();\
@@ -303,6 +315,34 @@
 TAxis_p Type ## _tF1GetZaxis ( Type ## _p p )\
 {\
 return to_nonconst<TAxis_t,TAxis>((TAxis*)to_nonconst<Type,Type ## _t>(p)->GetZaxis());\
+}\
+void Type ## _tF1InitStandardFunctions (  )\
+{\
+TF1::InitStandardFunctions();\
+}\
+TF1_p Type ## _tF1GetCurrent (  )\
+{\
+return to_nonconst<TF1_t,TF1>((TF1*)TF1::GetCurrent());\
+}\
+void Type ## _tF1AbsValue ( int reject )\
+{\
+TF1::AbsValue(reject);\
+}\
+void Type ## _tF1RejectPoint ( int reject )\
+{\
+TF1::RejectPoint(reject);\
+}\
+int Type ## _tF1RejectedPoint (  )\
+{\
+return TF1::RejectedPoint();\
+}\
+void Type ## _tF1SetCurrent ( TF1_p f1 )\
+{\
+TF1::SetCurrent(to_nonconst<TF1,TF1_t>(f1));\
+}\
+void Type ## _tF1CalcGaussLegendreSamplingPoints ( int  num, double * x, double * w, double eps )\
+{\
+TF1::CalcGaussLegendreSamplingPoints(num, x, w, eps);\
 }
 
 ROOT_TFORMULA_DECLARATIONVIRT(TF1);
diff --git a/csrc/HROOTTH1.h b/csrc/HROOTTH1.h
--- a/csrc/HROOTTH1.h
+++ b/csrc/HROOTTH1.h
@@ -148,12 +148,18 @@
 Type ## _p Type ## _tH1GetAsymmetry ( Type ## _p p, TH1_p h2, double c2, double dc2 ); \
 int  Type ## _tH1GetBufferLength ( Type ## _p p ); \
 int  Type ## _tH1GetBufferSize ( Type ## _p p ); \
+int  Type ## _tH1GetDefaultBufferSize (  ); \
+int Type ## _tH1GetDefaultSumw2 (  ); \
 TDirectory_p Type ## _tH1GetDirectory ( Type ## _p p ); \
 TAxis_p Type ## _tH1GetXaxis ( Type ## _p p ); \
 TAxis_p Type ## _tH1GetYaxis ( Type ## _p p ); \
 TAxis_p Type ## _tH1GetZaxis ( Type ## _p p ); \
 int Type ## _tH1IsBinOverflow ( Type ## _p p, int  bin ); \
 int Type ## _tH1IsBinUnderflow ( Type ## _p p, int  bin ); \
+void Type ## _tH1SetDefaultBufferSize ( int  buffersize ); \
+void Type ## _tH1SetDefaultSumw2 ( int sumw2 ); \
+void Type ## _tH1SmoothArray ( int  NN, double * XX, int  ntimes ); \
+void Type ## _tH1StatOverflows ( int flag ); \
 void Type ## _tH1UseCurrentStyle ( Type ## _p p )
 
 #undef ROOT_TH1_DEFINITIONVIRT
@@ -689,6 +695,14 @@
 {\
 return to_nonconst<Type,Type ## _t>(p)->GetBufferSize();\
 }\
+int  Type ## _tH1GetDefaultBufferSize (  )\
+{\
+return TH1::GetDefaultBufferSize();\
+}\
+int Type ## _tH1GetDefaultSumw2 (  )\
+{\
+return TH1::GetDefaultSumw2();\
+}\
 TDirectory_p Type ## _tH1GetDirectory ( Type ## _p p )\
 {\
 return to_nonconst<TDirectory_t,TDirectory>((TDirectory*)to_nonconst<Type,Type ## _t>(p)->GetDirectory());\
@@ -712,6 +726,22 @@
 int Type ## _tH1IsBinUnderflow ( Type ## _p p, int  bin )\
 {\
 return to_nonconst<Type,Type ## _t>(p)->IsBinUnderflow(bin);\
+}\
+void Type ## _tH1SetDefaultBufferSize ( int  buffersize )\
+{\
+TH1::SetDefaultBufferSize(buffersize);\
+}\
+void Type ## _tH1SetDefaultSumw2 ( int sumw2 )\
+{\
+TH1::SetDefaultSumw2(sumw2);\
+}\
+void Type ## _tH1SmoothArray ( int  NN, double * XX, int  ntimes )\
+{\
+TH1::SmoothArray(NN, XX, ntimes);\
+}\
+void Type ## _tH1StatOverflows ( int flag )\
+{\
+TH1::StatOverflows(flag);\
 }\
 void Type ## _tH1UseCurrentStyle ( Type ## _p p )\
 {\
diff --git a/csrc/HROOTTObject.h b/csrc/HROOTTObject.h
--- a/csrc/HROOTTObject.h
+++ b/csrc/HROOTTObject.h
@@ -26,7 +26,9 @@
 #define ROOT_TOBJECT_DECLARATIONNONVIRT(Type) \
 Type ## _p Type ## _newTObject (  ); \
 int Type ## _tObjectIsOnHeap ( Type ## _p p ); \
-int Type ## _tObjectIsZombie ( Type ## _p p )
+int Type ## _tObjectIsZombie ( Type ## _p p ); \
+int Type ## _tObjectGetObjectStat (  ); \
+void Type ## _tObjectSetObjectStat ( int stat )
 
 #undef ROOT_TOBJECT_DEFINITIONVIRT
 #define ROOT_TOBJECT_DEFINITIONVIRT(Type)\
@@ -97,6 +99,14 @@
 int Type ## _tObjectIsZombie ( Type ## _p p )\
 {\
 return to_nonconst<Type,Type ## _t>(p)->IsZombie();\
+}\
+int Type ## _tObjectGetObjectStat (  )\
+{\
+return TObject::GetObjectStat();\
+}\
+void Type ## _tObjectSetObjectStat ( int stat )\
+{\
+TObject::SetObjectStat(stat);\
 }
 
 ROOT_DELETABLE_DECLARATIONVIRT(TObject);
diff --git a/csrc/HROOTTROOT.cpp b/csrc/HROOTTROOT.cpp
new file mode 100644
--- /dev/null
+++ b/csrc/HROOTTROOT.cpp
@@ -0,0 +1,35 @@
+#include "HROOTTDirectory.h"
+#include "HROOTTNamed.h"
+#include "HROOTTObject.h"
+#include "HROOTDeletable.h"
+#include "TROOT.h"
+#include "HROOTTROOT.h"
+
+using namespace std;
+
+template<class ToType, class FromType>
+const ToType* to_const(const FromType* x) {
+  return reinterpret_cast<const ToType*>(x);
+}
+
+template<class ToType, class FromType>
+ToType* to_nonconst(FromType* x) {
+  return reinterpret_cast<ToType*>(x);
+}
+
+
+
+ROOT_TDIRECTORY_DEFINITIONVIRT(TROOT)
+ROOT_TNAMED_DEFINITIONVIRT(TROOT)
+ROOT_TOBJECT_DEFINITIONVIRT(TROOT)
+ROOT_DELETABLE_DEFINITIONVIRT(TROOT)
+
+ROOT_TROOT_DEFINITIONVIRT(TROOT)
+
+ROOT_TROOT_DEFINITIONNONVIRT(TROOT)
+
+void dummyTROOT ( void ) 
+{
+  
+}
+
diff --git a/csrc/HROOTTROOT.h b/csrc/HROOTTROOT.h
new file mode 100644
--- /dev/null
+++ b/csrc/HROOTTROOT.h
@@ -0,0 +1,185 @@
+#ifdef __cplusplus
+extern "C" { 
+#endif 
+
+#include "HROOTType.h"
+
+#include "HROOTTDirectory.h"
+#include "HROOTTNamed.h"
+#include "HROOTTObject.h"
+#include "HROOTDeletable.h"
+
+#undef ROOT_TROOT_DECLARATIONVIRT
+#define ROOT_TROOT_DECLARATIONVIRT(Type) \
+
+
+#undef ROOT_TROOT_DECLARATIONNONVIRT
+#define ROOT_TROOT_DECLARATIONNONVIRT(Type) \
+TSeqCollection_p Type ## _tROOTGetListOfColors ( Type ## _p p ); \
+TCollection_p Type ## _tROOTGetListOfTypes ( Type ## _p p, int load ); \
+TCollection_p Type ## _tROOTGetListOfGlobals ( Type ## _p p, int load ); \
+TCollection_p Type ## _tROOTGetListOfGlobalFunctions ( Type ## _p p, int load ); \
+TSeqCollection_p Type ## _tROOTGetListOfClosedObjects ( Type ## _p p ); \
+TSeqCollection_p Type ## _tROOTGetListOfFiles ( Type ## _p p ); \
+TSeqCollection_p Type ## _tROOTGetListOfMappedFiles ( Type ## _p p ); \
+TSeqCollection_p Type ## _tROOTGetListOfSockets ( Type ## _p p ); \
+TSeqCollection_p Type ## _tROOTGetListOfCanvases ( Type ## _p p ); \
+TSeqCollection_p Type ## _tROOTGetListOfStyles ( Type ## _p p ); \
+TCollection_p Type ## _tROOTGetListOfFunctions ( Type ## _p p ); \
+TSeqCollection_p Type ## _tROOTGetListOfGeometries ( Type ## _p p ); \
+TSeqCollection_p Type ## _tROOTGetListOfBrowsers ( Type ## _p p ); \
+TSeqCollection_p Type ## _tROOTGetListOfSpecials ( Type ## _p p ); \
+TSeqCollection_p Type ## _tROOTGetListOfTasks ( Type ## _p p ); \
+TSeqCollection_p Type ## _tROOTGetListOfCleanups ( Type ## _p p ); \
+TSeqCollection_p Type ## _tROOTGetListOfStreamerInfo ( Type ## _p p ); \
+int  Type ## _tROOTDecreaseDirLevel (  ); \
+int  Type ## _tROOTGetDirLevel (  ); \
+const char * Type ## _tROOTGetMacroPath (  ); \
+void Type ## _tROOTSetMacroPath ( const char * newpath ); \
+int  Type ## _tROOTIncreaseDirLevel (  ); \
+void Type ## _tROOTIndentLevel (  ); \
+int Type ## _tROOTInitialized (  ); \
+int Type ## _tROOTMemCheck (  ); \
+void Type ## _tROOTSetDirLevel ( int  level ); \
+int  Type ## _tROOTConvertVersionCode2Int ( int  code ); \
+int  Type ## _tROOTConvertVersionInt2Code ( int  v ); \
+int  Type ## _tROOTRootVersionCode (  )
+
+#undef ROOT_TROOT_DEFINITIONVIRT
+#define ROOT_TROOT_DEFINITIONVIRT(Type)\
+
+
+#undef ROOT_TROOT_DEFINITIONNONVIRT
+#define ROOT_TROOT_DEFINITIONNONVIRT(Type)\
+TSeqCollection_p Type ## _tROOTGetListOfColors ( Type ## _p p )\
+{\
+return to_nonconst<TSeqCollection_t,TSeqCollection>((TSeqCollection*)to_nonconst<Type,Type ## _t>(p)->GetListOfColors());\
+}\
+TCollection_p Type ## _tROOTGetListOfTypes ( Type ## _p p, int load )\
+{\
+return to_nonconst<TCollection_t,TCollection>((TCollection*)to_nonconst<Type,Type ## _t>(p)->GetListOfTypes(load));\
+}\
+TCollection_p Type ## _tROOTGetListOfGlobals ( Type ## _p p, int load )\
+{\
+return to_nonconst<TCollection_t,TCollection>((TCollection*)to_nonconst<Type,Type ## _t>(p)->GetListOfGlobals(load));\
+}\
+TCollection_p Type ## _tROOTGetListOfGlobalFunctions ( Type ## _p p, int load )\
+{\
+return to_nonconst<TCollection_t,TCollection>((TCollection*)to_nonconst<Type,Type ## _t>(p)->GetListOfGlobalFunctions(load));\
+}\
+TSeqCollection_p Type ## _tROOTGetListOfClosedObjects ( Type ## _p p )\
+{\
+return to_nonconst<TSeqCollection_t,TSeqCollection>((TSeqCollection*)to_nonconst<Type,Type ## _t>(p)->GetListOfClosedObjects());\
+}\
+TSeqCollection_p Type ## _tROOTGetListOfFiles ( Type ## _p p )\
+{\
+return to_nonconst<TSeqCollection_t,TSeqCollection>((TSeqCollection*)to_nonconst<Type,Type ## _t>(p)->GetListOfFiles());\
+}\
+TSeqCollection_p Type ## _tROOTGetListOfMappedFiles ( Type ## _p p )\
+{\
+return to_nonconst<TSeqCollection_t,TSeqCollection>((TSeqCollection*)to_nonconst<Type,Type ## _t>(p)->GetListOfMappedFiles());\
+}\
+TSeqCollection_p Type ## _tROOTGetListOfSockets ( Type ## _p p )\
+{\
+return to_nonconst<TSeqCollection_t,TSeqCollection>((TSeqCollection*)to_nonconst<Type,Type ## _t>(p)->GetListOfSockets());\
+}\
+TSeqCollection_p Type ## _tROOTGetListOfCanvases ( Type ## _p p )\
+{\
+return to_nonconst<TSeqCollection_t,TSeqCollection>((TSeqCollection*)to_nonconst<Type,Type ## _t>(p)->GetListOfCanvases());\
+}\
+TSeqCollection_p Type ## _tROOTGetListOfStyles ( Type ## _p p )\
+{\
+return to_nonconst<TSeqCollection_t,TSeqCollection>((TSeqCollection*)to_nonconst<Type,Type ## _t>(p)->GetListOfStyles());\
+}\
+TCollection_p Type ## _tROOTGetListOfFunctions ( Type ## _p p )\
+{\
+return to_nonconst<TCollection_t,TCollection>((TCollection*)to_nonconst<Type,Type ## _t>(p)->GetListOfFunctions());\
+}\
+TSeqCollection_p Type ## _tROOTGetListOfGeometries ( Type ## _p p )\
+{\
+return to_nonconst<TSeqCollection_t,TSeqCollection>((TSeqCollection*)to_nonconst<Type,Type ## _t>(p)->GetListOfGeometries());\
+}\
+TSeqCollection_p Type ## _tROOTGetListOfBrowsers ( Type ## _p p )\
+{\
+return to_nonconst<TSeqCollection_t,TSeqCollection>((TSeqCollection*)to_nonconst<Type,Type ## _t>(p)->GetListOfBrowsers());\
+}\
+TSeqCollection_p Type ## _tROOTGetListOfSpecials ( Type ## _p p )\
+{\
+return to_nonconst<TSeqCollection_t,TSeqCollection>((TSeqCollection*)to_nonconst<Type,Type ## _t>(p)->GetListOfSpecials());\
+}\
+TSeqCollection_p Type ## _tROOTGetListOfTasks ( Type ## _p p )\
+{\
+return to_nonconst<TSeqCollection_t,TSeqCollection>((TSeqCollection*)to_nonconst<Type,Type ## _t>(p)->GetListOfTasks());\
+}\
+TSeqCollection_p Type ## _tROOTGetListOfCleanups ( Type ## _p p )\
+{\
+return to_nonconst<TSeqCollection_t,TSeqCollection>((TSeqCollection*)to_nonconst<Type,Type ## _t>(p)->GetListOfCleanups());\
+}\
+TSeqCollection_p Type ## _tROOTGetListOfStreamerInfo ( Type ## _p p )\
+{\
+return to_nonconst<TSeqCollection_t,TSeqCollection>((TSeqCollection*)to_nonconst<Type,Type ## _t>(p)->GetListOfStreamerInfo());\
+}\
+int  Type ## _tROOTDecreaseDirLevel (  )\
+{\
+return TROOT::DecreaseDirLevel();\
+}\
+int  Type ## _tROOTGetDirLevel (  )\
+{\
+return TROOT::GetDirLevel();\
+}\
+const char * Type ## _tROOTGetMacroPath (  )\
+{\
+return TROOT::GetMacroPath();\
+}\
+void Type ## _tROOTSetMacroPath ( const char * newpath )\
+{\
+TROOT::SetMacroPath(newpath);\
+}\
+int  Type ## _tROOTIncreaseDirLevel (  )\
+{\
+return TROOT::IncreaseDirLevel();\
+}\
+void Type ## _tROOTIndentLevel (  )\
+{\
+TROOT::IndentLevel();\
+}\
+int Type ## _tROOTInitialized (  )\
+{\
+return TROOT::Initialized();\
+}\
+int Type ## _tROOTMemCheck (  )\
+{\
+return TROOT::MemCheck();\
+}\
+void Type ## _tROOTSetDirLevel ( int  level )\
+{\
+TROOT::SetDirLevel(level);\
+}\
+int  Type ## _tROOTConvertVersionCode2Int ( int  code )\
+{\
+return TROOT::ConvertVersionCode2Int(code);\
+}\
+int  Type ## _tROOTConvertVersionInt2Code ( int  v )\
+{\
+return TROOT::ConvertVersionInt2Code(v);\
+}\
+int  Type ## _tROOTRootVersionCode (  )\
+{\
+return TROOT::RootVersionCode();\
+}
+
+ROOT_TDIRECTORY_DECLARATIONVIRT(TROOT);
+ROOT_TNAMED_DECLARATIONVIRT(TROOT);
+ROOT_TOBJECT_DECLARATIONVIRT(TROOT);
+ROOT_DELETABLE_DECLARATIONVIRT(TROOT);
+
+
+ROOT_TROOT_DECLARATIONVIRT(TROOT);
+
+
+ROOT_TROOT_DECLARATIONNONVIRT(TROOT);
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/csrc/HROOTType.h b/csrc/HROOTType.h
--- a/csrc/HROOTType.h
+++ b/csrc/HROOTType.h
@@ -75,6 +75,7 @@
 ROOT_TYPE_DECLARATION(TLatex);
 ROOT_TYPE_DECLARATION(TText);
 ROOT_TYPE_DECLARATION(TDirectory);
+ROOT_TYPE_DECLARATION(TROOT);
 ROOT_TYPE_DECLARATION(TDirectoryFile);
 ROOT_TYPE_DECLARATION(TFile);
 ROOT_TYPE_DECLARATION(TBranch);
diff --git a/src/HROOT.hs b/src/HROOT.hs
--- a/src/HROOT.hs
+++ b/src/HROOT.hs
@@ -21,7 +21,7 @@
 
 
 module HROOT (
- module HROOT.Class.Deletable,  module HROOT.Class.TObject,  module HROOT.Class.TNamed,  module HROOT.Class.TDictionary,  module HROOT.Class.TClass,  module HROOT.Class.TFormula,  module HROOT.Class.TAtt3D,  module HROOT.Class.TAttAxis,  module HROOT.Class.TAttBBox,  module HROOT.Class.TAttCanvas,  module HROOT.Class.TAttFill,  module HROOT.Class.TAttImage,  module HROOT.Class.TAttLine,  module HROOT.Class.TAttMarker,  module HROOT.Class.TAttPad,  module HROOT.Class.TAttParticle,  module HROOT.Class.TAttText,  module HROOT.Class.THStack,  module HROOT.Class.TF1,  module HROOT.Class.TGraph,  module HROOT.Class.TGraphAsymmErrors,  module HROOT.Class.TCutG,  module HROOT.Class.TGraphBentErrors,  module HROOT.Class.TGraphErrors,  module HROOT.Class.TGraphPolar,  module HROOT.Class.TGraphQQ,  module HROOT.Class.TEllipse,  module HROOT.Class.TArc,  module HROOT.Class.TCrown,  module HROOT.Class.TLine,  module HROOT.Class.TArrow,  module HROOT.Class.TGaxis,  module HROOT.Class.TShape,  module HROOT.Class.TBRIK,  module HROOT.Class.TTUBE,  module HROOT.Class.TPCON,  module HROOT.Class.TSPHE,  module HROOT.Class.TXTRU,  module HROOT.Class.TBox,  module HROOT.Class.TPave,  module HROOT.Class.TPaveText,  module HROOT.Class.TDiamond,  module HROOT.Class.TPaveStats,  module HROOT.Class.TPavesText,  module HROOT.Class.TLegend,  module HROOT.Class.TLegendEntry,  module HROOT.Class.TPaveLabel,  module HROOT.Class.TPaveClass,  module HROOT.Class.TWbox,  module HROOT.Class.TFrame,  module HROOT.Class.TSliderBox,  module HROOT.Class.TTree,  module HROOT.Class.TChain,  module HROOT.Class.TNtuple,  module HROOT.Class.TNtupleD,  module HROOT.Class.TTreeSQL,  module HROOT.Class.TPolyLine,  module HROOT.Class.TCurlyLine,  module HROOT.Class.TCurlyArc,  module HROOT.Class.TEfficiency,  module HROOT.Class.TAxis,  module HROOT.Class.TLatex,  module HROOT.Class.TText,  module HROOT.Class.TDirectory,  module HROOT.Class.TDirectoryFile,  module HROOT.Class.TFile,  module HROOT.Class.TBranch,  module HROOT.Class.TVirtualTreePlayer,  module HROOT.Class.TTreePlayer,  module HROOT.Class.TArray,  module HROOT.Class.TArrayC,  module HROOT.Class.TArrayD,  module HROOT.Class.TArrayF,  module HROOT.Class.TArrayI,  module HROOT.Class.TArrayL,  module HROOT.Class.TArrayL64,  module HROOT.Class.TArrayS,  module HROOT.Class.TH1,  module HROOT.Class.TH2,  module HROOT.Class.TH3,  module HROOT.Class.TH1C,  module HROOT.Class.TH1D,  module HROOT.Class.TH1F,  module HROOT.Class.TH1I,  module HROOT.Class.TH1S,  module HROOT.Class.TH2C,  module HROOT.Class.TH2D,  module HROOT.Class.TH2F,  module HROOT.Class.TH2I,  module HROOT.Class.TH2Poly,  module HROOT.Class.TH2S,  module HROOT.Class.TH3C,  module HROOT.Class.TH3D,  module HROOT.Class.TH3F,  module HROOT.Class.TH3I,  module HROOT.Class.TH3S,  module HROOT.Class.TQObject,  module HROOT.Class.TVirtualPad,  module HROOT.Class.TPad,  module HROOT.Class.TButton,  module HROOT.Class.TGroupButton,  module HROOT.Class.TCanvas,  module HROOT.Class.TDialogCanvas,  module HROOT.Class.TInspectCanvas,  module HROOT.Class.TEvePad,  module HROOT.Class.TSlider,  module HROOT.Class.TApplication,  module HROOT.Class.TRint,  module HROOT.Class.TRandom,  module HROOT.Class.TCollection,  module HROOT.Class.TSeqCollection,  module HROOT.Class.TObjArray,  module HROOT.Class.TList,  module HROOT.Class.TKey,  module HROOT.Class.TDatime,  module HROOT.Class.TVirtualHistPainter 
+ module HROOT.Class.Deletable,  module HROOT.Class.TObject,  module HROOT.Class.TNamed,  module HROOT.Class.TDictionary,  module HROOT.Class.TClass,  module HROOT.Class.TFormula,  module HROOT.Class.TAtt3D,  module HROOT.Class.TAttAxis,  module HROOT.Class.TAttBBox,  module HROOT.Class.TAttCanvas,  module HROOT.Class.TAttFill,  module HROOT.Class.TAttImage,  module HROOT.Class.TAttLine,  module HROOT.Class.TAttMarker,  module HROOT.Class.TAttPad,  module HROOT.Class.TAttParticle,  module HROOT.Class.TAttText,  module HROOT.Class.THStack,  module HROOT.Class.TF1,  module HROOT.Class.TGraph,  module HROOT.Class.TGraphAsymmErrors,  module HROOT.Class.TCutG,  module HROOT.Class.TGraphBentErrors,  module HROOT.Class.TGraphErrors,  module HROOT.Class.TGraphPolar,  module HROOT.Class.TGraphQQ,  module HROOT.Class.TEllipse,  module HROOT.Class.TArc,  module HROOT.Class.TCrown,  module HROOT.Class.TLine,  module HROOT.Class.TArrow,  module HROOT.Class.TGaxis,  module HROOT.Class.TShape,  module HROOT.Class.TBRIK,  module HROOT.Class.TTUBE,  module HROOT.Class.TPCON,  module HROOT.Class.TSPHE,  module HROOT.Class.TXTRU,  module HROOT.Class.TBox,  module HROOT.Class.TPave,  module HROOT.Class.TPaveText,  module HROOT.Class.TDiamond,  module HROOT.Class.TPaveStats,  module HROOT.Class.TPavesText,  module HROOT.Class.TLegend,  module HROOT.Class.TLegendEntry,  module HROOT.Class.TPaveLabel,  module HROOT.Class.TPaveClass,  module HROOT.Class.TWbox,  module HROOT.Class.TFrame,  module HROOT.Class.TSliderBox,  module HROOT.Class.TTree,  module HROOT.Class.TChain,  module HROOT.Class.TNtuple,  module HROOT.Class.TNtupleD,  module HROOT.Class.TTreeSQL,  module HROOT.Class.TPolyLine,  module HROOT.Class.TCurlyLine,  module HROOT.Class.TCurlyArc,  module HROOT.Class.TEfficiency,  module HROOT.Class.TAxis,  module HROOT.Class.TLatex,  module HROOT.Class.TText,  module HROOT.Class.TDirectory,  module HROOT.Class.TROOT,  module HROOT.Class.TDirectoryFile,  module HROOT.Class.TFile,  module HROOT.Class.TBranch,  module HROOT.Class.TVirtualTreePlayer,  module HROOT.Class.TTreePlayer,  module HROOT.Class.TArray,  module HROOT.Class.TArrayC,  module HROOT.Class.TArrayD,  module HROOT.Class.TArrayF,  module HROOT.Class.TArrayI,  module HROOT.Class.TArrayL,  module HROOT.Class.TArrayL64,  module HROOT.Class.TArrayS,  module HROOT.Class.TH1,  module HROOT.Class.TH2,  module HROOT.Class.TH3,  module HROOT.Class.TH1C,  module HROOT.Class.TH1D,  module HROOT.Class.TH1F,  module HROOT.Class.TH1I,  module HROOT.Class.TH1S,  module HROOT.Class.TH2C,  module HROOT.Class.TH2D,  module HROOT.Class.TH2F,  module HROOT.Class.TH2I,  module HROOT.Class.TH2Poly,  module HROOT.Class.TH2S,  module HROOT.Class.TH3C,  module HROOT.Class.TH3D,  module HROOT.Class.TH3F,  module HROOT.Class.TH3I,  module HROOT.Class.TH3S,  module HROOT.Class.TQObject,  module HROOT.Class.TVirtualPad,  module HROOT.Class.TPad,  module HROOT.Class.TButton,  module HROOT.Class.TGroupButton,  module HROOT.Class.TCanvas,  module HROOT.Class.TDialogCanvas,  module HROOT.Class.TInspectCanvas,  module HROOT.Class.TEvePad,  module HROOT.Class.TSlider,  module HROOT.Class.TApplication,  module HROOT.Class.TRint,  module HROOT.Class.TRandom,  module HROOT.Class.TCollection,  module HROOT.Class.TSeqCollection,  module HROOT.Class.TObjArray,  module HROOT.Class.TList,  module HROOT.Class.TKey,  module HROOT.Class.TDatime,  module HROOT.Class.TVirtualHistPainter 
 ) where
 
 import HROOT.Class.Deletable
@@ -88,6 +88,7 @@
 import HROOT.Class.TLatex
 import HROOT.Class.TText
 import HROOT.Class.TDirectory
+import HROOT.Class.TROOT
 import HROOT.Class.TDirectoryFile
 import HROOT.Class.TFile
 import HROOT.Class.TBranch
diff --git a/src/HROOT/Class/Deletable/Implementation.hs b/src/HROOT/Class/Deletable/Implementation.hs
--- a/src/HROOT/Class/Deletable/Implementation.hs
+++ b/src/HROOT/Class/Deletable/Implementation.hs
@@ -31,3 +31,5 @@
 
 
 
+
+
diff --git a/src/HROOT/Class/TApplication/Implementation.hs b/src/HROOT/Class/TApplication/Implementation.hs
--- a/src/HROOT/Class/TApplication/Implementation.hs
+++ b/src/HROOT/Class/TApplication/Implementation.hs
@@ -79,6 +79,8 @@
 
 
 
+
+
 instance FPtr (Exist TApplication) where
   type Raw (Exist TApplication) = RawTApplication
   get_fptr (ETApplication obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TArc/Implementation.hs b/src/HROOT/Class/TArc/Implementation.hs
--- a/src/HROOT/Class/TArc/Implementation.hs
+++ b/src/HROOT/Class/TArc/Implementation.hs
@@ -108,6 +108,8 @@
 
 
 
+
+
 instance FPtr (Exist TArc) where
   type Raw (Exist TArc) = RawTArc
   get_fptr (ETArc obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TArray/Implementation.hs b/src/HROOT/Class/TArray/Implementation.hs
--- a/src/HROOT/Class/TArray/Implementation.hs
+++ b/src/HROOT/Class/TArray/Implementation.hs
@@ -37,6 +37,8 @@
 
 
 
+
+
 instance FPtr (Exist TArray) where
   type Raw (Exist TArray) = RawTArray
   get_fptr (ETArray obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TArrayC/Implementation.hs b/src/HROOT/Class/TArrayC/Implementation.hs
--- a/src/HROOT/Class/TArrayC/Implementation.hs
+++ b/src/HROOT/Class/TArrayC/Implementation.hs
@@ -43,6 +43,8 @@
 
 
 
+
+
 instance FPtr (Exist TArrayC) where
   type Raw (Exist TArrayC) = RawTArrayC
   get_fptr (ETArrayC obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TArrayD/Implementation.hs b/src/HROOT/Class/TArrayD/Implementation.hs
--- a/src/HROOT/Class/TArrayD/Implementation.hs
+++ b/src/HROOT/Class/TArrayD/Implementation.hs
@@ -43,6 +43,8 @@
 
 
 
+
+
 instance FPtr (Exist TArrayD) where
   type Raw (Exist TArrayD) = RawTArrayD
   get_fptr (ETArrayD obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TArrayF/Implementation.hs b/src/HROOT/Class/TArrayF/Implementation.hs
--- a/src/HROOT/Class/TArrayF/Implementation.hs
+++ b/src/HROOT/Class/TArrayF/Implementation.hs
@@ -43,6 +43,8 @@
 
 
 
+
+
 instance FPtr (Exist TArrayF) where
   type Raw (Exist TArrayF) = RawTArrayF
   get_fptr (ETArrayF obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TArrayI/Implementation.hs b/src/HROOT/Class/TArrayI/Implementation.hs
--- a/src/HROOT/Class/TArrayI/Implementation.hs
+++ b/src/HROOT/Class/TArrayI/Implementation.hs
@@ -43,6 +43,8 @@
 
 
 
+
+
 instance FPtr (Exist TArrayI) where
   type Raw (Exist TArrayI) = RawTArrayI
   get_fptr (ETArrayI obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TArrayL/Implementation.hs b/src/HROOT/Class/TArrayL/Implementation.hs
--- a/src/HROOT/Class/TArrayL/Implementation.hs
+++ b/src/HROOT/Class/TArrayL/Implementation.hs
@@ -43,6 +43,8 @@
 
 
 
+
+
 instance FPtr (Exist TArrayL) where
   type Raw (Exist TArrayL) = RawTArrayL
   get_fptr (ETArrayL obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TArrayL64/Implementation.hs b/src/HROOT/Class/TArrayL64/Implementation.hs
--- a/src/HROOT/Class/TArrayL64/Implementation.hs
+++ b/src/HROOT/Class/TArrayL64/Implementation.hs
@@ -43,6 +43,8 @@
 
 
 
+
+
 instance FPtr (Exist TArrayL64) where
   type Raw (Exist TArrayL64) = RawTArrayL64
   get_fptr (ETArrayL64 obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TArrayS/Implementation.hs b/src/HROOT/Class/TArrayS/Implementation.hs
--- a/src/HROOT/Class/TArrayS/Implementation.hs
+++ b/src/HROOT/Class/TArrayS/Implementation.hs
@@ -43,6 +43,8 @@
 
 
 
+
+
 instance FPtr (Exist TArrayS) where
   type Raw (Exist TArrayS) = RawTArrayS
   get_fptr (ETArrayS obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TArrow/Implementation.hs b/src/HROOT/Class/TArrow/Implementation.hs
--- a/src/HROOT/Class/TArrow/Implementation.hs
+++ b/src/HROOT/Class/TArrow/Implementation.hs
@@ -123,6 +123,8 @@
 
 
 
+
+
 instance FPtr (Exist TArrow) where
   type Raw (Exist TArrow) = RawTArrow
   get_fptr (ETArrow obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TAtt3D/Implementation.hs b/src/HROOT/Class/TAtt3D/Implementation.hs
--- a/src/HROOT/Class/TAtt3D/Implementation.hs
+++ b/src/HROOT/Class/TAtt3D/Implementation.hs
@@ -37,6 +37,8 @@
 
 
 
+
+
 instance FPtr (Exist TAtt3D) where
   type Raw (Exist TAtt3D) = RawTAtt3D
   get_fptr (ETAtt3D obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TAttAxis/Implementation.hs b/src/HROOT/Class/TAttAxis/Implementation.hs
--- a/src/HROOT/Class/TAttAxis/Implementation.hs
+++ b/src/HROOT/Class/TAttAxis/Implementation.hs
@@ -80,6 +80,8 @@
 
 
 
+
+
 instance FPtr (Exist TAttAxis) where
   type Raw (Exist TAttAxis) = RawTAttAxis
   get_fptr (ETAttAxis obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TAttBBox/Implementation.hs b/src/HROOT/Class/TAttBBox/Implementation.hs
--- a/src/HROOT/Class/TAttBBox/Implementation.hs
+++ b/src/HROOT/Class/TAttBBox/Implementation.hs
@@ -37,6 +37,8 @@
 
 
 
+
+
 instance FPtr (Exist TAttBBox) where
   type Raw (Exist TAttBBox) = RawTAttBBox
   get_fptr (ETAttBBox obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TAttCanvas/Implementation.hs b/src/HROOT/Class/TAttCanvas/Implementation.hs
--- a/src/HROOT/Class/TAttCanvas/Implementation.hs
+++ b/src/HROOT/Class/TAttCanvas/Implementation.hs
@@ -39,6 +39,8 @@
 
 
 
+
+
 instance FPtr (Exist TAttCanvas) where
   type Raw (Exist TAttCanvas) = RawTAttCanvas
   get_fptr (ETAttCanvas obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TAttFill/Implementation.hs b/src/HROOT/Class/TAttFill/Implementation.hs
--- a/src/HROOT/Class/TAttFill/Implementation.hs
+++ b/src/HROOT/Class/TAttFill/Implementation.hs
@@ -42,6 +42,8 @@
 
 
 
+
+
 instance FPtr (Exist TAttFill) where
   type Raw (Exist TAttFill) = RawTAttFill
   get_fptr (ETAttFill obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TAttImage/Implementation.hs b/src/HROOT/Class/TAttImage/Implementation.hs
--- a/src/HROOT/Class/TAttImage/Implementation.hs
+++ b/src/HROOT/Class/TAttImage/Implementation.hs
@@ -37,6 +37,8 @@
 
 
 
+
+
 instance FPtr (Exist TAttImage) where
   type Raw (Exist TAttImage) = RawTAttImage
   get_fptr (ETAttImage obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TAttLine/Implementation.hs b/src/HROOT/Class/TAttLine/Implementation.hs
--- a/src/HROOT/Class/TAttLine/Implementation.hs
+++ b/src/HROOT/Class/TAttLine/Implementation.hs
@@ -55,6 +55,8 @@
 tAttLineDistancetoLine :: TAttLine -> Int -> Int -> Double -> Double -> Double -> Double -> IO Int
 tAttLineDistancetoLine = xform6 c_tattline_tattlinedistancetoline
 
+
+
 instance FPtr (Exist TAttLine) where
   type Raw (Exist TAttLine) = RawTAttLine
   get_fptr (ETAttLine obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TAttMarker/Implementation.hs b/src/HROOT/Class/TAttMarker/Implementation.hs
--- a/src/HROOT/Class/TAttMarker/Implementation.hs
+++ b/src/HROOT/Class/TAttMarker/Implementation.hs
@@ -54,6 +54,8 @@
 
 
 
+
+
 instance FPtr (Exist TAttMarker) where
   type Raw (Exist TAttMarker) = RawTAttMarker
   get_fptr (ETAttMarker obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TAttPad/Implementation.hs b/src/HROOT/Class/TAttPad/Implementation.hs
--- a/src/HROOT/Class/TAttPad/Implementation.hs
+++ b/src/HROOT/Class/TAttPad/Implementation.hs
@@ -132,6 +132,8 @@
 tAttPadSetFrameBorderMode :: TAttPad -> Int -> IO ()
 tAttPadSetFrameBorderMode = xform1 c_tattpad_tattpadsetframebordermode
 
+
+
 instance FPtr (Exist TAttPad) where
   type Raw (Exist TAttPad) = RawTAttPad
   get_fptr (ETAttPad obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TAttParticle/Implementation.hs b/src/HROOT/Class/TAttParticle/Implementation.hs
--- a/src/HROOT/Class/TAttParticle/Implementation.hs
+++ b/src/HROOT/Class/TAttParticle/Implementation.hs
@@ -81,6 +81,8 @@
 
 
 
+
+
 instance FPtr (Exist TAttParticle) where
   type Raw (Exist TAttParticle) = RawTAttParticle
   get_fptr (ETAttParticle obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TAttText/Implementation.hs b/src/HROOT/Class/TAttText/Implementation.hs
--- a/src/HROOT/Class/TAttText/Implementation.hs
+++ b/src/HROOT/Class/TAttText/Implementation.hs
@@ -64,6 +64,8 @@
 
 
 
+
+
 instance FPtr (Exist TAttText) where
   type Raw (Exist TAttText) = RawTAttText
   get_fptr (ETAttText obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TAxis/Implementation.hs b/src/HROOT/Class/TAxis/Implementation.hs
--- a/src/HROOT/Class/TAxis/Implementation.hs
+++ b/src/HROOT/Class/TAxis/Implementation.hs
@@ -149,6 +149,8 @@
 tAxisGetCenterTitle :: TAxis -> IO Int
 tAxisGetCenterTitle = xform0 c_taxis_taxisgetcentertitle
 
+
+
 instance FPtr (Exist TAxis) where
   type Raw (Exist TAxis) = RawTAxis
   get_fptr (ETAxis obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TBRIK/Implementation.hs b/src/HROOT/Class/TBRIK/Implementation.hs
--- a/src/HROOT/Class/TBRIK/Implementation.hs
+++ b/src/HROOT/Class/TBRIK/Implementation.hs
@@ -125,6 +125,8 @@
 
 
 
+
+
 instance FPtr (Exist TBRIK) where
   type Raw (Exist TBRIK) = RawTBRIK
   get_fptr (ETBRIK obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TBox/Implementation.hs b/src/HROOT/Class/TBox/Implementation.hs
--- a/src/HROOT/Class/TBox/Implementation.hs
+++ b/src/HROOT/Class/TBox/Implementation.hs
@@ -102,6 +102,8 @@
 
 
 
+
+
 instance FPtr (Exist TBox) where
   type Raw (Exist TBox) = RawTBox
   get_fptr (ETBox obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TBranch/Implementation.hs b/src/HROOT/Class/TBranch/Implementation.hs
--- a/src/HROOT/Class/TBranch/Implementation.hs
+++ b/src/HROOT/Class/TBranch/Implementation.hs
@@ -90,6 +90,8 @@
 
 
 
+
+
 instance FPtr (Exist TBranch) where
   type Raw (Exist TBranch) = RawTBranch
   get_fptr (ETBranch obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TButton/Implementation.hs b/src/HROOT/Class/TButton/Implementation.hs
--- a/src/HROOT/Class/TButton/Implementation.hs
+++ b/src/HROOT/Class/TButton/Implementation.hs
@@ -188,6 +188,8 @@
 
 
 
+
+
 instance FPtr (Exist TButton) where
   type Raw (Exist TButton) = RawTButton
   get_fptr (ETButton obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TCanvas/Implementation.hs b/src/HROOT/Class/TCanvas/Implementation.hs
--- a/src/HROOT/Class/TCanvas/Implementation.hs
+++ b/src/HROOT/Class/TCanvas/Implementation.hs
@@ -159,6 +159,8 @@
 
 
 
+
+
 instance FPtr (Exist TCanvas) where
   type Raw (Exist TCanvas) = RawTCanvas
   get_fptr (ETCanvas obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TChain/Implementation.hs b/src/HROOT/Class/TChain/Implementation.hs
--- a/src/HROOT/Class/TChain/Implementation.hs
+++ b/src/HROOT/Class/TChain/Implementation.hs
@@ -140,6 +140,8 @@
 
 
 
+
+
 instance FPtr (Exist TChain) where
   type Raw (Exist TChain) = RawTChain
   get_fptr (ETChain obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TClass/Implementation.hs b/src/HROOT/Class/TClass/Implementation.hs
--- a/src/HROOT/Class/TClass/Implementation.hs
+++ b/src/HROOT/Class/TClass/Implementation.hs
@@ -85,6 +85,8 @@
 
 
 
+
+
 instance FPtr (Exist TClass) where
   type Raw (Exist TClass) = RawTClass
   get_fptr (ETClass obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TCollection/Implementation.hs b/src/HROOT/Class/TCollection/Implementation.hs
--- a/src/HROOT/Class/TCollection/Implementation.hs
+++ b/src/HROOT/Class/TCollection/Implementation.hs
@@ -70,6 +70,8 @@
 
 
 
+
+
 instance FPtr (Exist TCollection) where
   type Raw (Exist TCollection) = RawTCollection
   get_fptr (ETCollection obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TCrown/Implementation.hs b/src/HROOT/Class/TCrown/Implementation.hs
--- a/src/HROOT/Class/TCrown/Implementation.hs
+++ b/src/HROOT/Class/TCrown/Implementation.hs
@@ -108,6 +108,8 @@
 
 
 
+
+
 instance FPtr (Exist TCrown) where
   type Raw (Exist TCrown) = RawTCrown
   get_fptr (ETCrown obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TCurlyArc/Implementation.hs b/src/HROOT/Class/TCurlyArc/Implementation.hs
--- a/src/HROOT/Class/TCurlyArc/Implementation.hs
+++ b/src/HROOT/Class/TCurlyArc/Implementation.hs
@@ -114,6 +114,8 @@
 
 
 
+
+
 instance FPtr (Exist TCurlyArc) where
   type Raw (Exist TCurlyArc) = RawTCurlyArc
   get_fptr (ETCurlyArc obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TCurlyLine/Implementation.hs b/src/HROOT/Class/TCurlyLine/Implementation.hs
--- a/src/HROOT/Class/TCurlyLine/Implementation.hs
+++ b/src/HROOT/Class/TCurlyLine/Implementation.hs
@@ -108,6 +108,8 @@
 
 
 
+
+
 instance FPtr (Exist TCurlyLine) where
   type Raw (Exist TCurlyLine) = RawTCurlyLine
   get_fptr (ETCurlyLine obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TCutG/Implementation.hs b/src/HROOT/Class/TCutG/Implementation.hs
--- a/src/HROOT/Class/TCutG/Implementation.hs
+++ b/src/HROOT/Class/TCutG/Implementation.hs
@@ -215,6 +215,8 @@
 
 
 
+
+
 instance FPtr (Exist TCutG) where
   type Raw (Exist TCutG) = RawTCutG
   get_fptr (ETCutG obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TDatime/Implementation.hs b/src/HROOT/Class/TDatime/Implementation.hs
--- a/src/HROOT/Class/TDatime/Implementation.hs
+++ b/src/HROOT/Class/TDatime/Implementation.hs
@@ -58,6 +58,8 @@
 tDatimeGetMonth :: TDatime -> IO Int
 tDatimeGetMonth = xform0 c_tdatime_tdatimegetmonth
 
+
+
 instance FPtr (Exist TDatime) where
   type Raw (Exist TDatime) = RawTDatime
   get_fptr (ETDatime obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TDialogCanvas/Implementation.hs b/src/HROOT/Class/TDialogCanvas/Implementation.hs
--- a/src/HROOT/Class/TDialogCanvas/Implementation.hs
+++ b/src/HROOT/Class/TDialogCanvas/Implementation.hs
@@ -194,6 +194,8 @@
 
 
 
+
+
 instance FPtr (Exist TDialogCanvas) where
   type Raw (Exist TDialogCanvas) = RawTDialogCanvas
   get_fptr (ETDialogCanvas obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TDiamond/Implementation.hs b/src/HROOT/Class/TDiamond/Implementation.hs
--- a/src/HROOT/Class/TDiamond/Implementation.hs
+++ b/src/HROOT/Class/TDiamond/Implementation.hs
@@ -151,6 +151,8 @@
 
 
 
+
+
 instance FPtr (Exist TDiamond) where
   type Raw (Exist TDiamond) = RawTDiamond
   get_fptr (ETDiamond obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TDictionary/Implementation.hs b/src/HROOT/Class/TDictionary/Implementation.hs
--- a/src/HROOT/Class/TDictionary/Implementation.hs
+++ b/src/HROOT/Class/TDictionary/Implementation.hs
@@ -44,3 +44,5 @@
 
 
 
+
+
diff --git a/src/HROOT/Class/TDirectory/FFI.hsc b/src/HROOT/Class/TDirectory/FFI.hsc
--- a/src/HROOT/Class/TDirectory/FFI.hsc
+++ b/src/HROOT/Class/TDirectory/FFI.hsc
@@ -53,6 +53,10 @@
   :: (Ptr RawTDirectory) -> CString -> CInt -> CInt -> IO CInt
 foreign import ccall "HROOTTDirectory.h TDirectory_delete" c_tdirectory_delete 
   :: (Ptr RawTDirectory) -> IO ()
+foreign import ccall "HROOTTDirectory.h TDirectory_tDirectoryAddDirectory" c_tdirectory_tdirectoryadddirectory 
+  :: CInt -> IO ()
+foreign import ccall "HROOTTDirectory.h TDirectory_tDirectoryAddDirectoryStatus" c_tdirectory_tdirectoryadddirectorystatus 
+  :: IO CInt
 foreign import ccall "HROOTTDirectory.h TDirectory_Append" c_tdirectory_append 
   :: (Ptr RawTDirectory) -> (Ptr RawTObject) -> CInt -> IO ()
 foreign import ccall "HROOTTDirectory.h TDirectory_addD" c_tdirectory_addd 
diff --git a/src/HROOT/Class/TDirectory/Implementation.hs b/src/HROOT/Class/TDirectory/Implementation.hs
--- a/src/HROOT/Class/TDirectory/Implementation.hs
+++ b/src/HROOT/Class/TDirectory/Implementation.hs
@@ -93,6 +93,12 @@
 
 
 
+tDirectoryAddDirectory :: Int -> IO ()
+tDirectoryAddDirectory = xform0 c_tdirectory_tdirectoryadddirectory
+
+tDirectoryAddDirectoryStatus :: IO Int
+tDirectoryAddDirectoryStatus = xformnull c_tdirectory_tdirectoryadddirectorystatus
+
 instance FPtr (Exist TDirectory) where
   type Raw (Exist TDirectory) = RawTDirectory
   get_fptr (ETDirectory obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TDirectoryFile/Implementation.hs b/src/HROOT/Class/TDirectoryFile/Implementation.hs
--- a/src/HROOT/Class/TDirectoryFile/Implementation.hs
+++ b/src/HROOT/Class/TDirectoryFile/Implementation.hs
@@ -103,6 +103,8 @@
 
 
 
+
+
 instance FPtr (Exist TDirectoryFile) where
   type Raw (Exist TDirectoryFile) = RawTDirectoryFile
   get_fptr (ETDirectoryFile obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TEfficiency/Implementation.hs b/src/HROOT/Class/TEfficiency/Implementation.hs
--- a/src/HROOT/Class/TEfficiency/Implementation.hs
+++ b/src/HROOT/Class/TEfficiency/Implementation.hs
@@ -132,6 +132,8 @@
 
 
 
+
+
 instance FPtr (Exist TEfficiency) where
   type Raw (Exist TEfficiency) = RawTEfficiency
   get_fptr (ETEfficiency obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TEllipse/Implementation.hs b/src/HROOT/Class/TEllipse/Implementation.hs
--- a/src/HROOT/Class/TEllipse/Implementation.hs
+++ b/src/HROOT/Class/TEllipse/Implementation.hs
@@ -102,6 +102,8 @@
 
 
 
+
+
 instance FPtr (Exist TEllipse) where
   type Raw (Exist TEllipse) = RawTEllipse
   get_fptr (ETEllipse obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TEvePad/Implementation.hs b/src/HROOT/Class/TEvePad/Implementation.hs
--- a/src/HROOT/Class/TEvePad/Implementation.hs
+++ b/src/HROOT/Class/TEvePad/Implementation.hs
@@ -157,6 +157,8 @@
 
 
 
+
+
 instance FPtr (Exist TEvePad) where
   type Raw (Exist TEvePad) = RawTEvePad
   get_fptr (ETEvePad obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TF1/FFI.hsc b/src/HROOT/Class/TF1/FFI.hsc
--- a/src/HROOT/Class/TF1/FFI.hsc
+++ b/src/HROOT/Class/TF1/FFI.hsc
@@ -134,6 +134,8 @@
   :: (Ptr RawTF1) -> CDouble -> (Ptr CDouble) -> CDouble -> IO CDouble
 foreign import ccall "HROOTTF1.h TF1_Derivative3" c_tf1_derivative3 
   :: (Ptr RawTF1) -> CDouble -> (Ptr CDouble) -> CDouble -> IO CDouble
+foreign import ccall "HROOTTF1.h TF1_tF1DerivativeError" c_tf1_tf1derivativeerror 
+  :: IO CDouble
 foreign import ccall "HROOTTF1.h TF1_drawCopyTF1" c_tf1_drawcopytf1 
   :: (Ptr RawTF1) -> CString -> IO (Ptr RawTF1)
 foreign import ccall "HROOTTF1.h TF1_DrawDerivative" c_tf1_drawderivative 
@@ -192,6 +194,8 @@
   :: (Ptr RawTF1) -> CInt -> (Ptr CDouble) -> CDouble -> IO CDouble
 foreign import ccall "HROOTTF1.h TF1_InitArgs" c_tf1_initargs 
   :: (Ptr RawTF1) -> (Ptr CDouble) -> (Ptr CDouble) -> IO ()
+foreign import ccall "HROOTTF1.h TF1_tF1InitStandardFunctions" c_tf1_tf1initstandardfunctions 
+  :: IO ()
 foreign import ccall "HROOTTF1.h TF1_IntegralTF1" c_tf1_integraltf1 
   :: (Ptr RawTF1) -> CDouble -> CDouble -> (Ptr CDouble) -> CDouble -> IO CDouble
 foreign import ccall "HROOTTF1.h TF1_IntegralError" c_tf1_integralerror 
@@ -230,6 +234,16 @@
   :: (Ptr RawTF1) -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> IO ()
 foreign import ccall "HROOTTF1.h TF1_SetSavedPoint" c_tf1_setsavedpoint 
   :: (Ptr RawTF1) -> CInt -> CDouble -> IO ()
+foreign import ccall "HROOTTF1.h TF1_tF1GetCurrent" c_tf1_tf1getcurrent 
+  :: IO (Ptr RawTF1)
+foreign import ccall "HROOTTF1.h TF1_tF1AbsValue" c_tf1_tf1absvalue 
+  :: CInt -> IO ()
+foreign import ccall "HROOTTF1.h TF1_tF1RejectPoint" c_tf1_tf1rejectpoint 
+  :: CInt -> IO ()
+foreign import ccall "HROOTTF1.h TF1_tF1RejectedPoint" c_tf1_tf1rejectedpoint 
+  :: IO CInt
+foreign import ccall "HROOTTF1.h TF1_tF1SetCurrent" c_tf1_tf1setcurrent 
+  :: (Ptr RawTF1) -> IO ()
 foreign import ccall "HROOTTF1.h TF1_Moment" c_tf1_moment 
   :: (Ptr RawTF1) -> CDouble -> CDouble -> CDouble -> (Ptr CDouble) -> CDouble -> IO CDouble
 foreign import ccall "HROOTTF1.h TF1_CentralMoment" c_tf1_centralmoment 
@@ -238,4 +252,6 @@
   :: (Ptr RawTF1) -> CDouble -> CDouble -> (Ptr CDouble) -> CDouble -> IO CDouble
 foreign import ccall "HROOTTF1.h TF1_Variance" c_tf1_variance 
   :: (Ptr RawTF1) -> CDouble -> CDouble -> (Ptr CDouble) -> CDouble -> IO CDouble
+foreign import ccall "HROOTTF1.h TF1_tF1CalcGaussLegendreSamplingPoints" c_tf1_tf1calcgausslegendresamplingpoints 
+  :: CInt -> (Ptr CDouble) -> (Ptr CDouble) -> CDouble -> IO ()
 
diff --git a/src/HROOT/Class/TF1/Implementation.hs b/src/HROOT/Class/TF1/Implementation.hs
--- a/src/HROOT/Class/TF1/Implementation.hs
+++ b/src/HROOT/Class/TF1/Implementation.hs
@@ -294,6 +294,30 @@
 tF1GetZaxis :: TF1 -> IO TAxis
 tF1GetZaxis = xform0 c_tf1_tf1getzaxis
 
+tF1DerivativeError :: IO Double
+tF1DerivativeError = xformnull c_tf1_tf1derivativeerror
+
+tF1InitStandardFunctions :: IO ()
+tF1InitStandardFunctions = xformnull c_tf1_tf1initstandardfunctions
+
+tF1GetCurrent :: IO TF1
+tF1GetCurrent = xformnull c_tf1_tf1getcurrent
+
+tF1AbsValue :: Int -> IO ()
+tF1AbsValue = xform0 c_tf1_tf1absvalue
+
+tF1RejectPoint :: Int -> IO ()
+tF1RejectPoint = xform0 c_tf1_tf1rejectpoint
+
+tF1RejectedPoint :: IO Int
+tF1RejectedPoint = xformnull c_tf1_tf1rejectedpoint
+
+tF1SetCurrent :: TF1 -> IO ()
+tF1SetCurrent = xform0 c_tf1_tf1setcurrent
+
+tF1CalcGaussLegendreSamplingPoints :: Int -> [Double] -> [Double] -> Double -> IO ()
+tF1CalcGaussLegendreSamplingPoints = xform3 c_tf1_tf1calcgausslegendresamplingpoints
+
 instance FPtr (Exist TF1) where
   type Raw (Exist TF1) = RawTF1
   get_fptr (ETF1 obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TFile/Implementation.hs b/src/HROOT/Class/TFile/Implementation.hs
--- a/src/HROOT/Class/TFile/Implementation.hs
+++ b/src/HROOT/Class/TFile/Implementation.hs
@@ -111,6 +111,8 @@
 
 
 
+
+
 instance FPtr (Exist TFile) where
   type Raw (Exist TFile) = RawTFile
   get_fptr (ETFile obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TFormula/Implementation.hs b/src/HROOT/Class/TFormula/Implementation.hs
--- a/src/HROOT/Class/TFormula/Implementation.hs
+++ b/src/HROOT/Class/TFormula/Implementation.hs
@@ -122,6 +122,8 @@
 tFormulaGetParameter :: TFormula -> String -> IO Double
 tFormulaGetParameter = xform1 c_tformula_tformulagetparameter
 
+
+
 instance FPtr (Exist TFormula) where
   type Raw (Exist TFormula) = RawTFormula
   get_fptr (ETFormula obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TFrame/Implementation.hs b/src/HROOT/Class/TFrame/Implementation.hs
--- a/src/HROOT/Class/TFrame/Implementation.hs
+++ b/src/HROOT/Class/TFrame/Implementation.hs
@@ -115,6 +115,8 @@
 
 
 
+
+
 instance FPtr (Exist TFrame) where
   type Raw (Exist TFrame) = RawTFrame
   get_fptr (ETFrame obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TGaxis/Implementation.hs b/src/HROOT/Class/TGaxis/Implementation.hs
--- a/src/HROOT/Class/TGaxis/Implementation.hs
+++ b/src/HROOT/Class/TGaxis/Implementation.hs
@@ -145,6 +145,8 @@
 
 
 
+
+
 instance FPtr (Exist TGaxis) where
   type Raw (Exist TGaxis) = RawTGaxis
   get_fptr (ETGaxis obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TGraph/Implementation.hs b/src/HROOT/Class/TGraph/Implementation.hs
--- a/src/HROOT/Class/TGraph/Implementation.hs
+++ b/src/HROOT/Class/TGraph/Implementation.hs
@@ -243,6 +243,8 @@
 tGraphPaintGrapHist :: TGraph -> Int -> [Double] -> [Double] -> String -> IO ()
 tGraphPaintGrapHist = xform4 c_tgraph_tgraphpaintgraphist
 
+
+
 instance FPtr (Exist TGraph) where
   type Raw (Exist TGraph) = RawTGraph
   get_fptr (ETGraph obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TGraphAsymmErrors/Implementation.hs b/src/HROOT/Class/TGraphAsymmErrors/Implementation.hs
--- a/src/HROOT/Class/TGraphAsymmErrors/Implementation.hs
+++ b/src/HROOT/Class/TGraphAsymmErrors/Implementation.hs
@@ -215,6 +215,8 @@
 
 
 
+
+
 instance FPtr (Exist TGraphAsymmErrors) where
   type Raw (Exist TGraphAsymmErrors) = RawTGraphAsymmErrors
   get_fptr (ETGraphAsymmErrors obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TGraphBentErrors/Implementation.hs b/src/HROOT/Class/TGraphBentErrors/Implementation.hs
--- a/src/HROOT/Class/TGraphBentErrors/Implementation.hs
+++ b/src/HROOT/Class/TGraphBentErrors/Implementation.hs
@@ -215,6 +215,8 @@
 
 
 
+
+
 instance FPtr (Exist TGraphBentErrors) where
   type Raw (Exist TGraphBentErrors) = RawTGraphBentErrors
   get_fptr (ETGraphBentErrors obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TGraphErrors/Implementation.hs b/src/HROOT/Class/TGraphErrors/Implementation.hs
--- a/src/HROOT/Class/TGraphErrors/Implementation.hs
+++ b/src/HROOT/Class/TGraphErrors/Implementation.hs
@@ -215,6 +215,8 @@
 
 
 
+
+
 instance FPtr (Exist TGraphErrors) where
   type Raw (Exist TGraphErrors) = RawTGraphErrors
   get_fptr (ETGraphErrors obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TGraphPolar/Implementation.hs b/src/HROOT/Class/TGraphPolar/Implementation.hs
--- a/src/HROOT/Class/TGraphPolar/Implementation.hs
+++ b/src/HROOT/Class/TGraphPolar/Implementation.hs
@@ -221,6 +221,8 @@
 
 
 
+
+
 instance FPtr (Exist TGraphPolar) where
   type Raw (Exist TGraphPolar) = RawTGraphPolar
   get_fptr (ETGraphPolar obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TGraphQQ/Implementation.hs b/src/HROOT/Class/TGraphQQ/Implementation.hs
--- a/src/HROOT/Class/TGraphQQ/Implementation.hs
+++ b/src/HROOT/Class/TGraphQQ/Implementation.hs
@@ -215,6 +215,8 @@
 
 
 
+
+
 instance FPtr (Exist TGraphQQ) where
   type Raw (Exist TGraphQQ) = RawTGraphQQ
   get_fptr (ETGraphQQ obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TGroupButton/Implementation.hs b/src/HROOT/Class/TGroupButton/Implementation.hs
--- a/src/HROOT/Class/TGroupButton/Implementation.hs
+++ b/src/HROOT/Class/TGroupButton/Implementation.hs
@@ -194,6 +194,8 @@
 
 
 
+
+
 instance FPtr (Exist TGroupButton) where
   type Raw (Exist TGroupButton) = RawTGroupButton
   get_fptr (ETGroupButton obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TH1/FFI.hsc b/src/HROOT/Class/TH1/FFI.hsc
--- a/src/HROOT/Class/TH1/FFI.hsc
+++ b/src/HROOT/Class/TH1/FFI.hsc
@@ -140,6 +140,8 @@
   :: (Ptr RawTH1) -> IO CInt
 foreign import ccall "HROOTTH1.h TH1_tH1GetBufferSize" c_th1_th1getbuffersize 
   :: (Ptr RawTH1) -> IO CInt
+foreign import ccall "HROOTTH1.h TH1_tH1GetDefaultBufferSize" c_th1_th1getdefaultbuffersize 
+  :: IO CInt
 foreign import ccall "HROOTTH1.h TH1_getNdivisionA" c_th1_getndivisiona 
   :: (Ptr RawTH1) -> CString -> IO CInt
 foreign import ccall "HROOTTH1.h TH1_getAxisColorA" c_th1_getaxiscolora 
@@ -194,6 +196,8 @@
   :: (Ptr RawTH1) -> CInt -> CInt -> IO CDouble
 foreign import ccall "HROOTTH1.h TH1_GetCellError" c_th1_getcellerror 
   :: (Ptr RawTH1) -> CInt -> CInt -> IO CDouble
+foreign import ccall "HROOTTH1.h TH1_tH1GetDefaultSumw2" c_th1_th1getdefaultsumw2 
+  :: IO CInt
 foreign import ccall "HROOTTH1.h TH1_tH1GetDirectory" c_th1_th1getdirectory 
   :: (Ptr RawTH1) -> IO (Ptr RawTDirectory)
 foreign import ccall "HROOTTH1.h TH1_GetEntries" c_th1_getentries 
@@ -330,6 +334,10 @@
   :: (Ptr RawTH1) -> CInt -> (Ptr CDouble) -> IO ()
 foreign import ccall "HROOTTH1.h TH1_SetContourLevel" c_th1_setcontourlevel 
   :: (Ptr RawTH1) -> CInt -> CDouble -> IO ()
+foreign import ccall "HROOTTH1.h TH1_tH1SetDefaultBufferSize" c_th1_th1setdefaultbuffersize 
+  :: CInt -> IO ()
+foreign import ccall "HROOTTH1.h TH1_tH1SetDefaultSumw2" c_th1_th1setdefaultsumw2 
+  :: CInt -> IO ()
 foreign import ccall "HROOTTH1.h TH1_SetDirectory" c_th1_setdirectory 
   :: (Ptr RawTH1) -> (Ptr RawTDirectory) -> IO ()
 foreign import ccall "HROOTTH1.h TH1_SetEntries" c_th1_setentries 
@@ -366,6 +374,10 @@
   :: (Ptr RawTH1) -> CDouble -> CString -> CDouble -> IO CInt
 foreign import ccall "HROOTTH1.h TH1_Smooth" c_th1_smooth 
   :: (Ptr RawTH1) -> CInt -> CString -> IO ()
+foreign import ccall "HROOTTH1.h TH1_tH1SmoothArray" c_th1_th1smootharray 
+  :: CInt -> (Ptr CDouble) -> CInt -> IO ()
+foreign import ccall "HROOTTH1.h TH1_tH1StatOverflows" c_th1_th1statoverflows 
+  :: CInt -> IO ()
 foreign import ccall "HROOTTH1.h TH1_Sumw2" c_th1_sumw2 
   :: (Ptr RawTH1) -> IO ()
 foreign import ccall "HROOTTH1.h TH1_tH1UseCurrentStyle" c_th1_th1usecurrentstyle 
diff --git a/src/HROOT/Class/TH1/Implementation.hs b/src/HROOT/Class/TH1/Implementation.hs
--- a/src/HROOT/Class/TH1/Implementation.hs
+++ b/src/HROOT/Class/TH1/Implementation.hs
@@ -429,6 +429,24 @@
 tH1UseCurrentStyle :: TH1 -> IO ()
 tH1UseCurrentStyle = xform0 c_th1_th1usecurrentstyle
 
+tH1GetDefaultBufferSize :: IO Int
+tH1GetDefaultBufferSize = xformnull c_th1_th1getdefaultbuffersize
+
+tH1GetDefaultSumw2 :: IO Int
+tH1GetDefaultSumw2 = xformnull c_th1_th1getdefaultsumw2
+
+tH1SetDefaultBufferSize :: Int -> IO ()
+tH1SetDefaultBufferSize = xform0 c_th1_th1setdefaultbuffersize
+
+tH1SetDefaultSumw2 :: Int -> IO ()
+tH1SetDefaultSumw2 = xform0 c_th1_th1setdefaultsumw2
+
+tH1SmoothArray :: Int -> [Double] -> Int -> IO ()
+tH1SmoothArray = xform2 c_th1_th1smootharray
+
+tH1StatOverflows :: Int -> IO ()
+tH1StatOverflows = xform0 c_th1_th1statoverflows
+
 instance FPtr (Exist TH1) where
   type Raw (Exist TH1) = RawTH1
   get_fptr (ETH1 obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TH1C/Implementation.hs b/src/HROOT/Class/TH1C/Implementation.hs
--- a/src/HROOT/Class/TH1C/Implementation.hs
+++ b/src/HROOT/Class/TH1C/Implementation.hs
@@ -419,6 +419,8 @@
 
 
 
+
+
 instance FPtr (Exist TH1C) where
   type Raw (Exist TH1C) = RawTH1C
   get_fptr (ETH1C obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TH1D/Implementation.hs b/src/HROOT/Class/TH1D/Implementation.hs
--- a/src/HROOT/Class/TH1D/Implementation.hs
+++ b/src/HROOT/Class/TH1D/Implementation.hs
@@ -418,6 +418,8 @@
 
 
 
+
+
 instance FPtr (Exist TH1D) where
   type Raw (Exist TH1D) = RawTH1D
   get_fptr (ETH1D obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TH1F/Implementation.hs b/src/HROOT/Class/TH1F/Implementation.hs
--- a/src/HROOT/Class/TH1F/Implementation.hs
+++ b/src/HROOT/Class/TH1F/Implementation.hs
@@ -421,6 +421,8 @@
 
 
 
+
+
 instance FPtr (Exist TH1F) where
   type Raw (Exist TH1F) = RawTH1F
   get_fptr (ETH1F obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TH1I/Implementation.hs b/src/HROOT/Class/TH1I/Implementation.hs
--- a/src/HROOT/Class/TH1I/Implementation.hs
+++ b/src/HROOT/Class/TH1I/Implementation.hs
@@ -419,6 +419,8 @@
 
 
 
+
+
 instance FPtr (Exist TH1I) where
   type Raw (Exist TH1I) = RawTH1I
   get_fptr (ETH1I obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TH1S/Implementation.hs b/src/HROOT/Class/TH1S/Implementation.hs
--- a/src/HROOT/Class/TH1S/Implementation.hs
+++ b/src/HROOT/Class/TH1S/Implementation.hs
@@ -419,6 +419,8 @@
 
 
 
+
+
 instance FPtr (Exist TH1S) where
   type Raw (Exist TH1S) = RawTH1S
   get_fptr (ETH1S obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TH2/Implementation.hs b/src/HROOT/Class/TH2/Implementation.hs
--- a/src/HROOT/Class/TH2/Implementation.hs
+++ b/src/HROOT/Class/TH2/Implementation.hs
@@ -448,6 +448,8 @@
 tH2ProjectionY :: TH2 -> String -> Int -> Int -> String -> IO TH1D
 tH2ProjectionY = xform4 c_th2_th2projectiony
 
+
+
 instance FPtr (Exist TH2) where
   type Raw (Exist TH2) = RawTH2
   get_fptr (ETH2 obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TH2C/Implementation.hs b/src/HROOT/Class/TH2C/Implementation.hs
--- a/src/HROOT/Class/TH2C/Implementation.hs
+++ b/src/HROOT/Class/TH2C/Implementation.hs
@@ -462,6 +462,8 @@
 
 
 
+
+
 instance FPtr (Exist TH2C) where
   type Raw (Exist TH2C) = RawTH2C
   get_fptr (ETH2C obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TH2D/Implementation.hs b/src/HROOT/Class/TH2D/Implementation.hs
--- a/src/HROOT/Class/TH2D/Implementation.hs
+++ b/src/HROOT/Class/TH2D/Implementation.hs
@@ -461,6 +461,8 @@
 
 
 
+
+
 instance FPtr (Exist TH2D) where
   type Raw (Exist TH2D) = RawTH2D
   get_fptr (ETH2D obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TH2F/Implementation.hs b/src/HROOT/Class/TH2F/Implementation.hs
--- a/src/HROOT/Class/TH2F/Implementation.hs
+++ b/src/HROOT/Class/TH2F/Implementation.hs
@@ -464,6 +464,8 @@
 
 
 
+
+
 instance FPtr (Exist TH2F) where
   type Raw (Exist TH2F) = RawTH2F
   get_fptr (ETH2F obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TH2I/Implementation.hs b/src/HROOT/Class/TH2I/Implementation.hs
--- a/src/HROOT/Class/TH2I/Implementation.hs
+++ b/src/HROOT/Class/TH2I/Implementation.hs
@@ -462,6 +462,8 @@
 
 
 
+
+
 instance FPtr (Exist TH2I) where
   type Raw (Exist TH2I) = RawTH2I
   get_fptr (ETH2I obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TH2Poly/Implementation.hs b/src/HROOT/Class/TH2Poly/Implementation.hs
--- a/src/HROOT/Class/TH2Poly/Implementation.hs
+++ b/src/HROOT/Class/TH2Poly/Implementation.hs
@@ -450,6 +450,8 @@
 
 
 
+
+
 instance FPtr (Exist TH2Poly) where
   type Raw (Exist TH2Poly) = RawTH2Poly
   get_fptr (ETH2Poly obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TH2S/Implementation.hs b/src/HROOT/Class/TH2S/Implementation.hs
--- a/src/HROOT/Class/TH2S/Implementation.hs
+++ b/src/HROOT/Class/TH2S/Implementation.hs
@@ -462,6 +462,8 @@
 
 
 
+
+
 instance FPtr (Exist TH2S) where
   type Raw (Exist TH2S) = RawTH2S
   get_fptr (ETH2S obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TH3/Implementation.hs b/src/HROOT/Class/TH3/Implementation.hs
--- a/src/HROOT/Class/TH3/Implementation.hs
+++ b/src/HROOT/Class/TH3/Implementation.hs
@@ -443,6 +443,8 @@
 tH3Project3D :: TH3 -> String -> IO TH1
 tH3Project3D = xform1 c_th3_th3project3d
 
+
+
 instance FPtr (Exist TH3) where
   type Raw (Exist TH3) = RawTH3
   get_fptr (ETH3 obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TH3C/Implementation.hs b/src/HROOT/Class/TH3C/Implementation.hs
--- a/src/HROOT/Class/TH3C/Implementation.hs
+++ b/src/HROOT/Class/TH3C/Implementation.hs
@@ -451,6 +451,8 @@
 
 
 
+
+
 instance FPtr (Exist TH3C) where
   type Raw (Exist TH3C) = RawTH3C
   get_fptr (ETH3C obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TH3D/Implementation.hs b/src/HROOT/Class/TH3D/Implementation.hs
--- a/src/HROOT/Class/TH3D/Implementation.hs
+++ b/src/HROOT/Class/TH3D/Implementation.hs
@@ -448,6 +448,8 @@
 
 
 
+
+
 instance FPtr (Exist TH3D) where
   type Raw (Exist TH3D) = RawTH3D
   get_fptr (ETH3D obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TH3F/Implementation.hs b/src/HROOT/Class/TH3F/Implementation.hs
--- a/src/HROOT/Class/TH3F/Implementation.hs
+++ b/src/HROOT/Class/TH3F/Implementation.hs
@@ -451,6 +451,8 @@
 
 
 
+
+
 instance FPtr (Exist TH3F) where
   type Raw (Exist TH3F) = RawTH3F
   get_fptr (ETH3F obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TH3I/Implementation.hs b/src/HROOT/Class/TH3I/Implementation.hs
--- a/src/HROOT/Class/TH3I/Implementation.hs
+++ b/src/HROOT/Class/TH3I/Implementation.hs
@@ -451,6 +451,8 @@
 
 
 
+
+
 instance FPtr (Exist TH3I) where
   type Raw (Exist TH3I) = RawTH3I
   get_fptr (ETH3I obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TH3S/Implementation.hs b/src/HROOT/Class/TH3S/Implementation.hs
--- a/src/HROOT/Class/TH3S/Implementation.hs
+++ b/src/HROOT/Class/TH3S/Implementation.hs
@@ -451,6 +451,8 @@
 
 
 
+
+
 instance FPtr (Exist TH3S) where
   type Raw (Exist TH3S) = RawTH3S
   get_fptr (ETH3S obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/THStack/Implementation.hs b/src/HROOT/Class/THStack/Implementation.hs
--- a/src/HROOT/Class/THStack/Implementation.hs
+++ b/src/HROOT/Class/THStack/Implementation.hs
@@ -83,6 +83,8 @@
 
 
 
+
+
 instance FPtr (Exist THStack) where
   type Raw (Exist THStack) = RawTHStack
   get_fptr (ETHStack obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TInspectCanvas/Implementation.hs b/src/HROOT/Class/TInspectCanvas/Implementation.hs
--- a/src/HROOT/Class/TInspectCanvas/Implementation.hs
+++ b/src/HROOT/Class/TInspectCanvas/Implementation.hs
@@ -194,6 +194,8 @@
 
 
 
+
+
 instance FPtr (Exist TInspectCanvas) where
   type Raw (Exist TInspectCanvas) = RawTInspectCanvas
   get_fptr (ETInspectCanvas obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TKey/Implementation.hs b/src/HROOT/Class/TKey/Implementation.hs
--- a/src/HROOT/Class/TKey/Implementation.hs
+++ b/src/HROOT/Class/TKey/Implementation.hs
@@ -81,6 +81,8 @@
 
 
 
+
+
 instance FPtr (Exist TKey) where
   type Raw (Exist TKey) = RawTKey
   get_fptr (ETKey obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TLatex/Implementation.hs b/src/HROOT/Class/TLatex/Implementation.hs
--- a/src/HROOT/Class/TLatex/Implementation.hs
+++ b/src/HROOT/Class/TLatex/Implementation.hs
@@ -149,6 +149,8 @@
 tLatexDrawLatex :: TLatex -> Double -> Double -> String -> IO TLatex
 tLatexDrawLatex = xform3 c_tlatex_tlatexdrawlatex
 
+
+
 instance FPtr (Exist TLatex) where
   type Raw (Exist TLatex) = RawTLatex
   get_fptr (ETLatex obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TLegend/Implementation.hs b/src/HROOT/Class/TLegend/Implementation.hs
--- a/src/HROOT/Class/TLegend/Implementation.hs
+++ b/src/HROOT/Class/TLegend/Implementation.hs
@@ -149,6 +149,8 @@
 
 
 
+
+
 instance FPtr (Exist TLegend) where
   type Raw (Exist TLegend) = RawTLegend
   get_fptr (ETLegend obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TLegendEntry/Implementation.hs b/src/HROOT/Class/TLegendEntry/Implementation.hs
--- a/src/HROOT/Class/TLegendEntry/Implementation.hs
+++ b/src/HROOT/Class/TLegendEntry/Implementation.hs
@@ -152,6 +152,8 @@
 
 
 
+
+
 instance FPtr (Exist TLegendEntry) where
   type Raw (Exist TLegendEntry) = RawTLegendEntry
   get_fptr (ETLegendEntry obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TLine/Implementation.hs b/src/HROOT/Class/TLine/Implementation.hs
--- a/src/HROOT/Class/TLine/Implementation.hs
+++ b/src/HROOT/Class/TLine/Implementation.hs
@@ -130,6 +130,8 @@
 tLineSetVertical :: TLine -> Int -> IO ()
 tLineSetVertical = xform1 c_tline_tlinesetvertical
 
+
+
 instance FPtr (Exist TLine) where
   type Raw (Exist TLine) = RawTLine
   get_fptr (ETLine obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TList/Implementation.hs b/src/HROOT/Class/TList/Implementation.hs
--- a/src/HROOT/Class/TList/Implementation.hs
+++ b/src/HROOT/Class/TList/Implementation.hs
@@ -82,6 +82,8 @@
 
 
 
+
+
 instance FPtr (Exist TList) where
   type Raw (Exist TList) = RawTList
   get_fptr (ETList obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TNamed/Implementation.hs b/src/HROOT/Class/TNamed/Implementation.hs
--- a/src/HROOT/Class/TNamed/Implementation.hs
+++ b/src/HROOT/Class/TNamed/Implementation.hs
@@ -81,6 +81,8 @@
 
 
 
+
+
 instance FPtr (Exist TNamed) where
   type Raw (Exist TNamed) = RawTNamed
   get_fptr (ETNamed obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TNtuple/Implementation.hs b/src/HROOT/Class/TNtuple/Implementation.hs
--- a/src/HROOT/Class/TNtuple/Implementation.hs
+++ b/src/HROOT/Class/TNtuple/Implementation.hs
@@ -140,6 +140,8 @@
 
 
 
+
+
 instance FPtr (Exist TNtuple) where
   type Raw (Exist TNtuple) = RawTNtuple
   get_fptr (ETNtuple obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TNtupleD/Implementation.hs b/src/HROOT/Class/TNtupleD/Implementation.hs
--- a/src/HROOT/Class/TNtupleD/Implementation.hs
+++ b/src/HROOT/Class/TNtupleD/Implementation.hs
@@ -140,6 +140,8 @@
 
 
 
+
+
 instance FPtr (Exist TNtupleD) where
   type Raw (Exist TNtupleD) = RawTNtupleD
   get_fptr (ETNtupleD obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TObjArray/Implementation.hs b/src/HROOT/Class/TObjArray/Implementation.hs
--- a/src/HROOT/Class/TObjArray/Implementation.hs
+++ b/src/HROOT/Class/TObjArray/Implementation.hs
@@ -82,6 +82,8 @@
 
 
 
+
+
 instance FPtr (Exist TObjArray) where
   type Raw (Exist TObjArray) = RawTObjArray
   get_fptr (ETObjArray obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TObject/FFI.hsc b/src/HROOT/Class/TObject/FFI.hsc
--- a/src/HROOT/Class/TObject/FFI.hsc
+++ b/src/HROOT/Class/TObject/FFI.hsc
@@ -51,4 +51,8 @@
   :: (Ptr RawTObject) -> IO ()
 foreign import ccall "HROOTTObject.h TObject_Write" c_tobject_write 
   :: (Ptr RawTObject) -> CString -> CInt -> CInt -> IO CInt
+foreign import ccall "HROOTTObject.h TObject_tObjectGetObjectStat" c_tobject_tobjectgetobjectstat 
+  :: IO CInt
+foreign import ccall "HROOTTObject.h TObject_tObjectSetObjectStat" c_tobject_tobjectsetobjectstat 
+  :: CInt -> IO ()
 
diff --git a/src/HROOT/Class/TObject/Implementation.hs b/src/HROOT/Class/TObject/Implementation.hs
--- a/src/HROOT/Class/TObject/Implementation.hs
+++ b/src/HROOT/Class/TObject/Implementation.hs
@@ -70,6 +70,12 @@
 tObjectIsZombie :: TObject -> IO Int
 tObjectIsZombie = xform0 c_tobject_tobjectiszombie
 
+tObjectGetObjectStat :: IO Int
+tObjectGetObjectStat = xformnull c_tobject_tobjectgetobjectstat
+
+tObjectSetObjectStat :: Int -> IO ()
+tObjectSetObjectStat = xform0 c_tobject_tobjectsetobjectstat
+
 instance FPtr (Exist TObject) where
   type Raw (Exist TObject) = RawTObject
   get_fptr (ETObject obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TPCON/Implementation.hs b/src/HROOT/Class/TPCON/Implementation.hs
--- a/src/HROOT/Class/TPCON/Implementation.hs
+++ b/src/HROOT/Class/TPCON/Implementation.hs
@@ -125,6 +125,8 @@
 
 
 
+
+
 instance FPtr (Exist TPCON) where
   type Raw (Exist TPCON) = RawTPCON
   get_fptr (ETPCON obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TPad/Implementation.hs b/src/HROOT/Class/TPad/Implementation.hs
--- a/src/HROOT/Class/TPad/Implementation.hs
+++ b/src/HROOT/Class/TPad/Implementation.hs
@@ -151,6 +151,8 @@
 
 
 
+
+
 instance FPtr (Exist TPad) where
   type Raw (Exist TPad) = RawTPad
   get_fptr (ETPad obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TPave/Implementation.hs b/src/HROOT/Class/TPave/Implementation.hs
--- a/src/HROOT/Class/TPave/Implementation.hs
+++ b/src/HROOT/Class/TPave/Implementation.hs
@@ -108,6 +108,8 @@
 
 
 
+
+
 instance FPtr (Exist TPave) where
   type Raw (Exist TPave) = RawTPave
   get_fptr (ETPave obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TPaveClass/Implementation.hs b/src/HROOT/Class/TPaveClass/Implementation.hs
--- a/src/HROOT/Class/TPaveClass/Implementation.hs
+++ b/src/HROOT/Class/TPaveClass/Implementation.hs
@@ -149,6 +149,8 @@
 
 
 
+
+
 instance FPtr (Exist TPaveClass) where
   type Raw (Exist TPaveClass) = RawTPaveClass
   get_fptr (ETPaveClass obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TPaveLabel/Implementation.hs b/src/HROOT/Class/TPaveLabel/Implementation.hs
--- a/src/HROOT/Class/TPaveLabel/Implementation.hs
+++ b/src/HROOT/Class/TPaveLabel/Implementation.hs
@@ -145,6 +145,8 @@
 
 
 
+
+
 instance FPtr (Exist TPaveLabel) where
   type Raw (Exist TPaveLabel) = RawTPaveLabel
   get_fptr (ETPaveLabel obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TPaveStats/Implementation.hs b/src/HROOT/Class/TPaveStats/Implementation.hs
--- a/src/HROOT/Class/TPaveStats/Implementation.hs
+++ b/src/HROOT/Class/TPaveStats/Implementation.hs
@@ -151,6 +151,8 @@
 
 
 
+
+
 instance FPtr (Exist TPaveStats) where
   type Raw (Exist TPaveStats) = RawTPaveStats
   get_fptr (ETPaveStats obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TPaveText/Implementation.hs b/src/HROOT/Class/TPaveText/Implementation.hs
--- a/src/HROOT/Class/TPaveText/Implementation.hs
+++ b/src/HROOT/Class/TPaveText/Implementation.hs
@@ -145,6 +145,8 @@
 
 
 
+
+
 instance FPtr (Exist TPaveText) where
   type Raw (Exist TPaveText) = RawTPaveText
   get_fptr (ETPaveText obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TPavesText/Implementation.hs b/src/HROOT/Class/TPavesText/Implementation.hs
--- a/src/HROOT/Class/TPavesText/Implementation.hs
+++ b/src/HROOT/Class/TPavesText/Implementation.hs
@@ -151,6 +151,8 @@
 
 
 
+
+
 instance FPtr (Exist TPavesText) where
   type Raw (Exist TPavesText) = RawTPavesText
   get_fptr (ETPavesText obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TPolyLine/Implementation.hs b/src/HROOT/Class/TPolyLine/Implementation.hs
--- a/src/HROOT/Class/TPolyLine/Implementation.hs
+++ b/src/HROOT/Class/TPolyLine/Implementation.hs
@@ -102,6 +102,8 @@
 
 
 
+
+
 instance FPtr (Exist TPolyLine) where
   type Raw (Exist TPolyLine) = RawTPolyLine
   get_fptr (ETPolyLine obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TQObject/Implementation.hs b/src/HROOT/Class/TQObject/Implementation.hs
--- a/src/HROOT/Class/TQObject/Implementation.hs
+++ b/src/HROOT/Class/TQObject/Implementation.hs
@@ -37,6 +37,8 @@
 
 
 
+
+
 instance FPtr (Exist TQObject) where
   type Raw (Exist TQObject) = RawTQObject
   get_fptr (ETQObject obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TROOT.hs b/src/HROOT/Class/TROOT.hs
new file mode 100644
--- /dev/null
+++ b/src/HROOT/Class/TROOT.hs
@@ -0,0 +1,31 @@
+module HROOT.Class.TROOT
+  (
+    TROOT(..)
+  , ITROOT
+  , upcastTROOT
+  , tROOTGetListOfColors
+  , tROOTGetListOfTypes
+  , tROOTGetListOfGlobals
+  , tROOTGetListOfGlobalFunctions
+  , tROOTGetListOfClosedObjects
+  , tROOTGetListOfFiles
+  , tROOTGetListOfMappedFiles
+  , tROOTGetListOfSockets
+  , tROOTGetListOfCanvases
+  , tROOTGetListOfStyles
+  , tROOTGetListOfFunctions
+  , tROOTGetListOfGeometries
+  , tROOTGetListOfBrowsers
+  , tROOTGetListOfSpecials
+  , tROOTGetListOfTasks
+  , tROOTGetListOfCleanups
+  , tROOTGetListOfStreamerInfo 
+  ) where
+
+-- import HROOT.Class.Interface
+-- import HROOT.Class.Implementation ()
+
+import HROOT.Class.TROOT.RawType
+import HROOT.Class.TROOT.Interface
+import HROOT.Class.TROOT.Implementation
+
diff --git a/src/HROOT/Class/TROOT/Cast.hs b/src/HROOT/Class/TROOT/Cast.hs
new file mode 100644
--- /dev/null
+++ b/src/HROOT/Class/TROOT/Cast.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE FlexibleInstances, FlexibleContexts, TypeFamilies, 
+             MultiParamTypeClasses, OverlappingInstances, IncoherentInstances #-}
+
+module HROOT.Class.TROOT.Cast where
+
+
+import Foreign.Ptr
+import Foreign.ForeignPtr
+import HROOT.TypeCast
+import System.IO.Unsafe
+
+import HROOT.Class.TROOT.RawType
+import HROOT.Class.TROOT.Interface
+
+instance (ITROOT a, FPtr a) => Castable a (Ptr RawTROOT) where
+  cast = unsafeForeignPtrToPtr . castForeignPtr . get_fptr
+  uncast = cast_fptr_to_obj . castForeignPtr . unsafePerformIO . newForeignPtr_ 
+
+instance Castable TROOT (Ptr RawTROOT) where
+  cast = unsafeForeignPtrToPtr . castForeignPtr . get_fptr
+  uncast = cast_fptr_to_obj . castForeignPtr . unsafePerformIO . newForeignPtr_ 
diff --git a/src/HROOT/Class/TROOT/FFI.hsc b/src/HROOT/Class/TROOT/FFI.hsc
new file mode 100644
--- /dev/null
+++ b/src/HROOT/Class/TROOT/FFI.hsc
@@ -0,0 +1,126 @@
+{-# LANGUAGE ForeignFunctionInterface #-}
+
+-- module HROOT.Class.FFI where
+
+module HROOT.Class.TROOT.FFI where
+
+
+import Foreign.C            
+import Foreign.Ptr
+
+-- import HROOT.Class.Interface
+
+-- #include ""
+
+import HROOT.Class.TROOT.RawType
+import HROOT.Class.TObject.RawType
+import HROOT.Class.TKey.RawType
+import HROOT.Class.TClass.RawType
+import HROOT.Class.TSeqCollection.RawType
+import HROOT.Class.TCollection.RawType
+
+#include "HROOTTROOT.h"
+
+foreign import ccall "HROOTTROOT.h TROOT_Append" c_troot_append 
+  :: (Ptr RawTROOT) -> (Ptr RawTObject) -> CInt -> IO ()
+foreign import ccall "HROOTTROOT.h TROOT_addD" c_troot_addd 
+  :: (Ptr RawTROOT) -> (Ptr RawTObject) -> CInt -> IO ()
+foreign import ccall "HROOTTROOT.h TROOT_AppendKey" c_troot_appendkey 
+  :: (Ptr RawTROOT) -> (Ptr RawTKey) -> IO CInt
+foreign import ccall "HROOTTROOT.h TROOT_Close" c_troot_close 
+  :: (Ptr RawTROOT) -> CString -> IO ()
+foreign import ccall "HROOTTROOT.h TROOT_Get" c_troot_get 
+  :: (Ptr RawTROOT) -> CString -> IO (Ptr RawTObject)
+foreign import ccall "HROOTTROOT.h TROOT_SetName" c_troot_setname 
+  :: (Ptr RawTROOT) -> CString -> IO ()
+foreign import ccall "HROOTTROOT.h TROOT_SetNameTitle" c_troot_setnametitle 
+  :: (Ptr RawTROOT) -> CString -> CString -> IO ()
+foreign import ccall "HROOTTROOT.h TROOT_SetTitle" c_troot_settitle 
+  :: (Ptr RawTROOT) -> CString -> IO ()
+foreign import ccall "HROOTTROOT.h TROOT_Draw" c_troot_draw 
+  :: (Ptr RawTROOT) -> CString -> IO ()
+foreign import ccall "HROOTTROOT.h TROOT_FindObject" c_troot_findobject 
+  :: (Ptr RawTROOT) -> CString -> IO (Ptr RawTObject)
+foreign import ccall "HROOTTROOT.h TROOT_GetName" c_troot_getname 
+  :: (Ptr RawTROOT) -> IO CString
+foreign import ccall "HROOTTROOT.h TROOT_IsA" c_troot_isa 
+  :: (Ptr RawTROOT) -> IO (Ptr RawTClass)
+foreign import ccall "HROOTTROOT.h TROOT_IsFolder" c_troot_isfolder 
+  :: (Ptr RawTROOT) -> IO CInt
+foreign import ccall "HROOTTROOT.h TROOT_IsEqual" c_troot_isequal 
+  :: (Ptr RawTROOT) -> (Ptr RawTObject) -> IO CInt
+foreign import ccall "HROOTTROOT.h TROOT_IsSortable" c_troot_issortable 
+  :: (Ptr RawTROOT) -> IO CInt
+foreign import ccall "HROOTTROOT.h TROOT_Paint" c_troot_paint 
+  :: (Ptr RawTROOT) -> CString -> IO ()
+foreign import ccall "HROOTTROOT.h TROOT_printObj" c_troot_printobj 
+  :: (Ptr RawTROOT) -> CString -> IO ()
+foreign import ccall "HROOTTROOT.h TROOT_RecursiveRemove" c_troot_recursiveremove 
+  :: (Ptr RawTROOT) -> (Ptr RawTObject) -> IO ()
+foreign import ccall "HROOTTROOT.h TROOT_SaveAs" c_troot_saveas 
+  :: (Ptr RawTROOT) -> CString -> CString -> IO ()
+foreign import ccall "HROOTTROOT.h TROOT_UseCurrentStyle" c_troot_usecurrentstyle 
+  :: (Ptr RawTROOT) -> IO ()
+foreign import ccall "HROOTTROOT.h TROOT_Write" c_troot_write 
+  :: (Ptr RawTROOT) -> CString -> CInt -> CInt -> IO CInt
+foreign import ccall "HROOTTROOT.h TROOT_delete" c_troot_delete 
+  :: (Ptr RawTROOT) -> IO ()
+foreign import ccall "HROOTTROOT.h TROOT_tROOTGetListOfColors" c_troot_trootgetlistofcolors 
+  :: (Ptr RawTROOT) -> IO (Ptr RawTSeqCollection)
+foreign import ccall "HROOTTROOT.h TROOT_tROOTGetListOfTypes" c_troot_trootgetlistoftypes 
+  :: (Ptr RawTROOT) -> CInt -> IO (Ptr RawTCollection)
+foreign import ccall "HROOTTROOT.h TROOT_tROOTGetListOfGlobals" c_troot_trootgetlistofglobals 
+  :: (Ptr RawTROOT) -> CInt -> IO (Ptr RawTCollection)
+foreign import ccall "HROOTTROOT.h TROOT_tROOTGetListOfGlobalFunctions" c_troot_trootgetlistofglobalfunctions 
+  :: (Ptr RawTROOT) -> CInt -> IO (Ptr RawTCollection)
+foreign import ccall "HROOTTROOT.h TROOT_tROOTGetListOfClosedObjects" c_troot_trootgetlistofclosedobjects 
+  :: (Ptr RawTROOT) -> IO (Ptr RawTSeqCollection)
+foreign import ccall "HROOTTROOT.h TROOT_tROOTGetListOfFiles" c_troot_trootgetlistoffiles 
+  :: (Ptr RawTROOT) -> IO (Ptr RawTSeqCollection)
+foreign import ccall "HROOTTROOT.h TROOT_tROOTGetListOfMappedFiles" c_troot_trootgetlistofmappedfiles 
+  :: (Ptr RawTROOT) -> IO (Ptr RawTSeqCollection)
+foreign import ccall "HROOTTROOT.h TROOT_tROOTGetListOfSockets" c_troot_trootgetlistofsockets 
+  :: (Ptr RawTROOT) -> IO (Ptr RawTSeqCollection)
+foreign import ccall "HROOTTROOT.h TROOT_tROOTGetListOfCanvases" c_troot_trootgetlistofcanvases 
+  :: (Ptr RawTROOT) -> IO (Ptr RawTSeqCollection)
+foreign import ccall "HROOTTROOT.h TROOT_tROOTGetListOfStyles" c_troot_trootgetlistofstyles 
+  :: (Ptr RawTROOT) -> IO (Ptr RawTSeqCollection)
+foreign import ccall "HROOTTROOT.h TROOT_tROOTGetListOfFunctions" c_troot_trootgetlistoffunctions 
+  :: (Ptr RawTROOT) -> IO (Ptr RawTCollection)
+foreign import ccall "HROOTTROOT.h TROOT_tROOTGetListOfGeometries" c_troot_trootgetlistofgeometries 
+  :: (Ptr RawTROOT) -> IO (Ptr RawTSeqCollection)
+foreign import ccall "HROOTTROOT.h TROOT_tROOTGetListOfBrowsers" c_troot_trootgetlistofbrowsers 
+  :: (Ptr RawTROOT) -> IO (Ptr RawTSeqCollection)
+foreign import ccall "HROOTTROOT.h TROOT_tROOTGetListOfSpecials" c_troot_trootgetlistofspecials 
+  :: (Ptr RawTROOT) -> IO (Ptr RawTSeqCollection)
+foreign import ccall "HROOTTROOT.h TROOT_tROOTGetListOfTasks" c_troot_trootgetlistoftasks 
+  :: (Ptr RawTROOT) -> IO (Ptr RawTSeqCollection)
+foreign import ccall "HROOTTROOT.h TROOT_tROOTGetListOfCleanups" c_troot_trootgetlistofcleanups 
+  :: (Ptr RawTROOT) -> IO (Ptr RawTSeqCollection)
+foreign import ccall "HROOTTROOT.h TROOT_tROOTGetListOfStreamerInfo" c_troot_trootgetlistofstreamerinfo 
+  :: (Ptr RawTROOT) -> IO (Ptr RawTSeqCollection)
+foreign import ccall "HROOTTROOT.h TROOT_tROOTDecreaseDirLevel" c_troot_trootdecreasedirlevel 
+  :: IO CInt
+foreign import ccall "HROOTTROOT.h TROOT_tROOTGetDirLevel" c_troot_trootgetdirlevel 
+  :: IO CInt
+foreign import ccall "HROOTTROOT.h TROOT_tROOTGetMacroPath" c_troot_trootgetmacropath 
+  :: IO CString
+foreign import ccall "HROOTTROOT.h TROOT_tROOTSetMacroPath" c_troot_trootsetmacropath 
+  :: CString -> IO ()
+foreign import ccall "HROOTTROOT.h TROOT_tROOTIncreaseDirLevel" c_troot_trootincreasedirlevel 
+  :: IO CInt
+foreign import ccall "HROOTTROOT.h TROOT_tROOTIndentLevel" c_troot_trootindentlevel 
+  :: IO ()
+foreign import ccall "HROOTTROOT.h TROOT_tROOTInitialized" c_troot_trootinitialized 
+  :: IO CInt
+foreign import ccall "HROOTTROOT.h TROOT_tROOTMemCheck" c_troot_trootmemcheck 
+  :: IO CInt
+foreign import ccall "HROOTTROOT.h TROOT_tROOTSetDirLevel" c_troot_trootsetdirlevel 
+  :: CInt -> IO ()
+foreign import ccall "HROOTTROOT.h TROOT_tROOTConvertVersionCode2Int" c_troot_trootconvertversioncode2int 
+  :: CInt -> IO CInt
+foreign import ccall "HROOTTROOT.h TROOT_tROOTConvertVersionInt2Code" c_troot_trootconvertversionint2code 
+  :: CInt -> IO CInt
+foreign import ccall "HROOTTROOT.h TROOT_tROOTRootVersionCode" c_troot_trootrootversioncode 
+  :: IO CInt
+
diff --git a/src/HROOT/Class/TROOT/Implementation.hs b/src/HROOT/Class/TROOT/Implementation.hs
new file mode 100644
--- /dev/null
+++ b/src/HROOT/Class/TROOT/Implementation.hs
@@ -0,0 +1,196 @@
+{-# LANGUAGE ForeignFunctionInterface, TypeFamilies, MultiParamTypeClasses, 
+             FlexibleInstances, TypeSynonymInstances, EmptyDataDecls, 
+             OverlappingInstances, IncoherentInstances #-}
+
+module HROOT.Class.TROOT.Implementation where
+
+
+import HROOT.TypeCast
+
+import HROOT.Class.TROOT.RawType
+import HROOT.Class.TROOT.FFI
+import HROOT.Class.TROOT.Interface
+import HROOT.Class.TROOT.Cast
+import HROOT.Class.TKey.RawType
+import HROOT.Class.TKey.Cast
+import HROOT.Class.TKey.Interface
+import HROOT.Class.TClass.RawType
+import HROOT.Class.TClass.Cast
+import HROOT.Class.TClass.Interface
+import HROOT.Class.TSeqCollection.RawType
+import HROOT.Class.TSeqCollection.Cast
+import HROOT.Class.TSeqCollection.Interface
+import HROOT.Class.TCollection.RawType
+import HROOT.Class.TCollection.Cast
+import HROOT.Class.TCollection.Interface
+import HROOT.Class.TDirectory.RawType
+import HROOT.Class.TDirectory.Cast
+import HROOT.Class.TDirectory.Interface
+import HROOT.Class.TNamed.RawType
+import HROOT.Class.TNamed.Cast
+import HROOT.Class.TNamed.Interface
+import HROOT.Class.TObject.RawType
+import HROOT.Class.TObject.Cast
+import HROOT.Class.TObject.Interface
+import HROOT.Class.Deletable.RawType
+import HROOT.Class.Deletable.Cast
+import HROOT.Class.Deletable.Interface
+
+import Data.Word
+-- import Foreign.C            
+-- import Foreign.Ptr
+import Foreign.ForeignPtr
+
+import System.IO.Unsafe
+
+
+instance ITROOT TROOT where
+instance ITDirectory TROOT where
+  append = xform2 c_troot_append
+  addD = xform2 c_troot_addd
+  appendKey = xform1 c_troot_appendkey
+  close = xform1 c_troot_close
+  get = xform1 c_troot_get
+instance ITNamed TROOT where
+  setName = xform1 c_troot_setname
+  setNameTitle = xform2 c_troot_setnametitle
+  setTitle = xform1 c_troot_settitle
+instance ITObject TROOT where
+  draw = xform1 c_troot_draw
+  findObject = xform1 c_troot_findobject
+  getName = xform0 c_troot_getname
+  isA = xform0 c_troot_isa
+  isFolder = xform0 c_troot_isfolder
+  isEqual = xform1 c_troot_isequal
+  isSortable = xform0 c_troot_issortable
+  paint = xform1 c_troot_paint
+  printObj = xform1 c_troot_printobj
+  recursiveRemove = xform1 c_troot_recursiveremove
+  saveAs = xform2 c_troot_saveas
+  useCurrentStyle = xform0 c_troot_usecurrentstyle
+  write = xform3 c_troot_write
+instance IDeletable TROOT where
+  delete = xform0 c_troot_delete
+
+instance ITROOT (Exist TROOT) where
+
+instance ITDirectory (Exist TROOT) where
+  append (ETROOT x) = append x
+  addD (ETROOT x) = addD x
+  appendKey (ETROOT x) = appendKey x
+  close (ETROOT x) = close x
+  get (ETROOT x) = get x
+instance ITNamed (Exist TROOT) where
+  setName (ETROOT x) = setName x
+  setNameTitle (ETROOT x) = setNameTitle x
+  setTitle (ETROOT x) = setTitle x
+instance ITObject (Exist TROOT) where
+  draw (ETROOT x) = draw x
+  findObject (ETROOT x) = findObject x
+  getName (ETROOT x) = getName x
+  isA (ETROOT x) = isA x
+  isFolder (ETROOT x) = isFolder x
+  isEqual (ETROOT x) = isEqual x
+  isSortable (ETROOT x) = isSortable x
+  paint (ETROOT x) = paint x
+  printObj (ETROOT x) = printObj x
+  recursiveRemove (ETROOT x) = recursiveRemove x
+  saveAs (ETROOT x) = saveAs x
+  useCurrentStyle (ETROOT x) = useCurrentStyle x
+  write (ETROOT x) = write x
+instance IDeletable (Exist TROOT) where
+  delete (ETROOT x) = delete x
+
+
+
+tROOTGetListOfColors :: TROOT -> IO TSeqCollection
+tROOTGetListOfColors = xform0 c_troot_trootgetlistofcolors
+
+tROOTGetListOfTypes :: TROOT -> Int -> IO TCollection
+tROOTGetListOfTypes = xform1 c_troot_trootgetlistoftypes
+
+tROOTGetListOfGlobals :: TROOT -> Int -> IO TCollection
+tROOTGetListOfGlobals = xform1 c_troot_trootgetlistofglobals
+
+tROOTGetListOfGlobalFunctions :: TROOT -> Int -> IO TCollection
+tROOTGetListOfGlobalFunctions = xform1 c_troot_trootgetlistofglobalfunctions
+
+tROOTGetListOfClosedObjects :: TROOT -> IO TSeqCollection
+tROOTGetListOfClosedObjects = xform0 c_troot_trootgetlistofclosedobjects
+
+tROOTGetListOfFiles :: TROOT -> IO TSeqCollection
+tROOTGetListOfFiles = xform0 c_troot_trootgetlistoffiles
+
+tROOTGetListOfMappedFiles :: TROOT -> IO TSeqCollection
+tROOTGetListOfMappedFiles = xform0 c_troot_trootgetlistofmappedfiles
+
+tROOTGetListOfSockets :: TROOT -> IO TSeqCollection
+tROOTGetListOfSockets = xform0 c_troot_trootgetlistofsockets
+
+tROOTGetListOfCanvases :: TROOT -> IO TSeqCollection
+tROOTGetListOfCanvases = xform0 c_troot_trootgetlistofcanvases
+
+tROOTGetListOfStyles :: TROOT -> IO TSeqCollection
+tROOTGetListOfStyles = xform0 c_troot_trootgetlistofstyles
+
+tROOTGetListOfFunctions :: TROOT -> IO TCollection
+tROOTGetListOfFunctions = xform0 c_troot_trootgetlistoffunctions
+
+tROOTGetListOfGeometries :: TROOT -> IO TSeqCollection
+tROOTGetListOfGeometries = xform0 c_troot_trootgetlistofgeometries
+
+tROOTGetListOfBrowsers :: TROOT -> IO TSeqCollection
+tROOTGetListOfBrowsers = xform0 c_troot_trootgetlistofbrowsers
+
+tROOTGetListOfSpecials :: TROOT -> IO TSeqCollection
+tROOTGetListOfSpecials = xform0 c_troot_trootgetlistofspecials
+
+tROOTGetListOfTasks :: TROOT -> IO TSeqCollection
+tROOTGetListOfTasks = xform0 c_troot_trootgetlistoftasks
+
+tROOTGetListOfCleanups :: TROOT -> IO TSeqCollection
+tROOTGetListOfCleanups = xform0 c_troot_trootgetlistofcleanups
+
+tROOTGetListOfStreamerInfo :: TROOT -> IO TSeqCollection
+tROOTGetListOfStreamerInfo = xform0 c_troot_trootgetlistofstreamerinfo
+
+tROOTDecreaseDirLevel :: IO Int
+tROOTDecreaseDirLevel = xformnull c_troot_trootdecreasedirlevel
+
+tROOTGetDirLevel :: IO Int
+tROOTGetDirLevel = xformnull c_troot_trootgetdirlevel
+
+tROOTGetMacroPath :: IO String
+tROOTGetMacroPath = xformnull c_troot_trootgetmacropath
+
+tROOTSetMacroPath :: String -> IO ()
+tROOTSetMacroPath = xform0 c_troot_trootsetmacropath
+
+tROOTIncreaseDirLevel :: IO Int
+tROOTIncreaseDirLevel = xformnull c_troot_trootincreasedirlevel
+
+tROOTIndentLevel :: IO ()
+tROOTIndentLevel = xformnull c_troot_trootindentlevel
+
+tROOTInitialized :: IO Int
+tROOTInitialized = xformnull c_troot_trootinitialized
+
+tROOTMemCheck :: IO Int
+tROOTMemCheck = xformnull c_troot_trootmemcheck
+
+tROOTSetDirLevel :: Int -> IO ()
+tROOTSetDirLevel = xform0 c_troot_trootsetdirlevel
+
+tROOTConvertVersionCode2Int :: Int -> IO Int
+tROOTConvertVersionCode2Int = xform0 c_troot_trootconvertversioncode2int
+
+tROOTConvertVersionInt2Code :: Int -> IO Int
+tROOTConvertVersionInt2Code = xform0 c_troot_trootconvertversionint2code
+
+tROOTRootVersionCode :: IO Int
+tROOTRootVersionCode = xformnull c_troot_trootrootversioncode
+
+instance FPtr (Exist TROOT) where
+  type Raw (Exist TROOT) = RawTROOT
+  get_fptr (ETROOT obj) = castForeignPtr (get_fptr obj)
+  cast_fptr_to_obj fptr = ETROOT (cast_fptr_to_obj (fptr :: ForeignPtr RawTROOT) :: TROOT)
diff --git a/src/HROOT/Class/TROOT/Interface.hs b/src/HROOT/Class/TROOT/Interface.hs
new file mode 100644
--- /dev/null
+++ b/src/HROOT/Class/TROOT/Interface.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE ForeignFunctionInterface, TypeFamilies, MultiParamTypeClasses, 
+             FlexibleInstances, TypeSynonymInstances, 
+             EmptyDataDecls, ExistentialQuantification, ScopedTypeVariables #-}
+
+-- module HROOT.Class.Interface where
+
+module HROOT.Class.TROOT.Interface where
+
+
+import Data.Word
+import Foreign.ForeignPtr
+import HROOT.TypeCast
+
+import HROOT.Class.TROOT.RawType
+import HROOT.Class.TSeqCollection.RawType
+import HROOT.Class.TCollection.RawType
+import HROOT.Class.TDirectory.Interface
+
+
+class (ITDirectory a) => ITROOT a where
+
+instance Existable TROOT where
+  data Exist TROOT = forall a. (FPtr a, ITROOT a) => ETROOT a
+
+upcastTROOT :: (FPtr a, ITROOT a) => a -> TROOT
+upcastTROOT h = let fh = get_fptr h
+                    fh2 :: ForeignPtr RawTROOT = castForeignPtr fh
+                in cast_fptr_to_obj fh2
diff --git a/src/HROOT/Class/TROOT/RawType.hs b/src/HROOT/Class/TROOT/RawType.hs
new file mode 100644
--- /dev/null
+++ b/src/HROOT/Class/TROOT/RawType.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE ForeignFunctionInterface, TypeFamilies, MultiParamTypeClasses, 
+             FlexibleInstances, TypeSynonymInstances, 
+             EmptyDataDecls, ExistentialQuantification, ScopedTypeVariables #-}
+
+module HROOT.Class.TROOT.RawType where
+
+
+-- import Foreign.Ptr
+import Foreign.ForeignPtr
+-- import Foreign.Marshal.Array
+
+import HROOT.TypeCast  
+
+data RawTROOT
+newtype TROOT = TROOT (ForeignPtr RawTROOT) deriving (Eq, Ord, Show)
+instance FPtr TROOT where
+   type Raw TROOT = RawTROOT
+   get_fptr (TROOT fptr) = fptr
+   cast_fptr_to_obj = TROOT
diff --git a/src/HROOT/Class/TRandom/Implementation.hs b/src/HROOT/Class/TRandom/Implementation.hs
--- a/src/HROOT/Class/TRandom/Implementation.hs
+++ b/src/HROOT/Class/TRandom/Implementation.hs
@@ -86,6 +86,8 @@
 
 
 
+
+
 instance FPtr (Exist TRandom) where
   type Raw (Exist TRandom) = RawTRandom
   get_fptr (ETRandom obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TRint/Implementation.hs b/src/HROOT/Class/TRint/Implementation.hs
--- a/src/HROOT/Class/TRint/Implementation.hs
+++ b/src/HROOT/Class/TRint/Implementation.hs
@@ -85,6 +85,8 @@
 
 
 
+
+
 instance FPtr (Exist TRint) where
   type Raw (Exist TRint) = RawTRint
   get_fptr (ETRint obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TSPHE/Implementation.hs b/src/HROOT/Class/TSPHE/Implementation.hs
--- a/src/HROOT/Class/TSPHE/Implementation.hs
+++ b/src/HROOT/Class/TSPHE/Implementation.hs
@@ -125,6 +125,8 @@
 
 
 
+
+
 instance FPtr (Exist TSPHE) where
   type Raw (Exist TSPHE) = RawTSPHE
   get_fptr (ETSPHE obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TSeqCollection/Implementation.hs b/src/HROOT/Class/TSeqCollection/Implementation.hs
--- a/src/HROOT/Class/TSeqCollection/Implementation.hs
+++ b/src/HROOT/Class/TSeqCollection/Implementation.hs
@@ -76,6 +76,8 @@
 
 
 
+
+
 instance FPtr (Exist TSeqCollection) where
   type Raw (Exist TSeqCollection) = RawTSeqCollection
   get_fptr (ETSeqCollection obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TShape/Implementation.hs b/src/HROOT/Class/TShape/Implementation.hs
--- a/src/HROOT/Class/TShape/Implementation.hs
+++ b/src/HROOT/Class/TShape/Implementation.hs
@@ -119,6 +119,8 @@
 
 
 
+
+
 instance FPtr (Exist TShape) where
   type Raw (Exist TShape) = RawTShape
   get_fptr (ETShape obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TSlider/Implementation.hs b/src/HROOT/Class/TSlider/Implementation.hs
--- a/src/HROOT/Class/TSlider/Implementation.hs
+++ b/src/HROOT/Class/TSlider/Implementation.hs
@@ -157,6 +157,8 @@
 
 
 
+
+
 instance FPtr (Exist TSlider) where
   type Raw (Exist TSlider) = RawTSlider
   get_fptr (ETSlider obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TSliderBox/Implementation.hs b/src/HROOT/Class/TSliderBox/Implementation.hs
--- a/src/HROOT/Class/TSliderBox/Implementation.hs
+++ b/src/HROOT/Class/TSliderBox/Implementation.hs
@@ -115,6 +115,8 @@
 
 
 
+
+
 instance FPtr (Exist TSliderBox) where
   type Raw (Exist TSliderBox) = RawTSliderBox
   get_fptr (ETSliderBox obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TTUBE/Implementation.hs b/src/HROOT/Class/TTUBE/Implementation.hs
--- a/src/HROOT/Class/TTUBE/Implementation.hs
+++ b/src/HROOT/Class/TTUBE/Implementation.hs
@@ -125,6 +125,8 @@
 
 
 
+
+
 instance FPtr (Exist TTUBE) where
   type Raw (Exist TTUBE) = RawTTUBE
   get_fptr (ETTUBE obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TText/Implementation.hs b/src/HROOT/Class/TText/Implementation.hs
--- a/src/HROOT/Class/TText/Implementation.hs
+++ b/src/HROOT/Class/TText/Implementation.hs
@@ -121,6 +121,8 @@
 
 
 
+
+
 instance FPtr (Exist TText) where
   type Raw (Exist TText) = RawTText
   get_fptr (ETText obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TTree/Implementation.hs b/src/HROOT/Class/TTree/Implementation.hs
--- a/src/HROOT/Class/TTree/Implementation.hs
+++ b/src/HROOT/Class/TTree/Implementation.hs
@@ -134,6 +134,8 @@
 
 
 
+
+
 instance FPtr (Exist TTree) where
   type Raw (Exist TTree) = RawTTree
   get_fptr (ETTree obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TTreePlayer/Implementation.hs b/src/HROOT/Class/TTreePlayer/Implementation.hs
--- a/src/HROOT/Class/TTreePlayer/Implementation.hs
+++ b/src/HROOT/Class/TTreePlayer/Implementation.hs
@@ -76,6 +76,8 @@
 
 
 
+
+
 instance FPtr (Exist TTreePlayer) where
   type Raw (Exist TTreePlayer) = RawTTreePlayer
   get_fptr (ETTreePlayer obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TTreeSQL/Implementation.hs b/src/HROOT/Class/TTreeSQL/Implementation.hs
--- a/src/HROOT/Class/TTreeSQL/Implementation.hs
+++ b/src/HROOT/Class/TTreeSQL/Implementation.hs
@@ -138,6 +138,8 @@
 
 
 
+
+
 instance FPtr (Exist TTreeSQL) where
   type Raw (Exist TTreeSQL) = RawTTreeSQL
   get_fptr (ETTreeSQL obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TVirtualHistPainter/Implementation.hs b/src/HROOT/Class/TVirtualHistPainter/Implementation.hs
--- a/src/HROOT/Class/TVirtualHistPainter/Implementation.hs
+++ b/src/HROOT/Class/TVirtualHistPainter/Implementation.hs
@@ -40,3 +40,5 @@
 
 
 
+
+
diff --git a/src/HROOT/Class/TVirtualPad/Implementation.hs b/src/HROOT/Class/TVirtualPad/Implementation.hs
--- a/src/HROOT/Class/TVirtualPad/Implementation.hs
+++ b/src/HROOT/Class/TVirtualPad/Implementation.hs
@@ -145,6 +145,8 @@
 
 
 
+
+
 instance FPtr (Exist TVirtualPad) where
   type Raw (Exist TVirtualPad) = RawTVirtualPad
   get_fptr (ETVirtualPad obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TVirtualTreePlayer/Implementation.hs b/src/HROOT/Class/TVirtualTreePlayer/Implementation.hs
--- a/src/HROOT/Class/TVirtualTreePlayer/Implementation.hs
+++ b/src/HROOT/Class/TVirtualTreePlayer/Implementation.hs
@@ -70,6 +70,8 @@
 
 
 
+
+
 instance FPtr (Exist TVirtualTreePlayer) where
   type Raw (Exist TVirtualTreePlayer) = RawTVirtualTreePlayer
   get_fptr (ETVirtualTreePlayer obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TWbox/Implementation.hs b/src/HROOT/Class/TWbox/Implementation.hs
--- a/src/HROOT/Class/TWbox/Implementation.hs
+++ b/src/HROOT/Class/TWbox/Implementation.hs
@@ -109,6 +109,8 @@
 
 
 
+
+
 instance FPtr (Exist TWbox) where
   type Raw (Exist TWbox) = RawTWbox
   get_fptr (ETWbox obj) = castForeignPtr (get_fptr obj)
diff --git a/src/HROOT/Class/TXTRU/Implementation.hs b/src/HROOT/Class/TXTRU/Implementation.hs
--- a/src/HROOT/Class/TXTRU/Implementation.hs
+++ b/src/HROOT/Class/TXTRU/Implementation.hs
@@ -125,6 +125,8 @@
 
 
 
+
+
 instance FPtr (Exist TXTRU) where
   type Raw (Exist TXTRU) = RawTXTRU
   get_fptr (ETXTRU obj) = castForeignPtr (get_fptr obj)
