diff --git a/HGamer3D-CEGUI-Binding.cabal b/HGamer3D-CEGUI-Binding.cabal
--- a/HGamer3D-CEGUI-Binding.cabal
+++ b/HGamer3D-CEGUI-Binding.cabal
@@ -1,5 +1,5 @@
 Name:                HGamer3D-CEGUI-Binding
-Version:             0.3.1
+Version:             0.4.0
 Synopsis:            A Game Engine for the Haskell Programmer - CEGUI  Bindings
 Description:         
    HGamer3D is a game engine for developing 3D games in the programming 
@@ -16,12 +16,12 @@
 Cabal-Version:       >=1.4
 Homepage:            http://www.hgamer3d.org
 Category:            Game Engine, GUI
-Extra-source-files:  Setup.hs, include/EnumMouseButton.h, include/EnumSystemKey.h, include/ClassListboxTextItem.h, include/ClassSlider.h, include/ClassMultiColumnList.h, include/HG3DEventStaticFunctions.h, include/StructHG3DClass.h, include/ClassImageset.h, include/ClassTabButton.h, include/ClassListHeaderSegment.h, include/ClassMenuBase.h, include/EnumTipState.h, include/EnumVerticalAlignment.h, include/ClassHG3DEventStaticFunctions.h, include/ClassHG3DEventController.h, include/ClassComboDropList.h, include/HG3DListboxStaticFunctions.h, include/ClassWindowManager.h, include/ClassFrameWindow.h, include/ClassHG3DListboxStaticFunctions.h, include/ClassXMLParser.h, include/ClassThumb.h, include/ClassSpinner.h, include/CEGUIDllDefines.h, include/HG3DEventController.h, include/ClassSystemHG3D.h, include/ClassSchemeManager.h, include/ClassScrolledItemListBase.h, include/ClassDefaultLogger.h, include/ClassWindowManagerHG3D.h, include/ClassScrollbar.h, include/ClassDefaultResourceProvider.h, include/ClassRadioButton.h, include/ClassListbox.h, include/ClassListHeader.h, include/ClassWindow.h, include/ClassEditbox.h, include/EnumTextInputMode.h, include/ClassItemEntry.h, include/EnumWindowUpdateMode.h, include/EnumQuadSplitMode.h, include/ClassItemListbox.h, include/ClassFont.h, include/ClassImageCodec.h, include/ClassOgreRenderer.h, include/ClassEventSet.h, include/EnumSortDirection.h, include/EnumTabPanePosition.h, include/ClassHG3DWindowStaticFunctions.h, include/ClassScrollablePane.h, include/EnumLoggingLevel.h, include/HG3DCommandHandler.h, include/ClassTooltip.h, include/ClassCombobox.h, include/ClassScheme.h, include/ClassTree.h, include/ClassScriptFunctor.h, include/HG3DEventModule.h, include/ClassDragContainer.h, include/ClassMultiLineEditbox.h, include/ClassFontManager.h, include/EnumBlendMode.h, include/EnumFWSizingLocation.h, include/ClassResourceProvider.h, include/ClassScriptModule.h, include/ClassLogger.h, include/ClassScrolledContainer.h, include/ClassMenuItem.h, include/ClassPushButton.h, include/ClassProgressBar.h, include/ClassPtr.h, include/HG3DWindowStaticFunctions.h, include/ClassListboxItem.h, include/ClassSystem.h, include/EnumHorizontalAlignment.h, include/ClassPropertySet.h, include/ClassEventArgs.h, include/EnumKeyScan.h, include/ClassRenderer.h, include/EnumSelectionMode.h, include/ClassOgreResourceProvider.h, include/ClassCheckbox.h, include/ClassWidgetLookManager.h
+Extra-source-files:  Setup.hs, include/colorvalue_struct.h, include/StructHG3DClass.h, include/ClassThumb.h, include/EnumTabPanePosition.h, include/ClassUDim.h, include/hg3dstruct.h, include/vector4_struct.h, include/HG3DCommandHandler.h, include/ClassListboxItem.h, include/ClassEditbox.h, include/ClassSchemeManager.h, include/ClassSpinner.h, include/ClassItemListbox.h, include/EnumQuadSplitMode.h, include/ClassMultiLineEditbox.h, include/ClassMenuItem.h, include/radian_struct.h, include/ClassListHeaderSegment.h, include/ClassTree.h, include/ClassHG3DEventController.h, include/CEGUIDllDefines.h, include/ClassSlider.h, include/ClassListbox.h, include/SystemHG3D.h, include/ClassMultiColumnList.h, include/HG3DEventStaticFunctions.h, include/HG3DListboxStaticFunctions.h, include/ClassScrollablePane.h, include/ClassUVector2.h, include/vector2_struct.h, include/EnumTipState.h, include/ClassFont.h, include/ClassWindowManagerHG3D.h, include/ClassScheme.h, include/EnumSelectionMode.h, include/ClassFrameWindow.h, include/ClassWindowManager.h, include/ClassHG3DListboxStaticFunctions.h, include/sharedptr_struct.h, include/ClassHG3DEventStaticFunctions.h, include/HG3DEventController.h, include/ClassTabButton.h, include/ClassPushButton.h, include/ClassFontManager.h, include/EnumMouseButton.h, include/EnumWindowUpdateMode.h, include/ClassScrollbar.h, include/EnumFWSizingLocation.h, include/ClassDefaultResourceProvider.h, include/ClassItemEntry.h, include/EnumBlendMode.h, include/ClassPtr.h, include/ClassScrolledContainer.h, include/ClassDragContainer.h, include/ClassListboxTextItem.h, include/EnumSystemKey.h, include/ClassRadioButton.h, include/ClassXMLParser.h, include/ClassComboDropList.h, include/quaternion_struct.h, include/ClassScriptModule.h, include/ClassWindow.h, include/EnumHorizontalAlignment.h, include/EnumLoggingLevel.h, include/ClassEventSet.h, include/ClassRenderer.h, include/ClassOgreResourceProvider.h, include/ClassLogger.h, include/ClassResourceProvider.h, include/ClassImageCodec.h, include/vector3_struct.h, include/ClassScrolledItemListBase.h, include/ClassEventArgs.h, include/ClassPropertySet.h, include/EnumSortDirection.h, include/EnumKeyScan.h, include/EnumVerticalAlignment.h, include/ClassImageset.h, include/ClassProgressBar.h, include/ClassSystem.h, include/ClassDefaultLogger.h, include/ClassSystemHG3D.h, include/WindowManagerHG3D.h, include/HG3DEventModule.h, include/ClassMenuBase.h, include/ClassCheckbox.h, include/ClassCombobox.h, include/degree_struct.h, include/ClassWidgetLookManager.h, include/ClassListHeader.h, include/ClassTooltip.h, include/ClassOgreRenderer.h, include/EnumTextInputMode.h, include/ClassScriptFunctor.h, include/ClassHG3DWindowStaticFunctions.h, include/HG3DWindowStaticFunctions.h
 
 Library
-  Build-Depends:     base >= 3 && < 5,  HGamer3D-Data >= 0.3.0 && < 0.4.0
+  Build-Depends:     base >= 3 && < 5,  HGamer3D-Data >= 0.4.0 && < 0.5.0
 
-  Exposed-modules:   HGamer3D.Bindings.CEGUI.Utils, HGamer3D.Bindings.CEGUI.StructHG3DClass, HGamer3D.Bindings.CEGUI.ClassPtr, HGamer3D.Bindings.CEGUI.EnumBlendMode, HGamer3D.Bindings.CEGUI.EnumTipState, HGamer3D.Bindings.CEGUI.EnumLoggingLevel, HGamer3D.Bindings.CEGUI.EnumVerticalAlignment, HGamer3D.Bindings.CEGUI.EnumKeyScan, HGamer3D.Bindings.CEGUI.EnumTextInputMode, HGamer3D.Bindings.CEGUI.EnumSortDirection, HGamer3D.Bindings.CEGUI.EnumHorizontalAlignment, HGamer3D.Bindings.CEGUI.EnumQuadSplitMode, HGamer3D.Bindings.CEGUI.EnumWindowUpdateMode, HGamer3D.Bindings.CEGUI.EnumFWSizingLocation, HGamer3D.Bindings.CEGUI.EnumTabPanePosition, HGamer3D.Bindings.CEGUI.EnumSystemKey, HGamer3D.Bindings.CEGUI.EnumMouseButton, HGamer3D.Bindings.CEGUI.EnumSelectionMode, HGamer3D.Bindings.CEGUI.ClassTooltip, HGamer3D.Bindings.CEGUI.ClassListboxItem, HGamer3D.Bindings.CEGUI.ClassScrolledItemListBase, HGamer3D.Bindings.CEGUI.ClassFontManager, HGamer3D.Bindings.CEGUI.ClassOgreResourceProvider, HGamer3D.Bindings.CEGUI.ClassMenuBase, HGamer3D.Bindings.CEGUI.ClassEventArgs, HGamer3D.Bindings.CEGUI.ClassScheme, HGamer3D.Bindings.CEGUI.ClassWindowManager, HGamer3D.Bindings.CEGUI.ClassListboxTextItem, HGamer3D.Bindings.CEGUI.ClassListbox, HGamer3D.Bindings.CEGUI.ClassDragContainer, HGamer3D.Bindings.CEGUI.ClassPropertySet, HGamer3D.Bindings.CEGUI.ClassDefaultLogger, HGamer3D.Bindings.CEGUI.ClassEventSet, HGamer3D.Bindings.CEGUI.ClassImageCodec, HGamer3D.Bindings.CEGUI.ClassResourceProvider, HGamer3D.Bindings.CEGUI.ClassListHeader, HGamer3D.Bindings.CEGUI.ClassHG3DWindowStaticFunctions, HGamer3D.Bindings.CEGUI.ClassWindow, HGamer3D.Bindings.CEGUI.ClassSpinner, HGamer3D.Bindings.CEGUI.ClassSchemeManager, HGamer3D.Bindings.CEGUI.ClassComboDropList, HGamer3D.Bindings.CEGUI.ClassScrollbar, HGamer3D.Bindings.CEGUI.ClassHG3DListboxStaticFunctions, HGamer3D.Bindings.CEGUI.ClassScriptModule, HGamer3D.Bindings.CEGUI.ClassHG3DEventController, HGamer3D.Bindings.CEGUI.ClassMultiColumnList, HGamer3D.Bindings.CEGUI.ClassWidgetLookManager, HGamer3D.Bindings.CEGUI.ClassScriptFunctor, HGamer3D.Bindings.CEGUI.ClassTree, HGamer3D.Bindings.CEGUI.ClassFrameWindow, HGamer3D.Bindings.CEGUI.ClassThumb, HGamer3D.Bindings.CEGUI.ClassFont, HGamer3D.Bindings.CEGUI.ClassDefaultResourceProvider, HGamer3D.Bindings.CEGUI.ClassItemListbox, HGamer3D.Bindings.CEGUI.ClassScrollablePane, HGamer3D.Bindings.CEGUI.ClassLogger, HGamer3D.Bindings.CEGUI.ClassHG3DEventStaticFunctions, HGamer3D.Bindings.CEGUI.ClassRenderer, HGamer3D.Bindings.CEGUI.ClassMenuItem, HGamer3D.Bindings.CEGUI.ClassListHeaderSegment, HGamer3D.Bindings.CEGUI.ClassProgressBar, HGamer3D.Bindings.CEGUI.ClassSystem, HGamer3D.Bindings.CEGUI.ClassTabButton, HGamer3D.Bindings.CEGUI.ClassSlider, HGamer3D.Bindings.CEGUI.ClassImageset, HGamer3D.Bindings.CEGUI.ClassMultiLineEditbox, HGamer3D.Bindings.CEGUI.ClassPushButton, HGamer3D.Bindings.CEGUI.ClassOgreRenderer, HGamer3D.Bindings.CEGUI.ClassWindowManagerHG3D, HGamer3D.Bindings.CEGUI.ClassScrolledContainer, HGamer3D.Bindings.CEGUI.ClassItemEntry, HGamer3D.Bindings.CEGUI.ClassCheckbox, HGamer3D.Bindings.CEGUI.ClassEditbox, HGamer3D.Bindings.CEGUI.ClassCombobox, HGamer3D.Bindings.CEGUI.ClassRadioButton, HGamer3D.Bindings.CEGUI.ClassSystemHG3D, HGamer3D.Bindings.CEGUI.ClassXMLParser
+  Exposed-modules:   HGamer3D.Bindings.CEGUI.Utils, HGamer3D.Bindings.CEGUI.StructHG3DClass, HGamer3D.Bindings.CEGUI.ClassPtr, HGamer3D.Bindings.CEGUI.EnumTextInputMode, HGamer3D.Bindings.CEGUI.EnumLoggingLevel, HGamer3D.Bindings.CEGUI.EnumWindowUpdateMode, HGamer3D.Bindings.CEGUI.EnumMouseButton, HGamer3D.Bindings.CEGUI.EnumTipState, HGamer3D.Bindings.CEGUI.EnumQuadSplitMode, HGamer3D.Bindings.CEGUI.EnumHorizontalAlignment, HGamer3D.Bindings.CEGUI.EnumKeyScan, HGamer3D.Bindings.CEGUI.EnumSelectionMode, HGamer3D.Bindings.CEGUI.EnumVerticalAlignment, HGamer3D.Bindings.CEGUI.EnumSortDirection, HGamer3D.Bindings.CEGUI.EnumTabPanePosition, HGamer3D.Bindings.CEGUI.EnumBlendMode, HGamer3D.Bindings.CEGUI.EnumFWSizingLocation, HGamer3D.Bindings.CEGUI.EnumSystemKey, HGamer3D.Bindings.CEGUI.ClassScrolledContainer, HGamer3D.Bindings.CEGUI.ClassSystem, HGamer3D.Bindings.CEGUI.ClassPushButton, HGamer3D.Bindings.CEGUI.ClassScheme, HGamer3D.Bindings.CEGUI.ClassWindowManager, HGamer3D.Bindings.CEGUI.ClassRadioButton, HGamer3D.Bindings.CEGUI.ClassMenuBase, HGamer3D.Bindings.CEGUI.ClassCombobox, HGamer3D.Bindings.CEGUI.ClassThumb, HGamer3D.Bindings.CEGUI.ClassSchemeManager, HGamer3D.Bindings.CEGUI.ClassEventArgs, HGamer3D.Bindings.CEGUI.ClassComboDropList, HGamer3D.Bindings.CEGUI.ClassImageset, HGamer3D.Bindings.CEGUI.ClassScriptFunctor, HGamer3D.Bindings.CEGUI.ClassWindowManagerHG3D, HGamer3D.Bindings.CEGUI.ClassScrollbar, HGamer3D.Bindings.CEGUI.ClassTree, HGamer3D.Bindings.CEGUI.ClassUDim, HGamer3D.Bindings.CEGUI.ClassHG3DEventStaticFunctions, HGamer3D.Bindings.CEGUI.ClassListHeaderSegment, HGamer3D.Bindings.CEGUI.ClassUVector2, HGamer3D.Bindings.CEGUI.ClassItemListbox, HGamer3D.Bindings.CEGUI.ClassCheckbox, HGamer3D.Bindings.CEGUI.ClassOgreResourceProvider, HGamer3D.Bindings.CEGUI.ClassHG3DEventController, HGamer3D.Bindings.CEGUI.ClassScrollablePane, HGamer3D.Bindings.CEGUI.ClassTooltip, HGamer3D.Bindings.CEGUI.ClassResourceProvider, HGamer3D.Bindings.CEGUI.ClassLogger, HGamer3D.Bindings.CEGUI.ClassListHeader, HGamer3D.Bindings.CEGUI.ClassPropertySet, HGamer3D.Bindings.CEGUI.ClassEventSet, HGamer3D.Bindings.CEGUI.ClassMultiColumnList, HGamer3D.Bindings.CEGUI.ClassFrameWindow, HGamer3D.Bindings.CEGUI.ClassOgreRenderer, HGamer3D.Bindings.CEGUI.ClassFont, HGamer3D.Bindings.CEGUI.ClassFontManager, HGamer3D.Bindings.CEGUI.ClassImageCodec, HGamer3D.Bindings.CEGUI.ClassDefaultResourceProvider, HGamer3D.Bindings.CEGUI.ClassWidgetLookManager, HGamer3D.Bindings.CEGUI.ClassScriptModule, HGamer3D.Bindings.CEGUI.ClassItemEntry, HGamer3D.Bindings.CEGUI.ClassRenderer, HGamer3D.Bindings.CEGUI.ClassTabButton, HGamer3D.Bindings.CEGUI.ClassMenuItem, HGamer3D.Bindings.CEGUI.ClassScrolledItemListBase, HGamer3D.Bindings.CEGUI.ClassDefaultLogger, HGamer3D.Bindings.CEGUI.ClassEditbox, HGamer3D.Bindings.CEGUI.ClassProgressBar, HGamer3D.Bindings.CEGUI.ClassMultiLineEditbox, HGamer3D.Bindings.CEGUI.ClassHG3DWindowStaticFunctions, HGamer3D.Bindings.CEGUI.ClassListboxTextItem, HGamer3D.Bindings.CEGUI.ClassSystemHG3D, HGamer3D.Bindings.CEGUI.ClassSlider, HGamer3D.Bindings.CEGUI.ClassDragContainer, HGamer3D.Bindings.CEGUI.ClassListboxItem, HGamer3D.Bindings.CEGUI.ClassXMLParser, HGamer3D.Bindings.CEGUI.ClassSpinner, HGamer3D.Bindings.CEGUI.ClassHG3DListboxStaticFunctions, HGamer3D.Bindings.CEGUI.ClassWindow, HGamer3D.Bindings.CEGUI.ClassListbox
   Other-modules:     
 
   ghc-options:       
@@ -31,6 +31,6 @@
   Build-tools:       
   build-depends:     
   if os(windows)
-     extra-libraries:   hg3dcegui031
+     extra-libraries:   hg3dcegui040
   else
-     extra-libraries:   hg3dcegui031,CEGUIBase-0.7.7,CEGUIOgreRenderer-0.7.7
+     extra-libraries:   hg3dcegui040,CEGUIBase-0.7.7,CEGUIOgreRenderer-0.7.7
diff --git a/HGamer3D/Bindings/CEGUI/ClassDragContainer.chs b/HGamer3D/Bindings/CEGUI/ClassDragContainer.chs
--- a/HGamer3D/Bindings/CEGUI/ClassDragContainer.chs
+++ b/HGamer3D/Bindings/CEGUI/ClassDragContainer.chs
@@ -113,6 +113,16 @@
  fromBool `Bool' ,
  alloca- `Bool' peekBoolUtil*} -> `()'  #}
 
+{- function setFixedDragOffset -}
+{#fun cegui_drgcnt_setFixedDragOffset as setFixedDragOffset 
+{ withHG3DClass* `HG3DClass' ,
+ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function getFixedDragOffset -}
+{#fun cegui_drgcnt_getFixedDragOffset as getFixedDragOffset 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `HG3DClass' peek*} -> `()'  #}
+
 {- function setUsingFixedDragOffset -}
 {#fun cegui_drgcnt_setUsingFixedDragOffset as setUsingFixedDragOffset 
 { withHG3DClass* `HG3DClass' ,
diff --git a/HGamer3D/Bindings/CEGUI/ClassHG3DWindowStaticFunctions.chs b/HGamer3D/Bindings/CEGUI/ClassHG3DWindowStaticFunctions.chs
--- a/HGamer3D/Bindings/CEGUI/ClassHG3DWindowStaticFunctions.chs
+++ b/HGamer3D/Bindings/CEGUI/ClassHG3DWindowStaticFunctions.chs
@@ -96,3 +96,49 @@
 { withHG3DClass* `HG3DClass' ,
  alloca- `HG3DClass' peek*} -> `()'  #}
 
+{- function udScale -}
+{#fun cegui_hg3dwsfs_udScale as udScale 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `Float' peekFloatConv*} -> `()'  #}
+
+{- function udOffset -}
+{#fun cegui_hg3dwsfs_udOffset as udOffset 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `Float' peekFloatConv*} -> `()'  #}
+
+{- function v2X -}
+{#fun cegui_hg3dwsfs_v2X as v2X 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `HG3DClass' peek*} -> `()'  #}
+
+{- function v2Y -}
+{#fun cegui_hg3dwsfs_v2Y as v2Y 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `HG3DClass' peek*} -> `()'  #}
+
+{- function getWindowWidth -}
+{#fun cegui_hg3dwsfs_getWindowWidth as getWindowWidth 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `HG3DClass' peek*} -> `()'  #}
+
+{- function getWindowHeight -}
+{#fun cegui_hg3dwsfs_getWindowHeight as getWindowHeight 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `HG3DClass' peek*} -> `()'  #}
+
+{- function setNewWindowSize -}
+{#fun cegui_hg3dwsfs_setNewWindowSize as setNewWindowSize 
+{ withHG3DClass* `HG3DClass' ,
+ realToFrac `Float' ,
+ realToFrac `Float' } -> `()'  #}
+
+{- function getWindowMargin -}
+{#fun cegui_hg3dwsfs_getWindowMargin as getWindowMargin 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `HG3DClass' peek*} -> `()'  #}
+
+{- function setWindowMargin -}
+{#fun cegui_hg3dwsfs_setWindowMargin as setWindowMargin 
+{ withHG3DClass* `HG3DClass' ,
+ withHG3DClass* `HG3DClass' } -> `()'  #}
+
diff --git a/HGamer3D/Bindings/CEGUI/ClassListHeader.chs b/HGamer3D/Bindings/CEGUI/ClassListHeader.chs
--- a/HGamer3D/Bindings/CEGUI/ClassListHeader.chs
+++ b/HGamer3D/Bindings/CEGUI/ClassListHeader.chs
@@ -164,6 +164,29 @@
 { withHG3DClass* `HG3DClass' ,
  fromBool `Bool' } -> `()'  #}
 
+{- function addColumn -}
+{#fun cegui_lsthdr_addColumn as addColumn 
+{ withHG3DClass* `HG3DClass' ,
+ withCString* `String' ,
+ fromIntegral `Int' ,
+ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function insertColumn -}
+{#fun cegui_lsthdr_insertColumn as insertColumn 
+{ withHG3DClass* `HG3DClass' ,
+ withCString* `String' ,
+ fromIntegral `Int' ,
+ withHG3DClass* `HG3DClass' ,
+ fromIntegral `Int' } -> `()'  #}
+
+{- function insertColumn2 -}
+{#fun cegui_lsthdr_insertColumn2 as insertColumn2 
+{ withHG3DClass* `HG3DClass' ,
+ withCString* `String' ,
+ fromIntegral `Int' ,
+ withHG3DClass* `HG3DClass' ,
+ withHG3DClass* `HG3DClass' } -> `()'  #}
+
 {- function removeColumn -}
 {#fun cegui_lsthdr_removeColumn as removeColumn 
 { withHG3DClass* `HG3DClass' ,
@@ -202,6 +225,12 @@
 {#fun cegui_lsthdr_setSegmentOffset as setSegmentOffset 
 { withHG3DClass* `HG3DClass' ,
  realToFrac `Float' } -> `()'  #}
+
+{- function setColumnWidth -}
+{#fun cegui_lsthdr_setColumnWidth as setColumnWidth 
+{ withHG3DClass* `HG3DClass' ,
+ fromIntegral `Int' ,
+ withHG3DClass* `HG3DClass' } -> `()'  #}
 
 {- function ListHeader -}
 {#fun cegui_lsthdr_construct as new 
diff --git a/HGamer3D/Bindings/CEGUI/ClassMenuItem.chs b/HGamer3D/Bindings/CEGUI/ClassMenuItem.chs
--- a/HGamer3D/Bindings/CEGUI/ClassMenuItem.chs
+++ b/HGamer3D/Bindings/CEGUI/ClassMenuItem.chs
@@ -76,6 +76,16 @@
 { withHG3DClass* `HG3DClass' ,
  realToFrac `Float' } -> `()'  #}
 
+{- function getPopupOffset -}
+{#fun cegui_mnitm_getPopupOffset as getPopupOffset 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `HG3DClass' peek*} -> `()'  #}
+
+{- function setPopupOffset -}
+{#fun cegui_mnitm_setPopupOffset as setPopupOffset 
+{ withHG3DClass* `HG3DClass' ,
+ withHG3DClass* `HG3DClass' } -> `()'  #}
+
 {- function openPopupMenu -}
 {#fun cegui_mnitm_openPopupMenu as openPopupMenu 
 { withHG3DClass* `HG3DClass' ,
diff --git a/HGamer3D/Bindings/CEGUI/ClassMultiColumnList.chs b/HGamer3D/Bindings/CEGUI/ClassMultiColumnList.chs
--- a/HGamer3D/Bindings/CEGUI/ClassMultiColumnList.chs
+++ b/HGamer3D/Bindings/CEGUI/ClassMultiColumnList.chs
@@ -255,6 +255,21 @@
 {#fun cegui_mltclmlst_resetList as resetList 
 { withHG3DClass* `HG3DClass' } -> `()'  #}
 
+{- function addColumn -}
+{#fun cegui_mltclmlst_addColumn as addColumn 
+{ withHG3DClass* `HG3DClass' ,
+ withCString* `String' ,
+ fromIntegral `Int' ,
+ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function insertColumn -}
+{#fun cegui_mltclmlst_insertColumn as insertColumn 
+{ withHG3DClass* `HG3DClass' ,
+ withCString* `String' ,
+ fromIntegral `Int' ,
+ withHG3DClass* `HG3DClass' ,
+ fromIntegral `Int' } -> `()'  #}
+
 {- function removeColumn -}
 {#fun cegui_mltclmlst_removeColumn as removeColumn 
 { withHG3DClass* `HG3DClass' ,
@@ -377,6 +392,12 @@
 {- function handleUpdatedItemData -}
 {#fun cegui_mltclmlst_handleUpdatedItemData as handleUpdatedItemData 
 { withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function setColumnHeaderWidth -}
+{#fun cegui_mltclmlst_setColumnHeaderWidth as setColumnHeaderWidth 
+{ withHG3DClass* `HG3DClass' ,
+ fromIntegral `Int' ,
+ withHG3DClass* `HG3DClass' } -> `()'  #}
 
 {- function setUserSortControlEnabled -}
 {#fun cegui_mltclmlst_setUserSortControlEnabled as setUserSortControlEnabled 
diff --git a/HGamer3D/Bindings/CEGUI/ClassPtr.chs b/HGamer3D/Bindings/CEGUI/ClassPtr.chs
--- a/HGamer3D/Bindings/CEGUI/ClassPtr.chs
+++ b/HGamer3D/Bindings/CEGUI/ClassPtr.chs
@@ -138,6 +138,10 @@
 {#pointer *ClassTooltip as ClassTooltip#}
 {- class ClassTree -}
 {#pointer *ClassTree as ClassTree#}
+{- class ClassUDim -}
+{#pointer *ClassUDim as ClassUDim#}
+{- class ClassUVector2 -}
+{#pointer *ClassUVector2 as ClassUVector2#}
 {- class ClassWidgetLookManager -}
 {#pointer *ClassWidgetLookManager as ClassWidgetLookManager#}
 {- class ClassWindow -}
diff --git a/HGamer3D/Bindings/CEGUI/ClassUDim.chs b/HGamer3D/Bindings/CEGUI/ClassUDim.chs
new file mode 100644
--- /dev/null
+++ b/HGamer3D/Bindings/CEGUI/ClassUDim.chs
@@ -0,0 +1,65 @@
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+-- This source file is part of HGamer3D, a project to enable 3D game development 
+-- in Haskell. For the latest info, see http://www.hgamer3d.org .
+-- 
+
+-- (c) 2011-2014 Peter Althainz
+-- 
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+-- 
+--     http://www.apache.org/licenses/LICENSE-2.0
+-- 
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- 
+
+
+-- ClassUDim.chs
+
+-- 
+
+module HGamer3D.Bindings.CEGUI.ClassUDim where
+
+import Foreign
+import Foreign.Ptr
+import Foreign.C
+
+import HGamer3D.Data.HG3DClass
+import HGamer3D.Data.Vector
+import HGamer3D.Data.Colour
+import HGamer3D.Data.Angle
+
+{# import HGamer3D.Bindings.CEGUI.Utils #}
+{# import HGamer3D.Bindings.CEGUI.ClassPtr #}
+{# import HGamer3D.Bindings.CEGUI.StructHG3DClass #}
+
+#include "ClassUDim.h"
+{- function UDim2 -}
+{#fun cegui_udim_construct as new 
+{ realToFrac `Float' ,
+ realToFrac `Float' ,
+ alloca- `HG3DClass' peek*} -> `()'  #}
+
+{- function ~UDim -}
+{#fun cegui_udim_destruct as delete 
+{ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function asAbsolute -}
+{#fun cegui_udim_asAbsolute as asAbsolute 
+{ withHG3DClass* `HG3DClass' ,
+ realToFrac `Float' ,
+ alloca- `Float' peekFloatConv*} -> `()'  #}
+
+{- function asRelative -}
+{#fun cegui_udim_asRelative as asRelative 
+{ withHG3DClass* `HG3DClass' ,
+ realToFrac `Float' ,
+ alloca- `Float' peekFloatConv*} -> `()'  #}
+
diff --git a/HGamer3D/Bindings/CEGUI/ClassUVector2.chs b/HGamer3D/Bindings/CEGUI/ClassUVector2.chs
new file mode 100644
--- /dev/null
+++ b/HGamer3D/Bindings/CEGUI/ClassUVector2.chs
@@ -0,0 +1,53 @@
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+-- This source file is part of HGamer3D, a project to enable 3D game development 
+-- in Haskell. For the latest info, see http://www.hgamer3d.org .
+-- 
+
+-- (c) 2011-2014 Peter Althainz
+-- 
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+-- 
+--     http://www.apache.org/licenses/LICENSE-2.0
+-- 
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- 
+
+
+-- ClassUVector2.chs
+
+-- 
+
+module HGamer3D.Bindings.CEGUI.ClassUVector2 where
+
+import Foreign
+import Foreign.Ptr
+import Foreign.C
+
+import HGamer3D.Data.HG3DClass
+import HGamer3D.Data.Vector
+import HGamer3D.Data.Colour
+import HGamer3D.Data.Angle
+
+{# import HGamer3D.Bindings.CEGUI.Utils #}
+{# import HGamer3D.Bindings.CEGUI.ClassPtr #}
+{# import HGamer3D.Bindings.CEGUI.StructHG3DClass #}
+
+#include "ClassUVector2.h"
+{- function UVector22 -}
+{#fun cegui_uv2_construct as new 
+{ withHG3DClass* `HG3DClass' ,
+ withHG3DClass* `HG3DClass' ,
+ alloca- `HG3DClass' peek*} -> `()'  #}
+
+{- function ~UVector2 -}
+{#fun cegui_uv2_destruct as delete 
+{ withHG3DClass* `HG3DClass' } -> `()'  #}
+
diff --git a/HGamer3D/Bindings/CEGUI/ClassWindow.chs b/HGamer3D/Bindings/CEGUI/ClassWindow.chs
--- a/HGamer3D/Bindings/CEGUI/ClassWindow.chs
+++ b/HGamer3D/Bindings/CEGUI/ClassWindow.chs
@@ -656,6 +656,85 @@
  withCString* `String' ,
  withCString* `String' } -> `()'  #}
 
+{- function setArea -}
+{#fun cegui_wnd_setArea as setArea 
+{ withHG3DClass* `HG3DClass' ,
+ withHG3DClass* `HG3DClass' ,
+ withHG3DClass* `HG3DClass' ,
+ withHG3DClass* `HG3DClass' ,
+ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function setArea2 -}
+{#fun cegui_wnd_setArea2 as setArea2 
+{ withHG3DClass* `HG3DClass' ,
+ withHG3DClass* `HG3DClass' ,
+ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function setPosition -}
+{#fun cegui_wnd_setPosition as setPosition 
+{ withHG3DClass* `HG3DClass' ,
+ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function setXPosition -}
+{#fun cegui_wnd_setXPosition as setXPosition 
+{ withHG3DClass* `HG3DClass' ,
+ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function setYPosition -}
+{#fun cegui_wnd_setYPosition as setYPosition 
+{ withHG3DClass* `HG3DClass' ,
+ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function setSize -}
+{#fun cegui_wnd_setSize as setSize 
+{ withHG3DClass* `HG3DClass' ,
+ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function setWidth -}
+{#fun cegui_wnd_setWidth as setWidth 
+{ withHG3DClass* `HG3DClass' ,
+ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function setHeight -}
+{#fun cegui_wnd_setHeight as setHeight 
+{ withHG3DClass* `HG3DClass' ,
+ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function setMaxSize -}
+{#fun cegui_wnd_setMaxSize as setMaxSize 
+{ withHG3DClass* `HG3DClass' ,
+ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function setMinSize -}
+{#fun cegui_wnd_setMinSize as setMinSize 
+{ withHG3DClass* `HG3DClass' ,
+ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function getPosition -}
+{#fun cegui_wnd_getPosition as getPosition 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `HG3DClass' peek*} -> `()'  #}
+
+{- function getXPosition -}
+{#fun cegui_wnd_getXPosition as getXPosition 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `HG3DClass' peek*} -> `()'  #}
+
+{- function getYPosition -}
+{#fun cegui_wnd_getYPosition as getYPosition 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `HG3DClass' peek*} -> `()'  #}
+
+{- function getMaxSize -}
+{#fun cegui_wnd_getMaxSize as getMaxSize 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `HG3DClass' peek*} -> `()'  #}
+
+{- function getMinSize -}
+{#fun cegui_wnd_getMinSize as getMinSize 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `HG3DClass' peek*} -> `()'  #}
+
 {- function render -}
 {#fun cegui_wnd_render as render 
 { withHG3DClass* `HG3DClass' } -> `()'  #}
diff --git a/include/CEGUIDllDefines.h b/include/CEGUIDllDefines.h
--- a/include/CEGUIDllDefines.h
+++ b/include/CEGUIDllDefines.h
@@ -16,10 +16,10 @@
 
 // CEGUIDllDefines.h
 
-#ifndef _HGamer3DCEGUI031_DLLDEFINES_H_
-#define _HGamer3DCEGUI031_DLLDEFINES_H_
+#ifndef _HGamer3DCEGUI040_DLLDEFINES_H_
+#define _HGamer3DCEGUI040_DLLDEFINES_H_
 
-/* Cmake will define HGamer3DCEGUI031_EXPORTS on Windows when it
+/* Cmake will define HGamer3DCEGUI040_EXPORTS on Windows when it
 configures to build a shared library. If you are going to use
 another build system on windows or create the visual studio
 projects by hand you need to define MyLibrary_EXPORTS when
@@ -29,13 +29,13 @@
 // We are using the Visual Studio Compiler and building Shared libraries
 
 #if (defined (_WIN32)) && !(defined (__GNUC__)) 
-  #if defined(HGamer3DCEGUI031_EXPORTS)
+  #if defined(HGamer3DCEGUI040_EXPORTS)
     #define  CEGUI_LIB_EXPORT __declspec(dllexport)
   #else
     #define  CEGUI_LIB_EXPORT __declspec(dllimport)
-  #endif /* HGamer3DCEGUI031_EXPORTS */
+  #endif /* HGamer3DCEGUI040_EXPORTS */
 #else /* defined (_WIN32) */
  #define CEGUI_LIB_EXPORT
 #endif
 
-#endif /* _HGamer3DCEGUI031_DLLDEFINES_H_ */
+#endif /* _HGamer3DCEGUI040_DLLDEFINES_H_ */
diff --git a/include/ClassDragContainer.h b/include/ClassDragContainer.h
--- a/include/ClassDragContainer.h
+++ b/include/ClassDragContainer.h
@@ -26,6 +26,7 @@
 
 #include "ClassPtr.h"
 #include "ClassWindow.h"
+#include "ClassUVector2.h"
 
 
 // Constructor for DragContainer
@@ -69,6 +70,12 @@
 
 // Immediately pick up the DragContainer
 void cegui_drgcnt_pickUp(struct hg3dclass_struct * thisclass_c, const int force_sticky_c, int * result_c);
+
+// Set the fixed mouse cursor dragging offset to be used for this DragContainer
+void cegui_drgcnt_setFixedDragOffset(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * offset_c);
+
+// Return the fixed mouse cursor dragging offset to be used for this DragContainer
+void cegui_drgcnt_getFixedDragOffset(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
 
 // Set whether the fixed dragging offset - as set with the setFixedDragOffset - function will be used, or whether the built-in positioning will be used. 
 void cegui_drgcnt_setUsingFixedDragOffset(struct hg3dclass_struct * thisclass_c, const int enable_c);
diff --git a/include/ClassHG3DWindowStaticFunctions.h b/include/ClassHG3DWindowStaticFunctions.h
--- a/include/ClassHG3DWindowStaticFunctions.h
+++ b/include/ClassHG3DWindowStaticFunctions.h
@@ -37,6 +37,9 @@
 #include "ClassSlider.h"
 #include "ClassSpinner.h"
 #include "ClassMultiColumnList.h"
+#include "ClassUDim.h"
+#include "ClassUVector2.h"
+#include "ClassSystem.h"
 
 
 // 
@@ -71,5 +74,32 @@
 
 // 
 void cegui_hg3dwsfs_castWindowToMultiColumnList(struct hg3dclass_struct * window_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_hg3dwsfs_udScale(struct hg3dclass_struct * ud_c, float * result_c);
+
+// 
+void cegui_hg3dwsfs_udOffset(struct hg3dclass_struct * ud_c, float * result_c);
+
+// 
+void cegui_hg3dwsfs_v2X(struct hg3dclass_struct * uv2_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_hg3dwsfs_v2Y(struct hg3dclass_struct * uv2_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_hg3dwsfs_getWindowWidth(struct hg3dclass_struct * window_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_hg3dwsfs_getWindowHeight(struct hg3dclass_struct * window_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_hg3dwsfs_setNewWindowSize(struct hg3dclass_struct * system_c, float width_c, float height_c);
+
+// 
+void cegui_hg3dwsfs_getWindowMargin(struct hg3dclass_struct * window_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_hg3dwsfs_setWindowMargin(struct hg3dclass_struct * window_c, struct hg3dclass_struct * margin_c);
 
 #endif 
diff --git a/include/ClassListHeader.h b/include/ClassListHeader.h
--- a/include/ClassListHeader.h
+++ b/include/ClassListHeader.h
@@ -27,6 +27,7 @@
 #include "ClassPtr.h"
 #include "ClassListHeaderSegment.h"
 #include "EnumSortDirection.h"
+#include "ClassUDim.h"
 
 
 // Return the number of columns or segments attached to the header. 
@@ -98,6 +99,15 @@
 // Set whether columns may be reordered by the user via drag and drop. 
 void cegui_lsthdr_setColumnDraggingEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
 
+// Add a new column segment to the end of the header. 
+void cegui_lsthdr_addColumn(struct hg3dclass_struct * thisclass_c, char * text_c, unsigned int id_c, struct hg3dclass_struct * width_c);
+
+// Insert a new column segment at the specified position. 
+void cegui_lsthdr_insertColumn(struct hg3dclass_struct * thisclass_c, char * text_c, unsigned int id_c, struct hg3dclass_struct * width_c, unsigned int position_c);
+
+// Insert a new column segment at the specified position. 
+void cegui_lsthdr_insertColumn2(struct hg3dclass_struct * thisclass_c, char * text_c, unsigned int id_c, struct hg3dclass_struct * width_c, struct hg3dclass_struct * position_c);
+
 // Removes a column segment from the ListHeader
 void cegui_lsthdr_removeColumn(struct hg3dclass_struct * thisclass_c, unsigned int column_c);
 
@@ -118,6 +128,9 @@
 
 // Set the current base segment offset. (This implements scrolling of the header segments within the header area). 
 void cegui_lsthdr_setSegmentOffset(struct hg3dclass_struct * thisclass_c, float offset_c);
+
+// Set the width of the specified column. 
+void cegui_lsthdr_setColumnWidth(struct hg3dclass_struct * thisclass_c, unsigned int column_c, struct hg3dclass_struct * width_c);
 
 // Constructor for the list header base class. 
 void cegui_lsthdr_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
diff --git a/include/ClassListbox.h b/include/ClassListbox.h
--- a/include/ClassListbox.h
+++ b/include/ClassListbox.h
@@ -80,8 +80,7 @@
 // Add the given ListboxItem
 void cegui_lstbx_addItem(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c);
 
-//     Insert an item into the list box before a specified item already in the
-
+// Insert an item into the list box before a specified item already in the list. 
 void cegui_lstbx_insertItem(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c, struct hg3dclass_struct * position_c);
 
 // Removes the given item from the list box. If the item is has the auto delete state set, the item will be deleted. 
diff --git a/include/ClassMenuItem.h b/include/ClassMenuItem.h
--- a/include/ClassMenuItem.h
+++ b/include/ClassMenuItem.h
@@ -25,6 +25,7 @@
 #define _DEFINED_HG3D_ClassMenuItem
 
 #include "ClassPtr.h"
+#include "ClassUVector2.h"
 
 
 // return true if user is hovering over this widget (or it's pushed and user is not over it for highlight) 
@@ -47,6 +48,12 @@
 
 // Sets the time, which has to elapse before the popup window is opened/closed if the hovering state changes. 
 void cegui_mnitm_setAutoPopupTimeout(struct hg3dclass_struct * thisclass_c, float time_c);
+
+// Returns the current offset for popup placement. 
+void cegui_mnitm_getPopupOffset(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// sets the current offset for popup placement. 
+void cegui_mnitm_setPopupOffset(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * popupOffset_c);
 
 // Opens the PopupMenu. 
 void cegui_mnitm_openPopupMenu(struct hg3dclass_struct * thisclass_c, int notify_c);
diff --git a/include/ClassMultiColumnList.h b/include/ClassMultiColumnList.h
--- a/include/ClassMultiColumnList.h
+++ b/include/ClassMultiColumnList.h
@@ -31,6 +31,7 @@
 #include "EnumSelectionMode.h"
 #include "ClassScrollbar.h"
 #include "ClassListHeader.h"
+#include "ClassUDim.h"
 
 
 // Return whether user manipulation of the sort column and direction are enabled. 
@@ -147,6 +148,12 @@
 // Remove all items from the list. 
 void cegui_mltclmlst_resetList(struct hg3dclass_struct * thisclass_c);
 
+// Add a column to the list box. 
+void cegui_mltclmlst_addColumn(struct hg3dclass_struct * thisclass_c, char * text_c, unsigned int col_id_c, struct hg3dclass_struct * width_c);
+
+// Insert a new column in the list. 
+void cegui_mltclmlst_insertColumn(struct hg3dclass_struct * thisclass_c, char * text_c, unsigned int col_id_c, struct hg3dclass_struct * width_c, unsigned int position_c);
+
 // Removes a column from the list box. This will cause any ListboxItem
 void cegui_mltclmlst_removeColumn(struct hg3dclass_struct * thisclass_c, unsigned int col_idx_c);
 
@@ -212,6 +219,9 @@
 
 // Inform the list box that one or more attached ListboxItems have been externally modified, and the list should re-sync its internal state and refresh the display as needed. 
 void cegui_mltclmlst_handleUpdatedItemData(struct hg3dclass_struct * thisclass_c);
+
+// Set the width of the specified column header (and therefore the column itself). 
+void cegui_mltclmlst_setColumnHeaderWidth(struct hg3dclass_struct * thisclass_c, unsigned int col_idx_c, struct hg3dclass_struct * width_c);
 
 // Set whether user manipulation of the sort column and direction are enabled. 
 void cegui_mltclmlst_setUserSortControlEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
diff --git a/include/ClassPtr.h b/include/ClassPtr.h
--- a/include/ClassPtr.h
+++ b/include/ClassPtr.h
@@ -182,6 +182,12 @@
 typedef void ClassTree; 
 hg3dclass_struct getHG3DClass_Tree(void *ptrIn);
 
+typedef void ClassUDim; 
+hg3dclass_struct getHG3DClass_UDim(void *ptrIn);
+
+typedef void ClassUVector2; 
+hg3dclass_struct getHG3DClass_UVector2(void *ptrIn);
+
 typedef void ClassWidgetLookManager; 
 hg3dclass_struct getHG3DClass_WidgetLookManager(void *ptrIn);
 
diff --git a/include/ClassUDim.h b/include/ClassUDim.h
new file mode 100644
--- /dev/null
+++ b/include/ClassUDim.h
@@ -0,0 +1,42 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassUDim.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassUDim
+#define _DEFINED_HG3D_ClassUDim
+
+#include "ClassPtr.h"
+
+
+// 
+void cegui_udim_construct(float scale_c, float offset_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_udim_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void cegui_udim_asAbsolute(struct hg3dclass_struct * thisclass_c, float base_c, float * result_c);
+
+// 
+void cegui_udim_asRelative(struct hg3dclass_struct * thisclass_c, float base_c, float * result_c);
+
+#endif 
diff --git a/include/ClassUVector2.h b/include/ClassUVector2.h
new file mode 100644
--- /dev/null
+++ b/include/ClassUVector2.h
@@ -0,0 +1,37 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassUVector2.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassUVector2
+#define _DEFINED_HG3D_ClassUVector2
+
+#include "ClassPtr.h"
+#include "ClassUDim.h"
+
+
+// 
+void cegui_uv2_construct(struct hg3dclass_struct * x_c, struct hg3dclass_struct * y_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_uv2_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassWindow.h b/include/ClassWindow.h
--- a/include/ClassWindow.h
+++ b/include/ClassWindow.h
@@ -30,6 +30,8 @@
 #include "EnumVerticalAlignment.h"
 #include "EnumHorizontalAlignment.h"
 #include "ClassDragContainer.h"
+#include "ClassUDim.h"
+#include "ClassUVector2.h"
 #include "EnumWindowUpdateMode.h"
 
 
@@ -395,6 +397,51 @@
 
 // Sets the value a named user string, creating it as required. 
 void cegui_wnd_setUserString(struct hg3dclass_struct * thisclass_c, char * name_c, char * value_c);
+
+// Set the window area. 
+void cegui_wnd_setArea(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * xpos_c, struct hg3dclass_struct * ypos_c, struct hg3dclass_struct * width_c, struct hg3dclass_struct * height_c);
+
+// Set the window area. 
+void cegui_wnd_setArea2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * pos_c, struct hg3dclass_struct * size_c);
+
+// Set the window's position. 
+void cegui_wnd_setPosition(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * pos_c);
+
+// Set the window's X position. 
+void cegui_wnd_setXPosition(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * x_c);
+
+// Set the window's Y position. 
+void cegui_wnd_setYPosition(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * y_c);
+
+// Set the window's size. 
+void cegui_wnd_setSize(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * size_c);
+
+// Set the window's width. 
+void cegui_wnd_setWidth(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * width_c);
+
+// Set the window's height. 
+void cegui_wnd_setHeight(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * height_c);
+
+// Set the window's maximum size. 
+void cegui_wnd_setMaxSize(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * size_c);
+
+// Set the window's minimum size. 
+void cegui_wnd_setMinSize(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * size_c);
+
+// Get the window's position. 
+void cegui_wnd_getPosition(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Get the window's X position. 
+void cegui_wnd_getXPosition(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Get the window's Y position. 
+void cegui_wnd_getYPosition(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Get the window's maximum size. 
+void cegui_wnd_getMaxSize(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Get the window's minimum size. 
+void cegui_wnd_getMinSize(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
 
 // Causes the Window
 void cegui_wnd_render(struct hg3dclass_struct * thisclass_c);
diff --git a/include/HG3DWindowStaticFunctions.h b/include/HG3DWindowStaticFunctions.h
--- a/include/HG3DWindowStaticFunctions.h
+++ b/include/HG3DWindowStaticFunctions.h
@@ -40,5 +40,21 @@
 	static CEGUI::Slider* castWindowToSlider(CEGUI::Window * window);
 	static CEGUI::Spinner* castWindowToSpinner(CEGUI::Window * window);
 	static CEGUI::MultiColumnList* castWindowToMultiColumnList(CEGUI::Window * window);
+
+	// utility functions for UDims and UVectors
+	static float udScale( const CEGUI::UDim* ud);
+	static float udOffset( const CEGUI::UDim* ud);
+	static CEGUI::UDim* v2X( const CEGUI::UVector2* uv2);
+	static CEGUI::UDim* v2Y( const CEGUI::UVector2* uv2);
+
+	static CEGUI::UDim* getWindowWidth(const CEGUI::Window* window);
+	static CEGUI::UDim* getWindowHeight(const CEGUI::Window* window);
+
+	// utility function to set new window positions
+        static void setNewWindowSize(CEGUI::System* system, float width, float height);
+
+	// utility functions to get and set margin (only one parameter)
+        static CEGUI::UDim* getWindowMargin(const CEGUI::Window* window);
+        static void setWindowMargin (CEGUI::Window* window, const CEGUI::UDim* margin);
 };
 
diff --git a/include/SystemHG3D.h b/include/SystemHG3D.h
new file mode 100644
--- /dev/null
+++ b/include/SystemHG3D.h
@@ -0,0 +1,49 @@
+// WindowManagerHG3D - special wm class to get the singleton without templates
+
+#include <CEGUI/CEGUI.h>
+
+
+class NoLogger : public CEGUI::Logger
+{
+	   void logEvent (const CEGUI::String&, CEGUI::LoggingLevel)
+	   {
+
+	   }
+	   void setLogFilename(const CEGUI::String&, bool)
+	   {      
+
+	   }
+};
+
+
+class SystemHG3D {
+	
+
+	public:
+	
+		static CEGUI::Logger* createNoLogger() {
+			return new NoLogger();
+		}
+		
+		static CEGUI::DefaultResourceProvider* getDefaultResourceProvider(CEGUI::System* system) {
+			return static_cast<CEGUI::DefaultResourceProvider*> (system->getResourceProvider());
+		};
+		static CEGUI::SchemeManager* getSchemeManagerSingleton() {
+			return static_cast<CEGUI::SchemeManager*> (CEGUI::SchemeManager::getSingletonPtr());
+		};
+		static void schemeManagerCreate(CEGUI::SchemeManager* smgr, const char* scheme) {
+			smgr->create(scheme);
+		};
+		static void fontManagerCreate(CEGUI::FontManager* fmgr, const char* font) {
+			fmgr->create(font);
+		};
+		static CEGUI::FontManager* getFontManagerSingleton() {
+			return static_cast<CEGUI::FontManager*> (CEGUI::FontManager::getSingletonPtr());
+		};
+		static CEGUI::Logger* getLoggerSingleton() {
+			return static_cast<CEGUI::Logger*> (CEGUI::Logger::getSingletonPtr());
+		};
+	
+};
+
+
diff --git a/include/WindowManagerHG3D.h b/include/WindowManagerHG3D.h
new file mode 100644
--- /dev/null
+++ b/include/WindowManagerHG3D.h
@@ -0,0 +1,26 @@
+// WindowManagerHG3D - special wm class to get the singleton without templates
+
+#include <CEGUI/CEGUI.h>
+
+
+class WindowManagerHG3D {
+	
+	public:
+		CEGUI::WindowManager* pWmgr;
+		
+		WindowManagerHG3D() {pWmgr = CEGUI::WindowManager::getSingletonPtr();};
+		~WindowManagerHG3D() {};
+		
+		static CEGUI::WindowManager* getSingleton() 
+		{
+			return CEGUI::WindowManager::getSingletonPtr();
+		}
+		
+		CEGUI::Window* loadWindowLayoutHG3D(const CEGUI::String& filename, const CEGUI::String& name_prefix)
+		{
+			return pWmgr->loadWindowLayout(filename, name_prefix);
+		};
+	
+};
+
+
diff --git a/include/colorvalue_struct.h b/include/colorvalue_struct.h
new file mode 100644
--- /dev/null
+++ b/include/colorvalue_struct.h
@@ -0,0 +1,6 @@
+typedef struct colourvalue_struct {
+	float r;
+	float g;
+	float b;
+	float a;
+} colourvalue_struct;
diff --git a/include/degree_struct.h b/include/degree_struct.h
new file mode 100644
--- /dev/null
+++ b/include/degree_struct.h
@@ -0,0 +1,3 @@
+typedef struct degree_struct {
+	float d;
+} degree_struct;
diff --git a/include/hg3dstruct.h b/include/hg3dstruct.h
new file mode 100644
--- /dev/null
+++ b/include/hg3dstruct.h
@@ -0,0 +1,4 @@
+typedef struct hg3dclass_struct {
+	void *ptr;
+	void *fptr;
+} hg3dclass_struct;
diff --git a/include/quaternion_struct.h b/include/quaternion_struct.h
new file mode 100644
--- /dev/null
+++ b/include/quaternion_struct.h
@@ -0,0 +1,6 @@
+typedef struct quaternion_struct {
+	float fw;
+	float fx;
+	float fy;
+	float fz;
+} quaternion_struct;
diff --git a/include/radian_struct.h b/include/radian_struct.h
new file mode 100644
--- /dev/null
+++ b/include/radian_struct.h
@@ -0,0 +1,3 @@
+typedef struct radian_struct {
+	float r;
+} radian_struct;
diff --git a/include/sharedptr_struct.h b/include/sharedptr_struct.h
new file mode 100644
--- /dev/null
+++ b/include/sharedptr_struct.h
@@ -0,0 +1,5 @@
+typedef struct sharedptr_struct {
+	void* pT;
+	void* pCount;
+	void* pFreeFunc;
+} sharedptr_struct;
diff --git a/include/vector2_struct.h b/include/vector2_struct.h
new file mode 100644
--- /dev/null
+++ b/include/vector2_struct.h
@@ -0,0 +1,4 @@
+typedef struct vector2_struct {
+	float x;
+	float y;
+} vector2_struct;
diff --git a/include/vector3_struct.h b/include/vector3_struct.h
new file mode 100644
--- /dev/null
+++ b/include/vector3_struct.h
@@ -0,0 +1,5 @@
+typedef struct vector3_struct {
+	float x;
+	float y;
+	float z;
+} vector3_struct;
diff --git a/include/vector4_struct.h b/include/vector4_struct.h
new file mode 100644
--- /dev/null
+++ b/include/vector4_struct.h
@@ -0,0 +1,6 @@
+typedef struct vector4_struct {
+	float x;
+	float y;
+	float z;
+	float w;
+} vector4_struct;
