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.0
+Version:             0.3.1
 Synopsis:            A Game Engine for the Haskell Programmer - CEGUI  Bindings
 Description:         
    HGamer3D is a game engine for developing 3D games in the programming 
@@ -16,7 +16,7 @@
 Cabal-Version:       >=1.4
 Homepage:            http://www.hgamer3d.org
 Category:            Game Engine, GUI
-Extra-source-files:  Setup.hs, include/SystemHG3D.h, include/quaternion_struct.h, include/WindowManagerHG3D.h, include/sharedptr_struct.h, include/radian_struct.h, include/vector2_struct.h, include/vector4_struct.h, include/hg3dstruct.h, include/vector3_struct.h, include/colorvalue_struct.h, include/degree_struct.h
+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
 
 Library
   Build-Depends:     base >= 3 && < 5,  HGamer3D-Data >= 0.3.0 && < 0.4.0
@@ -31,6 +31,6 @@
   Build-tools:       
   build-depends:     
   if os(windows)
-     extra-libraries:   hg3dcegui030
+     extra-libraries:   hg3dcegui031
   else
-     extra-libraries:   hg3dcegui030,CEGUIBase-0.7.7,CEGUIOgreRenderer-0.7.7
+     extra-libraries:   hg3dcegui031,CEGUIBase-0.7.7,CEGUIOgreRenderer-0.7.7
diff --git a/include/CEGUIDllDefines.h b/include/CEGUIDllDefines.h
new file mode 100644
--- /dev/null
+++ b/include/CEGUIDllDefines.h
@@ -0,0 +1,41 @@
+// (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.
+// 
+
+
+// CEGUIDllDefines.h
+
+#ifndef _HGamer3DCEGUI031_DLLDEFINES_H_
+#define _HGamer3DCEGUI031_DLLDEFINES_H_
+
+/* Cmake will define HGamer3DCEGUI031_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
+building a DLL on windows.
+*/
+
+// We are using the Visual Studio Compiler and building Shared libraries
+
+#if (defined (_WIN32)) && !(defined (__GNUC__)) 
+  #if defined(HGamer3DCEGUI031_EXPORTS)
+    #define  CEGUI_LIB_EXPORT __declspec(dllexport)
+  #else
+    #define  CEGUI_LIB_EXPORT __declspec(dllimport)
+  #endif /* HGamer3DCEGUI031_EXPORTS */
+#else /* defined (_WIN32) */
+ #define CEGUI_LIB_EXPORT
+#endif
+
+#endif /* _HGamer3DCEGUI031_DLLDEFINES_H_ */
diff --git a/include/ClassCheckbox.h b/include/ClassCheckbox.h
new file mode 100644
--- /dev/null
+++ b/include/ClassCheckbox.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.
+// 
+
+// ClassCheckbox.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassCheckbox
+#define _DEFINED_HG3D_ClassCheckbox
+
+#include "ClassPtr.h"
+
+
+// return true if the check-box is selected (has the checkmark) 
+void cegui_chkbx_isSelected(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// set whether the check-box is selected or not 
+void cegui_chkbx_setSelected(struct hg3dclass_struct * thisclass_c, int select_c);
+
+// Constructor for Checkbox
+void cegui_chkbx_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for Checkbox
+void cegui_chkbx_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassComboDropList.h b/include/ClassComboDropList.h
new file mode 100644
--- /dev/null
+++ b/include/ClassComboDropList.h
@@ -0,0 +1,51 @@
+// 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.
+// 
+
+// ClassComboDropList.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassComboDropList
+#define _DEFINED_HG3D_ClassComboDropList
+
+#include "ClassPtr.h"
+
+
+// Initialise the Window
+void cegui_cmbdrplst_initialiseComponents(struct hg3dclass_struct * thisclass_c);
+
+// Set whether the drop-list is 'armed' for selection. 
+void cegui_cmbdrplst_setArmed(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Return the 'armed' state of the ComboDropList
+void cegui_cmbdrplst_isArmed(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Set the mode of operation for the ComboDropList
+void cegui_cmbdrplst_setAutoArmEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// returns the mode of operation for the drop-list 
+void cegui_cmbdrplst_isAutoArmEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Constructor for ComboDropList
+void cegui_cmbdrplst_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for ComboDropList
+void cegui_cmbdrplst_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassCombobox.h b/include/ClassCombobox.h
new file mode 100644
--- /dev/null
+++ b/include/ClassCombobox.h
@@ -0,0 +1,175 @@
+// 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.
+// 
+
+// ClassCombobox.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassCombobox
+#define _DEFINED_HG3D_ClassCombobox
+
+#include "ClassPtr.h"
+#include "ClassEditbox.h"
+#include "ClassPushButton.h"
+#include "ClassComboDropList.h"
+#include "ClassListboxItem.h"
+
+
+// returns the mode of operation for the combo box. 
+void cegui_cmbbx_getSingleClickEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// returns true if the drop down list is visible. 
+void cegui_cmbbx_isDropDownListVisible(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return a pointer to the EditboxCombobox
+void cegui_cmbbx_getEditbox(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return a pointer to the PushButtonCombobox
+void cegui_cmbbx_getPushButton(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return a pointer to the ComboDropListCombobox
+void cegui_cmbbx_getDropList(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// return true if the Editbox
+void cegui_cmbbx_hasInputFocus(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return true if the Editbox
+void cegui_cmbbx_isReadOnly(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return true if the Editbox
+void cegui_cmbbx_isTextValid(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return the currently set validation string 
+void cegui_cmbbx_getValidationString(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// return the current position of the carat. 
+void cegui_cmbbx_getCaratIndex(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return the current selection start point. 
+void cegui_cmbbx_getSelectionStartIndex(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return the current selection end point. 
+void cegui_cmbbx_getSelectionEndIndex(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return the length of the current selection (in code points / characters). 
+void cegui_cmbbx_getSelectionLength(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return the maximum text length set for this Editbox
+void cegui_cmbbx_getMaxTextLength(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return number of items attached to the list box. 
+void cegui_cmbbx_getItemCount(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return a pointer to the currently selected item. 
+void cegui_cmbbx_getSelectedItem(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return the item at index position index
+void cegui_cmbbx_getListboxItemFromIndex(struct hg3dclass_struct * thisclass_c, int index_c, struct hg3dclass_struct * result_c);
+
+// Return the index of ListboxItemitem
+void cegui_cmbbx_getItemIndex(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c, int * result_c);
+
+// return whether list sorting is enabled 
+void cegui_cmbbx_isSortEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return whether the string at index position index
+void cegui_cmbbx_isItemSelected(struct hg3dclass_struct * thisclass_c, int index_c, int * result_c);
+
+// Search the list for an item with the specified text. 
+void cegui_cmbbx_findItemWithText(struct hg3dclass_struct * thisclass_c, char * text_c, struct hg3dclass_struct * start_item_c, struct hg3dclass_struct * result_c);
+
+// Return whether the specified ListboxItem
+void cegui_cmbbx_isListboxItemInList(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c, int * result_c);
+
+// Return whether the vertical scroll bar is always shown. 
+void cegui_cmbbx_isVertScrollbarAlwaysShown(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether the horizontal scroll bar is always shown. 
+void cegui_cmbbx_isHorzScrollbarAlwaysShown(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Initialise the Window
+void cegui_cmbbx_initialiseComponents(struct hg3dclass_struct * thisclass_c);
+
+// Show the drop-down list. 
+void cegui_cmbbx_showDropList(struct hg3dclass_struct * thisclass_c);
+
+// Hide the drop-down list. 
+void cegui_cmbbx_hideDropList(struct hg3dclass_struct * thisclass_c);
+
+// Set the mode of operation for the combo box. 
+void cegui_cmbbx_setSingleClickEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Specify whether the Editbox
+void cegui_cmbbx_setReadOnly(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set the text validation string. 
+void cegui_cmbbx_setValidationString(struct hg3dclass_struct * thisclass_c, char * validation_string_c);
+
+// Set the current position of the carat. 
+void cegui_cmbbx_setCaratIndex(struct hg3dclass_struct * thisclass_c, int carat_pos_c);
+
+// Define the current selection for the Editbox
+void cegui_cmbbx_setSelection(struct hg3dclass_struct * thisclass_c, int start_pos_c, int end_pos_c);
+
+// set the maximum text length for this Editbox
+void cegui_cmbbx_setMaxTextLength(struct hg3dclass_struct * thisclass_c, int max_len_c);
+
+// Activate the edit box component of the Combobox
+void cegui_cmbbx_activateEditbox(struct hg3dclass_struct * thisclass_c);
+
+// Remove all items from the list. 
+void cegui_cmbbx_resetList(struct hg3dclass_struct * thisclass_c);
+
+// Add the given ListboxItem
+void cegui_cmbbx_addItem(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c);
+
+// Insert an item into the list box after a specified item already in the list. 
+void cegui_cmbbx_insertItem(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c, struct hg3dclass_struct * position_c);
+
+// Removes the given item from the list box. 
+void cegui_cmbbx_removeItem(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c);
+
+// Clear the selected state for all items. 
+void cegui_cmbbx_clearAllSelections(struct hg3dclass_struct * thisclass_c);
+
+// Set whether the list should be sorted. 
+void cegui_cmbbx_setSortingEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether the vertical scroll bar should always be shown. 
+void cegui_cmbbx_setShowVertScrollbar(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether the horizontal scroll bar should always be shown. 
+void cegui_cmbbx_setShowHorzScrollbar(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set the select state of an attached ListboxItem
+void cegui_cmbbx_setItemSelectState(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c, int state_c);
+
+// Set the select state of an attached ListboxItem
+void cegui_cmbbx_setItemSelectState2(struct hg3dclass_struct * thisclass_c, int item_index_c, int state_c);
+
+// Causes the list box to update it's internal state after changes have been made to one or more attached ListboxItem
+void cegui_cmbbx_handleUpdatedListItemData(struct hg3dclass_struct * thisclass_c);
+
+// Constructor for Combobox
+void cegui_cmbbx_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for Combobox
+void cegui_cmbbx_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassDefaultLogger.h b/include/ClassDefaultLogger.h
new file mode 100644
--- /dev/null
+++ b/include/ClassDefaultLogger.h
@@ -0,0 +1,43 @@
+// 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.
+// 
+
+// ClassDefaultLogger.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassDefaultLogger
+#define _DEFINED_HG3D_ClassDefaultLogger
+
+#include "ClassPtr.h"
+#include "EnumLoggingLevel.h"
+
+
+// Constructor for DefaultLogger
+void cegui_dfltlgr_construct(struct hg3dclass_struct * result_c);
+
+// Destructor for DefaultLogger
+void cegui_dfltlgr_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Add an event to the log. 
+void cegui_dfltlgr_logEvent(struct hg3dclass_struct * thisclass_c, char * message_c, enum EnumLoggingLevel level_c);
+
+// Set the name of the log file where all subsequent log entries should be written. 
+void cegui_dfltlgr_setLogFilename(struct hg3dclass_struct * thisclass_c, char * filename_c, int append_c);
+
+#endif 
diff --git a/include/ClassDefaultResourceProvider.h b/include/ClassDefaultResourceProvider.h
new file mode 100644
--- /dev/null
+++ b/include/ClassDefaultResourceProvider.h
@@ -0,0 +1,45 @@
+// 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.
+// 
+
+// ClassDefaultResourceProvider.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassDefaultResourceProvider
+#define _DEFINED_HG3D_ClassDefaultResourceProvider
+
+#include "ClassPtr.h"
+
+
+// 
+void cegui_drpr_construct(struct hg3dclass_struct * result_c);
+
+// 
+void cegui_drpr_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Set the directory associated with a given resource group identifier. 
+void cegui_drpr_setResourceGroupDirectory(struct hg3dclass_struct * thisclass_c, char * resourceGroup_c, char * directory_c);
+
+// Return the directory associated with the specified resource group identifier. 
+void cegui_drpr_getResourceGroupDirectory(struct hg3dclass_struct * thisclass_c, char * resourceGroup_c, char * result_c);
+
+// clears any currently set directory for the specified resource group identifier. 
+void cegui_drpr_clearResourceGroupDirectory(struct hg3dclass_struct * thisclass_c, char * resourceGroup_c);
+
+#endif 
diff --git a/include/ClassDragContainer.h b/include/ClassDragContainer.h
new file mode 100644
--- /dev/null
+++ b/include/ClassDragContainer.h
@@ -0,0 +1,79 @@
+// 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.
+// 
+
+// ClassDragContainer.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassDragContainer
+#define _DEFINED_HG3D_ClassDragContainer
+
+#include "ClassPtr.h"
+#include "ClassWindow.h"
+
+
+// Constructor for DragContainer
+void cegui_drgcnt_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for DragContainer
+void cegui_drgcnt_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Return whether dragging is currently enabled for this DragContainer
+void cegui_drgcnt_isDraggingEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Set whether dragging is currently enabled for this DragContainer
+void cegui_drgcnt_setDraggingEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Return whether the DragContainer
+void cegui_drgcnt_isBeingDragged(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return the current drag threshold in pixels. 
+void cegui_drgcnt_getPixelDragThreshold(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Set the current drag threshold in pixels. 
+void cegui_drgcnt_setPixelDragThreshold(struct hg3dclass_struct * thisclass_c, float pixels_c);
+
+// Return the alpha value that will be set on the DragContainer
+void cegui_drgcnt_getDragAlpha(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Set the alpha value to be set on the DragContainer
+void cegui_drgcnt_setDragAlpha(struct hg3dclass_struct * thisclass_c, float alpha_c);
+
+// Set the Image to be used for the mouse cursor when a drag operation is in progress. 
+void cegui_drgcnt_setDragCursorImage3(struct hg3dclass_struct * thisclass_c, char * imageset_c, char * image_c);
+
+// Return the WindowDragContainer
+void cegui_drgcnt_getCurrentDropTarget(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return whether sticky mode is enable or disabled. 
+void cegui_drgcnt_isStickyModeEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Enable or disable sticky mode. 
+void cegui_drgcnt_setStickyModeEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Immediately pick up the DragContainer
+void cegui_drgcnt_pickUp(struct hg3dclass_struct * thisclass_c, const int force_sticky_c, int * 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);
+
+// Return 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_isUsingFixedDragOffset(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+#endif 
diff --git a/include/ClassEditbox.h b/include/ClassEditbox.h
new file mode 100644
--- /dev/null
+++ b/include/ClassEditbox.h
@@ -0,0 +1,90 @@
+// 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.
+// 
+
+// ClassEditbox.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassEditbox
+#define _DEFINED_HG3D_ClassEditbox
+
+#include "ClassPtr.h"
+
+
+// return true if the Editbox
+void cegui_edtbx_hasInputFocus(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return true if the Editbox
+void cegui_edtbx_isReadOnly(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return true if the text for the Editbox
+void cegui_edtbx_isTextMasked(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return true if the Editbox
+void cegui_edtbx_isTextValid(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return the currently set validation string 
+void cegui_edtbx_getValidationString(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// return the current position of the carat. 
+void cegui_edtbx_getCaratIndex(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return the current selection start point. 
+void cegui_edtbx_getSelectionStartIndex(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return the current selection end point. 
+void cegui_edtbx_getSelectionEndIndex(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return the length of the current selection (in code points / characters). 
+void cegui_edtbx_getSelectionLength(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return the utf32 code point used when rendering masked text. 
+void cegui_edtbx_getMaskCodePoint(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return the maximum text length set for this Editbox
+void cegui_edtbx_getMaxTextLength(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Specify whether the Editbox
+void cegui_edtbx_setReadOnly(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Specify whether the text for the Editbox
+void cegui_edtbx_setTextMasked(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set the text validation string. 
+void cegui_edtbx_setValidationString(struct hg3dclass_struct * thisclass_c, char * validation_string_c);
+
+// Set the current position of the carat. 
+void cegui_edtbx_setCaratIndex(struct hg3dclass_struct * thisclass_c, int carat_pos_c);
+
+// Define the current selection for the Editbox
+void cegui_edtbx_setSelection(struct hg3dclass_struct * thisclass_c, int start_pos_c, int end_pos_c);
+
+// set the utf32 code point used when rendering masked text. 
+void cegui_edtbx_setMaskCodePoint(struct hg3dclass_struct * thisclass_c, int code_point_c);
+
+// set the maximum text length for this Editbox
+void cegui_edtbx_setMaxTextLength(struct hg3dclass_struct * thisclass_c, int max_len_c);
+
+// Constructor for Editbox
+void cegui_edtbx_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for Editbox
+void cegui_edtbx_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassEventArgs.h b/include/ClassEventArgs.h
new file mode 100644
--- /dev/null
+++ b/include/ClassEventArgs.h
@@ -0,0 +1,36 @@
+// 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.
+// 
+
+// ClassEventArgs.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassEventArgs
+#define _DEFINED_HG3D_ClassEventArgs
+
+#include "ClassPtr.h"
+
+
+// 
+void cegui_evntargs_construct(struct hg3dclass_struct * result_c);
+
+// 
+void cegui_evntargs_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassEventSet.h b/include/ClassEventSet.h
new file mode 100644
--- /dev/null
+++ b/include/ClassEventSet.h
@@ -0,0 +1,58 @@
+// 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.
+// 
+
+// ClassEventSet.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassEventSet
+#define _DEFINED_HG3D_ClassEventSet
+
+#include "ClassPtr.h"
+#include "ClassEventArgs.h"
+
+
+// Constructor for EventSet
+void cegui_evtst_construct(struct hg3dclass_struct * result_c);
+
+// Destructor for EventSet
+void cegui_evtst_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Add a new EventEventSet
+void cegui_evtst_addEvent(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// Removes the Event
+void cegui_evtst_removeEvent(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// Remove all EventEventSet
+void cegui_evtst_removeAllEvents(struct hg3dclass_struct * thisclass_c);
+
+// Checks to see if an EventEventSet
+void cegui_evtst_isEventPresent(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// Fires the named event passing the given EventArgs
+void cegui_evtst_fireEvent(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * args_c, char * eventNamespace_c);
+
+// Return whether the EventSet
+void cegui_evtst_isMuted(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Set the mute state for this EventSet
+void cegui_evtst_setMutedState(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+#endif 
diff --git a/include/ClassFont.h b/include/ClassFont.h
new file mode 100644
--- /dev/null
+++ b/include/ClassFont.h
@@ -0,0 +1,72 @@
+// 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.
+// 
+
+// ClassFont.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassFont
+#define _DEFINED_HG3D_ClassFont
+
+#include "ClassPtr.h"
+
+
+// Destructor. 
+void cegui_fnt_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Return the string holding the font name. 
+void cegui_fnt_getName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// Return the type of the font. 
+void cegui_fnt_getTypeName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// Return whether this Font
+void cegui_fnt_isCodepointAvailable(struct hg3dclass_struct * thisclass_c, int cp_c, int * result_c);
+
+// Enable or disable auto-scaling for this Font
+void cegui_fnt_setAutoScaled(struct hg3dclass_struct * thisclass_c, const int auto_scaled_c);
+
+// Return whether this Font
+void cegui_fnt_isAutoScaled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return the pixel line spacing value for. 
+void cegui_fnt_getLineSpacing(struct hg3dclass_struct * thisclass_c, float y_scale_c, float * result_c);
+
+// return the exact pixel height of the font. 
+void cegui_fnt_getFontHeight(struct hg3dclass_struct * thisclass_c, float y_scale_c, float * result_c);
+
+// Return the number of pixels from the top of the highest glyph to the baseline. 
+void cegui_fnt_getBaseline(struct hg3dclass_struct * thisclass_c, float y_scale_c, float * result_c);
+
+// Return the pixel width of the specified text if rendered with this Font
+void cegui_fnt_getTextExtent(struct hg3dclass_struct * thisclass_c, char * text_c, float x_scale_c, float * result_c);
+
+// Return the index of the closest text character in String textpixel
+void cegui_fnt_getCharAtPixel(struct hg3dclass_struct * thisclass_c, char * text_c, float pixel_c, float x_scale_c, int * result_c);
+
+// Return the index of the closest text character in String textstart_charpixel
+void cegui_fnt_getCharAtPixel2(struct hg3dclass_struct * thisclass_c, char * text_c, int start_char_c, float pixel_c, float x_scale_c, int * result_c);
+
+// Sets the default resource group to be used when loading font data. 
+void cegui_fnt_setDefaultResourceGroup(char * resourceGroup_c);
+
+// Returns the default resource group currently set for Fonts. 
+void cegui_fnt_getDefaultResourceGroup(char * result_c);
+
+#endif 
diff --git a/include/ClassFontManager.h b/include/ClassFontManager.h
new file mode 100644
--- /dev/null
+++ b/include/ClassFontManager.h
@@ -0,0 +1,36 @@
+// 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.
+// 
+
+// ClassFontManager.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassFontManager
+#define _DEFINED_HG3D_ClassFontManager
+
+#include "ClassPtr.h"
+
+
+// Constructor. 
+void cegui_fntmgr_construct(struct hg3dclass_struct * result_c);
+
+// Destructor. 
+void cegui_fntmgr_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassFrameWindow.h b/include/ClassFrameWindow.h
new file mode 100644
--- /dev/null
+++ b/include/ClassFrameWindow.h
@@ -0,0 +1,103 @@
+// 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.
+// 
+
+// ClassFrameWindow.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassFrameWindow
+#define _DEFINED_HG3D_ClassFrameWindow
+
+#include "ClassPtr.h"
+#include "ClassPushButton.h"
+
+
+// Initialises the Window
+void cegui_frmwndw_initialiseComponents(struct hg3dclass_struct * thisclass_c);
+
+// Return whether this window is sizable. Note that this requires that the window have an enabled frame and that sizing itself is enabled. 
+void cegui_frmwndw_isSizingEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether the frame for this window is enabled. 
+void cegui_frmwndw_isFrameEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether the title bar for this window is enabled. 
+void cegui_frmwndw_isTitleBarEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether this close button for this window is enabled. 
+void cegui_frmwndw_isCloseButtonEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether roll up (a.k.a shading) is enabled for this window. 
+void cegui_frmwndw_isRollupEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether the window is currently rolled up (a.k.a shaded). 
+void cegui_frmwndw_isRolledup(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return the thickness of the sizing border. 
+void cegui_frmwndw_getSizingBorderThickness(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Enables or disables sizing for this window. 
+void cegui_frmwndw_setSizingEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Enables or disables the frame for this window. 
+void cegui_frmwndw_setFrameEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Enables or disables the title bar for the frame window. 
+void cegui_frmwndw_setTitleBarEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Enables or disables the close button for the frame window. 
+void cegui_frmwndw_setCloseButtonEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Enables or disables roll-up (shading) for this window. 
+void cegui_frmwndw_setRollupEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Toggles the state of the window between rolled-up (shaded) and normal sizes. This requires roll-up to be enabled. 
+void cegui_frmwndw_toggleRollup(struct hg3dclass_struct * thisclass_c);
+
+// Set the size of the sizing border for this window. 
+void cegui_frmwndw_setSizingBorderThickness(struct hg3dclass_struct * thisclass_c, float pixels_c);
+
+// Return whether this FrameWindow
+void cegui_frmwndw_isDragMovingEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Set whether this FrameWindow
+void cegui_frmwndw_setDragMovingEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set the image to be used for the north-south sizing mouse cursor. 
+void cegui_frmwndw_setNSSizingCursorImage2(struct hg3dclass_struct * thisclass_c, char * imageset_c, char * image_c);
+
+// Set the image to be used for the east-west sizing mouse cursor. 
+void cegui_frmwndw_setEWSizingCursorImage2(struct hg3dclass_struct * thisclass_c, char * imageset_c, char * image_c);
+
+// Set the image to be used for the northwest-southeast sizing mouse cursor. 
+void cegui_frmwndw_setNWSESizingCursorImage2(struct hg3dclass_struct * thisclass_c, char * imageset_c, char * image_c);
+
+// Set the image to be used for the northeast-southwest sizing mouse cursor. 
+void cegui_frmwndw_setNESWSizingCursorImage2(struct hg3dclass_struct * thisclass_c, char * imageset_c, char * image_c);
+
+// Return a pointer to the close button component widget for this FrameWindow
+void cegui_frmwndw_getCloseButton(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Constructor for FrameWindow
+void cegui_frmwndw_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for FramwWindow objects. 
+void cegui_frmwndw_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassHG3DEventController.h b/include/ClassHG3DEventController.h
new file mode 100644
--- /dev/null
+++ b/include/ClassHG3DEventController.h
@@ -0,0 +1,46 @@
+// 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.
+// 
+
+// ClassHG3DEventController.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassHG3DEventController
+#define _DEFINED_HG3D_ClassHG3DEventController
+
+#include "ClassPtr.h"
+#include "ClassWindow.h"
+
+
+// 
+void construct(struct hg3dclass_struct * result_c);
+
+// 
+void destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void pushEvent(struct hg3dclass_struct * thisclass_c, char * name_c, char * sender_c, struct hg3dclass_struct * window_c);
+
+// 
+void eventsAvailable(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void popEvent(struct hg3dclass_struct * thisclass_c, char * name_c, char * sender_c, struct hg3dclass_struct * window_c);
+
+#endif 
diff --git a/include/ClassHG3DEventStaticFunctions.h b/include/ClassHG3DEventStaticFunctions.h
new file mode 100644
--- /dev/null
+++ b/include/ClassHG3DEventStaticFunctions.h
@@ -0,0 +1,34 @@
+// 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.
+// 
+
+// ClassHG3DEventStaticFunctions.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassHG3DEventStaticFunctions
+#define _DEFINED_HG3D_ClassHG3DEventStaticFunctions
+
+#include "ClassPtr.h"
+#include "ClassEventSet.h"
+
+
+// 
+void cegui_hg3devtsf_subscribeScriptedEvent(struct hg3dclass_struct * window_c, char * name_c, char * subscriber_name_c);
+
+#endif 
diff --git a/include/ClassHG3DListboxStaticFunctions.h b/include/ClassHG3DListboxStaticFunctions.h
new file mode 100644
--- /dev/null
+++ b/include/ClassHG3DListboxStaticFunctions.h
@@ -0,0 +1,38 @@
+// 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.
+// 
+
+// ClassHG3DListboxStaticFunctions.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassHG3DListboxStaticFunctions
+#define _DEFINED_HG3D_ClassHG3DListboxStaticFunctions
+
+#include "ClassPtr.h"
+#include "ClassListbox.h"
+#include "ClassCombobox.h"
+
+
+// 
+void cegui_hg3dlstbxsf_listboxAddItem(struct hg3dclass_struct * listbox_c, char * itemString_c);
+
+// 
+void cegui_hg3dlstbxsf_comboboxAddItem(struct hg3dclass_struct * combobox_c, char * itemString_c);
+
+#endif 
diff --git a/include/ClassHG3DWindowStaticFunctions.h b/include/ClassHG3DWindowStaticFunctions.h
new file mode 100644
--- /dev/null
+++ b/include/ClassHG3DWindowStaticFunctions.h
@@ -0,0 +1,75 @@
+// 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.
+// 
+
+// ClassHG3DWindowStaticFunctions.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassHG3DWindowStaticFunctions
+#define _DEFINED_HG3D_ClassHG3DWindowStaticFunctions
+
+#include "ClassPtr.h"
+#include "ClassPushButton.h"
+#include "ClassWindow.h"
+#include "ClassListbox.h"
+#include "ClassCombobox.h"
+#include "ClassRadioButton.h"
+#include "ClassEditbox.h"
+#include "ClassMultiLineEditbox.h"
+#include "ClassFrameWindow.h"
+#include "ClassProgressBar.h"
+#include "ClassSlider.h"
+#include "ClassSpinner.h"
+#include "ClassMultiColumnList.h"
+
+
+// 
+void cegui_hg3dwsfs_castWindowToPushButton(struct hg3dclass_struct * window_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_hg3dwsfs_castWindowToListbox(struct hg3dclass_struct * window_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_hg3dwsfs_castWindowToCombobox(struct hg3dclass_struct * window_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_hg3dwsfs_castWindowToRadioButton(struct hg3dclass_struct * window_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_hg3dwsfs_castWindowToEditbox(struct hg3dclass_struct * window_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_hg3dwsfs_castWindowToMultiLineEditbox(struct hg3dclass_struct * window_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_hg3dwsfs_castWindowToFrameWindow(struct hg3dclass_struct * window_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_hg3dwsfs_castWindowToProgressBar(struct hg3dclass_struct * window_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_hg3dwsfs_castWindowToSlider(struct hg3dclass_struct * window_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_hg3dwsfs_castWindowToSpinner(struct hg3dclass_struct * window_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_hg3dwsfs_castWindowToMultiColumnList(struct hg3dclass_struct * window_c, struct hg3dclass_struct * result_c);
+
+#endif 
diff --git a/include/ClassImageCodec.h b/include/ClassImageCodec.h
new file mode 100644
--- /dev/null
+++ b/include/ClassImageCodec.h
@@ -0,0 +1,39 @@
+// 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.
+// 
+
+// ClassImageCodec.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassImageCodec
+#define _DEFINED_HG3D_ClassImageCodec
+
+#include "ClassPtr.h"
+
+
+// Destructor. 
+void cegui_imgcdc_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Return the name of the image codec object. 
+void cegui_imgcdc_getIdentifierString(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// Return the list of image file format supported. 
+void cegui_imgcdc_getSupportedFormat(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+#endif 
diff --git a/include/ClassImageset.h b/include/ClassImageset.h
new file mode 100644
--- /dev/null
+++ b/include/ClassImageset.h
@@ -0,0 +1,75 @@
+// 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.
+// 
+
+// ClassImageset.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassImageset
+#define _DEFINED_HG3D_ClassImageset
+
+#include "ClassPtr.h"
+
+
+// Construct a new Imageset
+void cegui_imgst_construct(char * name_c, char * filename_c, char * resourceGroup_c, struct hg3dclass_struct * result_c);
+
+// Destroys Imageset
+void cegui_imgst_destruct(struct hg3dclass_struct * thisclass_c);
+
+// return String object holding the name of the Imageset
+void cegui_imgst_getName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// return number of images defined for this Imageset
+void cegui_imgst_getImageCount(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// return true if an Image with the specified name exists. 
+void cegui_imgst_isImageDefined(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// remove the definition for the Image with the specified name. If no such Image exists, nothing happens. 
+void cegui_imgst_undefineImage(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// Removes the definitions for all Image objects currently defined in the Imageset
+void cegui_imgst_undefineAllImages(struct hg3dclass_struct * thisclass_c);
+
+// return the width of the named image. 
+void cegui_imgst_getImageWidth(struct hg3dclass_struct * thisclass_c, char * name_c, float * result_c);
+
+// return the height of the named image. 
+void cegui_imgst_getImageHeight(struct hg3dclass_struct * thisclass_c, char * name_c, float * result_c);
+
+// return the x rendering offset for the named image. 
+void cegui_imgst_getImageOffsetX(struct hg3dclass_struct * thisclass_c, char * name_c, float * result_c);
+
+// return the y rendering offset for the named image. 
+void cegui_imgst_getImageOffsetY(struct hg3dclass_struct * thisclass_c, char * name_c, float * result_c);
+
+// Return whether this Imageset
+void cegui_imgst_isAutoScaled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Enable or disable auto-scaling for this Imageset
+void cegui_imgst_setAutoScalingEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Sets the default resource group to be used when loading imageset data. 
+void cegui_imgst_setDefaultResourceGroup(char * resourceGroup_c);
+
+// Returns the default resource group currently set for Imagesets. 
+void cegui_imgst_getDefaultResourceGroup(char * result_c);
+
+#endif 
diff --git a/include/ClassItemEntry.h b/include/ClassItemEntry.h
new file mode 100644
--- /dev/null
+++ b/include/ClassItemEntry.h
@@ -0,0 +1,57 @@
+// 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.
+// 
+
+// ClassItemEntry.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassItemEntry
+#define _DEFINED_HG3D_ClassItemEntry
+
+#include "ClassPtr.h"
+
+
+// Returns whether this item is selected or not. 
+void cegui_itmentr_isSelected(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Returns whether this item is selectable or not. 
+void cegui_itmentr_isSelectable(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Sets the selection state of this item (on/off). If this item is not selectable this function does nothing. 
+void cegui_itmentr_setSelected(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Selects the item. 
+void cegui_itmentr_select(struct hg3dclass_struct * thisclass_c);
+
+// Deselects the item. 
+void cegui_itmentr_deselect(struct hg3dclass_struct * thisclass_c);
+
+// Set the selection state for this ListItem. Internal version. Should NOT be used by client code. 
+void cegui_itmentr_setSelected_impl(struct hg3dclass_struct * thisclass_c, int state_c, int notify_c);
+
+// Sets whether this item will be selectable. 
+void cegui_itmentr_setSelectable(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Constructor for ItemEntry
+void cegui_itmentr_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for ItemEntry
+void cegui_itmentr_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassItemListbox.h b/include/ClassItemListbox.h
new file mode 100644
--- /dev/null
+++ b/include/ClassItemListbox.h
@@ -0,0 +1,85 @@
+// 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.
+// 
+
+// ClassItemListbox.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassItemListbox
+#define _DEFINED_HG3D_ClassItemListbox
+
+#include "ClassPtr.h"
+#include "ClassItemEntry.h"
+
+
+// Returns the number of selected items in this ItemListbox
+void cegui_itmlstbx_getSelectedCount(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Returns a pointer to the last selected item. 
+void cegui_itmlstbx_getLastSelectedItem(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Returns a pointer to the first selected item. 
+void cegui_itmlstbx_getFirstSelectedItem(struct hg3dclass_struct * thisclass_c, int start_index_c, struct hg3dclass_struct * result_c);
+
+// Returns a pointer to the next seleced item relative to a previous call to getFirstSelectedItem or getNextSelectedItem. 
+void cegui_itmlstbx_getNextSelectedItem(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Returns a pointer to the next selected item after the item 'start_item' given. 
+void cegui_itmlstbx_getNextSelectedItemAfter(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * start_item_c, struct hg3dclass_struct * result_c);
+
+// Returns 'true' if multiple selections are allowed. 'false' if not. 
+void cegui_itmlstbx_isMultiSelectEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Returns 'true' if the item at the given index is selectable and currently selected. 
+void cegui_itmlstbx_isItemSelected(struct hg3dclass_struct * thisclass_c, int index_c, int * result_c);
+
+// 
+void cegui_itmlstbx_initialiseComponents(struct hg3dclass_struct * thisclass_c);
+
+// Set whether or not multiple selections should be allowed. 
+void cegui_itmlstbx_setMultiSelectEnabled(struct hg3dclass_struct * thisclass_c, int state_c);
+
+// Clears all selections. 
+void cegui_itmlstbx_clearAllSelections(struct hg3dclass_struct * thisclass_c);
+
+// Select a range of items. 
+void cegui_itmlstbx_selectRange(struct hg3dclass_struct * thisclass_c, int a_c, int z_c);
+
+// Select all items. Does nothing if multiselect is disabled. 
+void cegui_itmlstbx_selectAllItems(struct hg3dclass_struct * thisclass_c);
+
+// Constructor for the ItemListbox
+void cegui_itmlstbx_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for the ItemListbox
+void cegui_itmlstbx_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Setup size and position for the item widgets attached to this ItemListbox
+void cegui_itmlstbx_layoutItemWidgets(struct hg3dclass_struct * thisclass_c);
+
+// Return whether this window was inherited from the given class name at some point in the inheritance hierarchy. 
+void cegui_itmlstbx_testClassName_impl(struct hg3dclass_struct * thisclass_c, char * class_name_c, int * result_c);
+
+// Notify this ItemListbox
+void cegui_itmlstbx_notifyItemClicked(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * li_c);
+
+// Notify this ItemListbox
+void cegui_itmlstbx_notifyItemSelectState(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * li_c, int state_c);
+
+#endif 
diff --git a/include/ClassListHeader.h b/include/ClassListHeader.h
new file mode 100644
--- /dev/null
+++ b/include/ClassListHeader.h
@@ -0,0 +1,128 @@
+// 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.
+// 
+
+// ClassListHeader.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassListHeader
+#define _DEFINED_HG3D_ClassListHeader
+
+#include "ClassPtr.h"
+#include "ClassListHeaderSegment.h"
+#include "EnumSortDirection.h"
+
+
+// Return the number of columns or segments attached to the header. 
+void cegui_lsthdr_getColumnCount(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// Return the ListHeaderSegment
+void cegui_lsthdr_getSegmentFromColumn(struct hg3dclass_struct * thisclass_c, unsigned int column_c, struct hg3dclass_struct * result_c);
+
+// Return the ListHeaderSegment
+void cegui_lsthdr_getSegmentFromID(struct hg3dclass_struct * thisclass_c, unsigned int id_c, struct hg3dclass_struct * result_c);
+
+// Return the ListHeaderSegment
+void cegui_lsthdr_getSortSegment(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return the zero based column index of the specified segment. 
+void cegui_lsthdr_getColumnFromSegment(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * segment_c, unsigned int * result_c);
+
+// Return the zero based column index of the segment with the specified ID. 
+void cegui_lsthdr_getColumnFromID(struct hg3dclass_struct * thisclass_c, unsigned int id_c, unsigned int * result_c);
+
+// Return the zero based index of the current sort column. There must be at least one segment/column to successfully call this method. 
+void cegui_lsthdr_getSortColumn(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// Return the zero based column index of the segment with the specified text. 
+void cegui_lsthdr_getColumnWithText(struct hg3dclass_struct * thisclass_c, char * text_c, unsigned int * result_c);
+
+// Return the pixel offset to the given ListHeaderSegment
+void cegui_lsthdr_getPixelOffsetToSegment(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * segment_c, float * result_c);
+
+// Return the pixel offset to the ListHeaderSegment
+void cegui_lsthdr_getPixelOffsetToColumn(struct hg3dclass_struct * thisclass_c, unsigned int column_c, float * result_c);
+
+// Return the total pixel width of all attached segments. 
+void cegui_lsthdr_getTotalSegmentsPixelExtent(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Return the currently set sort direction. 
+void cegui_lsthdr_getSortDirection(struct hg3dclass_struct * thisclass_c, enum EnumSortDirection * result_c);
+
+// Return whether user manipulation of the sort column & direction are enabled. 
+void cegui_lsthdr_isSortingEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether the user may size column segments. 
+void cegui_lsthdr_isColumnSizingEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether the user may modify the order of the segments. 
+void cegui_lsthdr_isColumnDraggingEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return the current segment offset value. This value is used to implement scrolling of the header segments within the ListHeader
+void cegui_lsthdr_getSegmentOffset(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Set whether user manipulation of the sort column and direction is enabled. 
+void cegui_lsthdr_setSortingEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set the current sort direction. 
+void cegui_lsthdr_setSortDirection(struct hg3dclass_struct * thisclass_c, enum EnumSortDirection direction_c);
+
+// Set the column segment to be used as the sort column. 
+void cegui_lsthdr_setSortSegment(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * segment_c);
+
+// Set the column to be used as the sort column. 
+void cegui_lsthdr_setSortColumn(struct hg3dclass_struct * thisclass_c, unsigned int column_c);
+
+// Set the column to to be used for sorting via its ID code. 
+void cegui_lsthdr_setSortColumnFromID(struct hg3dclass_struct * thisclass_c, unsigned int id_c);
+
+// Set whether columns may be sized by the user. 
+void cegui_lsthdr_setColumnSizingEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// 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);
+
+// Removes a column segment from the ListHeader
+void cegui_lsthdr_removeColumn(struct hg3dclass_struct * thisclass_c, unsigned int column_c);
+
+// Remove the specified segment from the ListHeader
+void cegui_lsthdr_removeSegment(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * segment_c);
+
+// Moves a column segment into a new position. 
+void cegui_lsthdr_moveColumn(struct hg3dclass_struct * thisclass_c, unsigned int column_c, unsigned int position_c);
+
+// Move a column segment to a new position. 
+void cegui_lsthdr_moveColumn2(struct hg3dclass_struct * thisclass_c, unsigned int column_c, struct hg3dclass_struct * position_c);
+
+// Moves a segment into a new position. 
+void cegui_lsthdr_moveSegment(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * segment_c, unsigned int position_c);
+
+// Move a segment to a new position. 
+void cegui_lsthdr_moveSegment2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * segment_c, struct hg3dclass_struct * position_c);
+
+// 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);
+
+// Constructor for the list header base class. 
+void cegui_lsthdr_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for the list header base class. 
+void cegui_lsthdr_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassListHeaderSegment.h b/include/ClassListHeaderSegment.h
new file mode 100644
--- /dev/null
+++ b/include/ClassListHeaderSegment.h
@@ -0,0 +1,82 @@
+// 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.
+// 
+
+// ClassListHeaderSegment.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassListHeaderSegment
+#define _DEFINED_HG3D_ClassListHeaderSegment
+
+#include "ClassPtr.h"
+#include "EnumSortDirection.h"
+
+
+// Return whether this segment can be sized. 
+void cegui_lsthdrsgm_isSizingEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return the current sort direction set for this segment. 
+void cegui_lsthdrsgm_getSortDirection(struct hg3dclass_struct * thisclass_c, enum EnumSortDirection * result_c);
+
+// Return whether drag moving is enabled for this segment. 
+void cegui_lsthdrsgm_isDragMovingEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether the segment is clickable. 
+void cegui_lsthdrsgm_isClickable(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether the segment is currently in its hovering state. 
+void cegui_lsthdrsgm_isSegmentHovering(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether the segment is currently in its pushed state. 
+void cegui_lsthdrsgm_isSegmentPushed(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether the splitter is currently in its hovering state. 
+void cegui_lsthdrsgm_isSplitterHovering(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether the segment is currently being drag-moved. 
+void cegui_lsthdrsgm_isBeingDragMoved(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether the segment is currently being drag-moved. 
+void cegui_lsthdrsgm_isBeingDragSized(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Set whether this segment can be sized. 
+void cegui_lsthdrsgm_setSizingEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set the current sort direction set for this segment. 
+void cegui_lsthdrsgm_setSortDirection(struct hg3dclass_struct * thisclass_c, enum EnumSortDirection sort_dir_c);
+
+// Set whether drag moving is allowed for this segment. 
+void cegui_lsthdrsgm_setDragMovingEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether the segment is clickable. 
+void cegui_lsthdrsgm_setClickable(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// 
+void cegui_lsthdrsgm_setSizingCursorImage2(struct hg3dclass_struct * thisclass_c, char * imageset_c, char * image_c);
+
+// 
+void cegui_lsthdrsgm_setMovingCursorImage2(struct hg3dclass_struct * thisclass_c, char * imageset_c, char * image_c);
+
+// Constructor for list header segment base class. 
+void cegui_lsthdrsgm_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for list header segment base class. 
+void cegui_lsthdrsgm_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassListbox.h b/include/ClassListbox.h
new file mode 100644
--- /dev/null
+++ b/include/ClassListbox.h
@@ -0,0 +1,141 @@
+// 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.
+// 
+
+// ClassListbox.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassListbox
+#define _DEFINED_HG3D_ClassListbox
+
+#include "ClassPtr.h"
+#include "ClassListboxItem.h"
+#include "ClassScrollbar.h"
+
+
+// Return number of items attached to the list box. 
+void cegui_lstbx_getItemCount(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return the number of selected items in the list box. 
+void cegui_lstbx_getSelectedCount(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return a pointer to the first selected item. 
+void cegui_lstbx_getFirstSelectedItem(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return a pointer to the next selected item after item start_item
+void cegui_lstbx_getNextSelected(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * start_item_c, struct hg3dclass_struct * result_c);
+
+// Return the item at index position index
+void cegui_lstbx_getListboxItemFromIndex(struct hg3dclass_struct * thisclass_c, int index_c, struct hg3dclass_struct * result_c);
+
+// Return the index of ListboxItemitem
+void cegui_lstbx_getItemIndex(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c, int * result_c);
+
+// return whether list sorting is enabled 
+void cegui_lstbx_isSortEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return whether multi-select is enabled 
+void cegui_lstbx_isMultiselectEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void cegui_lstbx_isItemTooltipsEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return whether the string at index position index
+void cegui_lstbx_isItemSelected(struct hg3dclass_struct * thisclass_c, int index_c, int * result_c);
+
+// Search the list for an item with the specified text. 
+void cegui_lstbx_findItemWithText(struct hg3dclass_struct * thisclass_c, char * text_c, struct hg3dclass_struct * start_item_c, struct hg3dclass_struct * result_c);
+
+// Return whether the specified ListboxItem
+void cegui_lstbx_isListboxItemInList(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c, int * result_c);
+
+// Return whether the vertical scroll bar is always shown. 
+void cegui_lstbx_isVertScrollbarAlwaysShown(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether the horizontal scroll bar is always shown. 
+void cegui_lstbx_isHorzScrollbarAlwaysShown(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Initialise the Window
+void cegui_lstbx_initialiseComponents(struct hg3dclass_struct * thisclass_c);
+
+// Remove all items from the list. 
+void cegui_lstbx_resetList(struct hg3dclass_struct * thisclass_c);
+
+// 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
+
+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. 
+void cegui_lstbx_removeItem(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c);
+
+// Clear the selected state for all items. 
+void cegui_lstbx_clearAllSelections(struct hg3dclass_struct * thisclass_c);
+
+// Set whether the list should be sorted. 
+void cegui_lstbx_setSortingEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether the list should allow multiple selections or just a single selection. 
+void cegui_lstbx_setMultiselectEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether the vertical scroll bar should always be shown. 
+void cegui_lstbx_setShowVertScrollbar(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether the horizontal scroll bar should always be shown. 
+void cegui_lstbx_setShowHorzScrollbar(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// 
+void cegui_lstbx_setItemTooltipsEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set the select state of an attached ListboxItem
+void cegui_lstbx_setItemSelectState(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c, int state_c);
+
+// Set the select state of an attached ListboxItem
+void cegui_lstbx_setItemSelectState2(struct hg3dclass_struct * thisclass_c, int item_index_c, int state_c);
+
+// Causes the list box to update it's internal state after changes have been made to one or more attached ListboxItem
+void cegui_lstbx_handleUpdatedItemData(struct hg3dclass_struct * thisclass_c);
+
+// Ensure the item at the specified index is visible within the list box. 
+void cegui_lstbx_ensureItemIsVisible(struct hg3dclass_struct * thisclass_c, int item_index_c);
+
+// Ensure the item at the specified index is visible within the list box. 
+void cegui_lstbx_ensureItemIsVisible2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c);
+
+// Return a pointer to the vertical scrollbar component widget for this Listbox
+void cegui_lstbx_getVertScrollbar(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return a pointer to the horizontal scrollbar component widget for this Listbox
+void cegui_lstbx_getHorzScrollbar(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return the sum of all item heights. 
+void cegui_lstbx_getTotalItemsHeight(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Return the width of the widest item. 
+void cegui_lstbx_getWidestItemWidth(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Constructor for Listbox
+void cegui_lstbx_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for Listbox
+void cegui_lstbx_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassListboxItem.h b/include/ClassListboxItem.h
new file mode 100644
--- /dev/null
+++ b/include/ClassListboxItem.h
@@ -0,0 +1,82 @@
+// 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.
+// 
+
+// ClassListboxItem.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassListboxItem
+#define _DEFINED_HG3D_ClassListboxItem
+
+#include "ClassPtr.h"
+#include "ClassWindow.h"
+
+
+// base class destructor 
+void cegui_lstbxitm_destruct(struct hg3dclass_struct * thisclass_c);
+
+// return the text string set for this list box item. 
+void cegui_lstbxitm_getTooltipText(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// 
+void cegui_lstbxitm_getText(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// return text string with visual
+void cegui_lstbxitm_getTextVisual(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// Return the current ID assigned to this list box item. 
+void cegui_lstbxitm_getID(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// return whether this item is selected. 
+void cegui_lstbxitm_isSelected(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return whether this item is disabled. 
+void cegui_lstbxitm_isDisabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return whether this item will be automatically deleted when the list box it is attached to is destroyed, or when the item is removed from the list box. 
+void cegui_lstbxitm_isAutoDeleted(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Get the owner window for this ListboxItem
+void cegui_lstbxitm_getOwnerWindow(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// set the text string for this list box item. 
+void cegui_lstbxitm_setText(struct hg3dclass_struct * thisclass_c, char * text_c);
+
+// 
+void cegui_lstbxitm_setTooltipText(struct hg3dclass_struct * thisclass_c, char * text_c);
+
+// Set the ID assigned to this list box item. 
+void cegui_lstbxitm_setID(struct hg3dclass_struct * thisclass_c, unsigned int item_id_c);
+
+// set whether this item is selected. 
+void cegui_lstbxitm_setSelected(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// set whether this item is disabled. 
+void cegui_lstbxitm_setDisabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether this item will be automatically deleted when the list box it is attached to is destroyed, or when the item is removed from the list box. 
+void cegui_lstbxitm_setAutoDeleted(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set the owner window for this ListboxItem
+void cegui_lstbxitm_setOwnerWindow(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * owner_c);
+
+// Set the selection highlighting brush image. 
+void cegui_lstbxitm_setSelectionBrushImage2(struct hg3dclass_struct * thisclass_c, char * imageset_c, char * image_c);
+
+#endif 
diff --git a/include/ClassListboxTextItem.h b/include/ClassListboxTextItem.h
new file mode 100644
--- /dev/null
+++ b/include/ClassListboxTextItem.h
@@ -0,0 +1,52 @@
+// 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.
+// 
+
+// ClassListboxTextItem.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassListboxTextItem
+#define _DEFINED_HG3D_ClassListboxTextItem
+
+#include "ClassPtr.h"
+#include "ClassFont.h"
+
+
+// base class destructor 
+void cegui_lstbxti_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Return a pointer to the font being used by this ListboxTextItem
+void cegui_lstbxti_getFont(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Set the font to be used by this ListboxTextItem
+void cegui_lstbxti_setFont(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * font_c);
+
+// Set the font to be used by this ListboxTextItem
+void cegui_lstbxti_setFont2(struct hg3dclass_struct * thisclass_c, char * font_name_c);
+
+// Set whether the the ListboxTextItem
+void cegui_lstbxti_setTextParsingEnabled(struct hg3dclass_struct * thisclass_c, const int enable_c);
+
+// return whether text parsing is enabled for this ListboxTextItem
+void cegui_lstbxti_isTextParsingEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// set the text string for this list box item. 
+void cegui_lstbxti_setText(struct hg3dclass_struct * thisclass_c, char * text_c);
+
+#endif 
diff --git a/include/ClassLogger.h b/include/ClassLogger.h
new file mode 100644
--- /dev/null
+++ b/include/ClassLogger.h
@@ -0,0 +1,46 @@
+// 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.
+// 
+
+// ClassLogger.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassLogger
+#define _DEFINED_HG3D_ClassLogger
+
+#include "ClassPtr.h"
+#include "EnumLoggingLevel.h"
+
+
+// Destructor for Logger
+void cegui_lggr_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Set the level of logging information that will get out to the log file. 
+void cegui_lggr_setLoggingLevel(struct hg3dclass_struct * thisclass_c, enum EnumLoggingLevel level_c);
+
+// return the current logging level setting 
+void cegui_lggr_getLoggingLevel(struct hg3dclass_struct * thisclass_c, enum EnumLoggingLevel * result_c);
+
+// Add an event to the log. 
+void cegui_lggr_logEvent(struct hg3dclass_struct * thisclass_c, char * message_c, enum EnumLoggingLevel level_c);
+
+// Set the name of the log file where all subsequent log entries should be written. The interpretation of file name may differ depending on the concrete logger implementation. 
+void cegui_lggr_setLogFilename(struct hg3dclass_struct * thisclass_c, char * filename_c, int append_c);
+
+#endif 
diff --git a/include/ClassMenuBase.h b/include/ClassMenuBase.h
new file mode 100644
--- /dev/null
+++ b/include/ClassMenuBase.h
@@ -0,0 +1,58 @@
+// 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.
+// 
+
+// ClassMenuBase.h
+
+// abstrakte Klasse!
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassMenuBase
+#define _DEFINED_HG3D_ClassMenuBase
+
+#include "ClassPtr.h"
+#include "ClassMenuItem.h"
+
+
+// Get the item spacing for this menu. 
+void cegui_mnbs_getItemSpacing(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Return whether this menu allows multiple popup menus to open at the same time. 
+void cegui_mnbs_isMultiplePopupsAllowed(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether this menu should close all its open child popups, when it gets hidden. 
+void cegui_mnbs_getAutoCloseNestedPopups(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Get currently opened MenuItem
+void cegui_mnbs_getPopupMenuItem(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Set the item spacing for this menu. 
+void cegui_mnbs_setItemSpacing(struct hg3dclass_struct * thisclass_c, float spacing_c);
+
+// Change the currently open MenuItem
+void cegui_mnbs_changePopupMenuItem(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c);
+
+// Set whether this menu allows multiple popup menus to be opened simultaneously. 
+void cegui_mnbs_setAllowMultiplePopups(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether the menu should close all its open child popups, when it gets hidden. 
+void cegui_mnbs_setAutoCloseNestedPopups(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// tells the current popup that it should start its closing timer. 
+void cegui_mnbs_setPopupMenuItemClosing(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassMenuItem.h b/include/ClassMenuItem.h
new file mode 100644
--- /dev/null
+++ b/include/ClassMenuItem.h
@@ -0,0 +1,72 @@
+// 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.
+// 
+
+// ClassMenuItem.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassMenuItem
+#define _DEFINED_HG3D_ClassMenuItem
+
+#include "ClassPtr.h"
+
+
+// return true if user is hovering over this widget (or it's pushed and user is not over it for highlight) 
+void cegui_mnitm_isHovering(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return true if the button widget is in the pushed state. 
+void cegui_mnitm_isPushed(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Returns true if the popup menu attached to the menu item is open. 
+void cegui_mnitm_isOpened(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Returns true if the menu item popup is closing or not. 
+void cegui_mnitm_isPopupClosing(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Returns true if the menu item popup is closed or opened automatically if hovering with the mouse. 
+void cegui_mnitm_hasAutoPopup(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Returns the time, which has to elapse before the popup window is opened/closed if the hovering state changes. 
+void cegui_mnitm_getAutoPopupTimeout(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// 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);
+
+// Opens the PopupMenu. 
+void cegui_mnitm_openPopupMenu(struct hg3dclass_struct * thisclass_c, int notify_c);
+
+// Closes the PopupMenu. 
+void cegui_mnitm_closePopupMenu(struct hg3dclass_struct * thisclass_c, int notify_c);
+
+// Toggles the PopupMenu. 
+void cegui_mnitm_togglePopupMenu(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// starts the closing timer for the popup, which will close it if the timer is enabled. 
+void cegui_mnitm_startPopupClosing(struct hg3dclass_struct * thisclass_c);
+
+// starts the opening timer for the popup, which will open it if the timer is enabled. 
+void cegui_mnitm_startPopupOpening(struct hg3dclass_struct * thisclass_c);
+
+// Constructor for MenuItem
+void cegui_mnitm_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for MenuItem
+void cegui_mnitm_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassMultiColumnList.h b/include/ClassMultiColumnList.h
new file mode 100644
--- /dev/null
+++ b/include/ClassMultiColumnList.h
@@ -0,0 +1,237 @@
+// 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.
+// 
+
+// ClassMultiColumnList.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassMultiColumnList
+#define _DEFINED_HG3D_ClassMultiColumnList
+
+#include "ClassPtr.h"
+#include "EnumSortDirection.h"
+#include "ClassListHeaderSegment.h"
+#include "ClassListboxItem.h"
+#include "EnumSelectionMode.h"
+#include "ClassScrollbar.h"
+#include "ClassListHeader.h"
+
+
+// Return whether user manipulation of the sort column and direction are enabled. 
+void cegui_mltclmlst_isUserSortControlEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether the user may size column segments. 
+void cegui_mltclmlst_isUserColumnSizingEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether the user may modify the order of the columns. 
+void cegui_mltclmlst_isUserColumnDraggingEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return the number of columns in the multi-column list. 
+void cegui_mltclmlst_getColumnCount(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// Return the number of rows in the multi-column list. 
+void cegui_mltclmlst_getRowCount(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// Return the zero based index of the current sort column. There must be at least one column to successfully call this method. 
+void cegui_mltclmlst_getSortColumn(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// Return the zero based column index of the column with the specified ID. 
+void cegui_mltclmlst_getColumnWithID(struct hg3dclass_struct * thisclass_c, unsigned int col_id_c, unsigned int * result_c);
+
+// Return the zero based index of the column whos header text matches the specified text. 
+void cegui_mltclmlst_getColumnWithHeaderText(struct hg3dclass_struct * thisclass_c, char * text_c, unsigned int * result_c);
+
+// Return the currently set sort direction. 
+void cegui_mltclmlst_getSortDirection(struct hg3dclass_struct * thisclass_c, enum EnumSortDirection * result_c);
+
+// Return the ListHeaderSegment
+void cegui_mltclmlst_getHeaderSegmentForColumn(struct hg3dclass_struct * thisclass_c, unsigned int col_idx_c, struct hg3dclass_struct * result_c);
+
+// Return the zero based index of the Row that contains item
+void cegui_mltclmlst_getItemRowIndex(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c, unsigned int * result_c);
+
+// Return the current zero based index of the column that contains item
+void cegui_mltclmlst_getItemColumnIndex(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c, unsigned int * result_c);
+
+// return whether ListboxItemitemcol_idx
+void cegui_mltclmlst_isListboxItemInColumn(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c, unsigned int col_idx_c, int * result_c);
+
+// return whether ListboxItemitemrow_idx
+void cegui_mltclmlst_isListboxItemInRow(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c, unsigned int row_idx_c, int * result_c);
+
+// return whether ListboxItemitem
+void cegui_mltclmlst_isListboxItemInList(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c, int * result_c);
+
+// Return the ListboxItemcol_idxtext
+void cegui_mltclmlst_findColumnItemWithText(struct hg3dclass_struct * thisclass_c, char * text_c, unsigned int col_idx_c, struct hg3dclass_struct * start_item_c, struct hg3dclass_struct * result_c);
+
+// Return the ListboxItemrow_idxtext
+void cegui_mltclmlst_findRowItemWithText(struct hg3dclass_struct * thisclass_c, char * text_c, unsigned int row_idx_c, struct hg3dclass_struct * start_item_c, struct hg3dclass_struct * result_c);
+
+// Return the ListboxItemtext
+void cegui_mltclmlst_findListItemWithText(struct hg3dclass_struct * thisclass_c, char * text_c, struct hg3dclass_struct * start_item_c, struct hg3dclass_struct * result_c);
+
+// Return a pointer to the first selected ListboxItem
+void cegui_mltclmlst_getFirstSelectedItem(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return a pointer to the next selected ListboxItemstart_item
+void cegui_mltclmlst_getNextSelected(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * start_item_c, struct hg3dclass_struct * result_c);
+
+// Return the number of selected ListboxItems attached to this list box. 
+void cegui_mltclmlst_getSelectedCount(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// Return the ID of the currently set nominated selection column to be used when in one of the NominatedColumn* selection modes. There must be at least one column to successfully call this method. 
+void cegui_mltclmlst_getNominatedSelectionColumnID(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// Return the index of the currently set nominated selection column to be used when in one of the NominatedColumn* selection modes. 
+void cegui_mltclmlst_getNominatedSelectionColumn(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// Return the index of the currently set nominated selection row to be used when in one of the NominatedRow* selection modes. 
+void cegui_mltclmlst_getNominatedSelectionRow(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// Return the currently set selection mode. 
+void cegui_mltclmlst_getSelectionMode(struct hg3dclass_struct * thisclass_c, enum EnumSelectionMode * result_c);
+
+// Return whether the vertical scroll bar is always shown. 
+void cegui_mltclmlst_isVertScrollbarAlwaysShown(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether the horizontal scroll bar is always shown. 
+void cegui_mltclmlst_isHorzScrollbarAlwaysShown(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return the ID code assigned to the requested column. 
+void cegui_mltclmlst_getColumnID(struct hg3dclass_struct * thisclass_c, unsigned int col_idx_c, unsigned int * result_c);
+
+// Return the ID code assigned to the requested row. 
+void cegui_mltclmlst_getRowID(struct hg3dclass_struct * thisclass_c, unsigned int row_idx_c, unsigned int * result_c);
+
+// Return the zero based row index of the row with the specified ID. 
+void cegui_mltclmlst_getRowWithID(struct hg3dclass_struct * thisclass_c, unsigned int row_id_c, unsigned int * result_c);
+
+// Return a pointer to the vertical scrollbar component widget for this MultiColumnList
+void cegui_mltclmlst_getVertScrollbar(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return a pointer to the horizontal scrollbar component widget for this MultiColumnList
+void cegui_mltclmlst_getHorzScrollbar(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return a pointer to the list header component widget for this MultiColumnList
+void cegui_mltclmlst_getListHeader(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return the sum of all row heights in pixels. 
+void cegui_mltclmlst_getTotalRowsHeight(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Return the pixel width of the widest item in the given column. 
+void cegui_mltclmlst_getWidestColumnItemWidth(struct hg3dclass_struct * thisclass_c, unsigned int col_idx_c, float * result_c);
+
+// Return, in pixels, the height of the highest item in the given row. 
+void cegui_mltclmlst_getHighestRowItemHeight(struct hg3dclass_struct * thisclass_c, unsigned int row_idx_c, float * result_c);
+
+// Initialise the Window
+void cegui_mltclmlst_initialiseComponents(struct hg3dclass_struct * thisclass_c);
+
+// Remove all items from the list. 
+void cegui_mltclmlst_resetList(struct hg3dclass_struct * thisclass_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);
+
+// Removes a column from the list box. This will cause any ListboxItem
+void cegui_mltclmlst_removeColumnWithID(struct hg3dclass_struct * thisclass_c, unsigned int col_id_c);
+
+// Move the column at index col_idxposition
+void cegui_mltclmlst_moveColumn(struct hg3dclass_struct * thisclass_c, unsigned int col_idx_c, unsigned int position_c);
+
+// Move the column with ID col_idposition
+void cegui_mltclmlst_moveColumnWithID(struct hg3dclass_struct * thisclass_c, unsigned int col_id_c, unsigned int position_c);
+
+// Add an empty row to the list box. 
+void cegui_mltclmlst_addRow(struct hg3dclass_struct * thisclass_c, unsigned int row_id_c, unsigned int * result_c);
+
+// Add a row to the list box, and set the item in the column with ID col_iditem
+void cegui_mltclmlst_addRow2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c, unsigned int col_id_c, unsigned int row_id_c, unsigned int * result_c);
+
+// Insert an empty row into the list box. 
+void cegui_mltclmlst_insertRow(struct hg3dclass_struct * thisclass_c, unsigned int row_idx_c, unsigned int row_id_c, unsigned int * result_c);
+
+// Insert a row into the list box, and set the item in the column with ID col_iditem
+void cegui_mltclmlst_insertRow2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c, unsigned int col_id_c, unsigned int row_idx_c, unsigned int row_id_c, unsigned int * result_c);
+
+// Remove the list box row with index row_idxListboxItemrow_idx
+void cegui_mltclmlst_removeRow(struct hg3dclass_struct * thisclass_c, unsigned int row_idx_c);
+
+// Set the ListboxItemcol_idrow_idx
+void cegui_mltclmlst_setItem2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c, unsigned int col_id_c, unsigned int row_idx_c);
+
+// Set the selection mode for the list box. 
+void cegui_mltclmlst_setSelectionMode(struct hg3dclass_struct * thisclass_c, enum EnumSelectionMode sel_mode_c);
+
+// Set the column to be used for the NominatedColumn* selection modes. 
+void cegui_mltclmlst_setNominatedSelectionColumnID(struct hg3dclass_struct * thisclass_c, unsigned int col_id_c);
+
+// Set the column to be used for the NominatedColumn* selection modes. 
+void cegui_mltclmlst_setNominatedSelectionColumn(struct hg3dclass_struct * thisclass_c, unsigned int col_idx_c);
+
+// Set the row to be used for the NominatedRow* selection modes. 
+void cegui_mltclmlst_setNominatedSelectionRow(struct hg3dclass_struct * thisclass_c, unsigned int row_idx_c);
+
+// Set the sort direction to be used. 
+void cegui_mltclmlst_setSortDirection(struct hg3dclass_struct * thisclass_c, enum EnumSortDirection direction_c);
+
+// Set the column to be used as the sort key. 
+void cegui_mltclmlst_setSortColumn(struct hg3dclass_struct * thisclass_c, unsigned int col_idx_c);
+
+// Set the column to be used as the sort key. 
+void cegui_mltclmlst_setSortColumnByID(struct hg3dclass_struct * thisclass_c, unsigned int col_id_c);
+
+// Set whether the vertical scroll bar should always be shown, or just when needed. 
+void cegui_mltclmlst_setShowVertScrollbar(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether the horizontal scroll bar should always be shown, or just when needed. 
+void cegui_mltclmlst_setShowHorzScrollbar(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Removed the selected state from any currently selected ListboxItem
+void cegui_mltclmlst_clearAllSelections(struct hg3dclass_struct * thisclass_c);
+
+// Sets or clears the selected state of the given ListboxItem
+void cegui_mltclmlst_setItemSelectState(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c, int state_c);
+
+// 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 whether user manipulation of the sort column and direction are enabled. 
+void cegui_mltclmlst_setUserSortControlEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether the user may size column segments. 
+void cegui_mltclmlst_setUserColumnSizingEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether the user may modify the order of the columns. 
+void cegui_mltclmlst_setUserColumnDraggingEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Automatically determines the "best fit" size for the specified column and sets the column width to the same. 
+void cegui_mltclmlst_autoSizeColumnHeader(struct hg3dclass_struct * thisclass_c, unsigned int col_idx_c);
+
+// Set the ID code assigned to a given row. 
+void cegui_mltclmlst_setRowID(struct hg3dclass_struct * thisclass_c, unsigned int row_idx_c, unsigned int row_id_c);
+
+// Constructor for the Multi-column list base class. 
+void cegui_mltclmlst_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for the multi-column list base class. 
+void cegui_mltclmlst_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassMultiLineEditbox.h b/include/ClassMultiLineEditbox.h
new file mode 100644
--- /dev/null
+++ b/include/ClassMultiLineEditbox.h
@@ -0,0 +1,97 @@
+// 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.
+// 
+
+// ClassMultiLineEditbox.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassMultiLineEditbox
+#define _DEFINED_HG3D_ClassMultiLineEditbox
+
+#include "ClassPtr.h"
+#include "ClassScrollbar.h"
+
+
+// return true if the edit box has input focus. 
+void cegui_mltlnedtbx_hasInputFocus(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return true if the edit box is read-only. 
+void cegui_mltlnedtbx_isReadOnly(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return the current position of the carat. 
+void cegui_mltlnedtbx_getCaratIndex(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return the current selection start point. 
+void cegui_mltlnedtbx_getSelectionStartIndex(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return the current selection end point. 
+void cegui_mltlnedtbx_getSelectionEndIndex(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return the length of the current selection (in code points / characters). 
+void cegui_mltlnedtbx_getSelectionLength(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return the maximum text length set for this edit box. 
+void cegui_mltlnedtbx_getMaxTextLength(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether the text in the edit box will be word-wrapped. 
+void cegui_mltlnedtbx_isWordWrapped(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return a pointer to the vertical scrollbar component widget for this MultiLineEditbox
+void cegui_mltlnedtbx_getVertScrollbar(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return whether the vertical scroll bar is always shown. 
+void cegui_mltlnedtbx_isVertScrollbarAlwaysShown(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return a pointer to the horizontal scrollbar component widget for this MultiLineEditbox
+void cegui_mltlnedtbx_getHorzScrollbar(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return the line number a given index falls on with the current formatting. Will return last line if index is out of range. 
+void cegui_mltlnedtbx_getLineNumberFromIndex(struct hg3dclass_struct * thisclass_c, int index_c, int * result_c);
+
+// Initialise the Window
+void cegui_mltlnedtbx_initialiseComponents(struct hg3dclass_struct * thisclass_c);
+
+// Specify whether the edit box is read-only. 
+void cegui_mltlnedtbx_setReadOnly(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set the current position of the carat. 
+void cegui_mltlnedtbx_setCaratIndex(struct hg3dclass_struct * thisclass_c, int carat_pos_c);
+
+// Define the current selection for the edit box. 
+void cegui_mltlnedtbx_setSelection(struct hg3dclass_struct * thisclass_c, int start_pos_c, int end_pos_c);
+
+// set the maximum text length for this edit box. 
+void cegui_mltlnedtbx_setMaxTextLength(struct hg3dclass_struct * thisclass_c, int max_len_c);
+
+// Scroll the view so that the current carat position is visible. 
+void cegui_mltlnedtbx_ensureCaratIsVisible(struct hg3dclass_struct * thisclass_c);
+
+// Set whether the text will be word wrapped or not. 
+void cegui_mltlnedtbx_setWordWrapping(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether the vertical scroll bar should always be shown. 
+void cegui_mltlnedtbx_setShowVertScrollbar(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Constructor for the MultiLineEditbox
+void cegui_mltlnedtbx_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for the MultiLineEditbox
+void cegui_mltlnedtbx_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassOgreRenderer.h b/include/ClassOgreRenderer.h
new file mode 100644
--- /dev/null
+++ b/include/ClassOgreRenderer.h
@@ -0,0 +1,89 @@
+// 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.
+// 
+
+// ClassOgreRenderer.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassOgreRenderer
+#define _DEFINED_HG3D_ClassOgreRenderer
+
+#include "ClassPtr.h"
+#include "ClassOgreResourceProvider.h"
+#include "EnumBlendMode.h"
+
+
+// Convenience function that creates all the OgreCEGUI
+void cegui_ogrrndr_bootstrapSystem(struct hg3dclass_struct * result_c);
+
+// Convenience function to cleanup the CEGUI
+void cegui_ogrrndr_destroySystem();
+
+// Create an OgreRendererOgre
+void cegui_ogrrndr_create(struct hg3dclass_struct * result_c);
+
+// destory an OgreRenderer
+void cegui_ogrrndr_destroy(struct hg3dclass_struct * renderer_c);
+
+// function to create a CEGUI::OgreResourceProvider
+void cegui_ogrrndr_createOgreResourceProvider(struct hg3dclass_struct * result_c);
+
+// function to destroy a CEGUI::OgreResourceProvider
+void cegui_ogrrndr_destroyOgreResourceProvider(struct hg3dclass_struct * rp_c);
+
+// set whether CEGUI
+void cegui_ogrrndr_setRenderingEnabled(struct hg3dclass_struct * thisclass_c, const int enabled_c);
+
+// return whether CEGUI
+void cegui_ogrrndr_isRenderingEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// set the render states for the specified BlendMode. 
+void cegui_ogrrndr_setupRenderingBlendMode(struct hg3dclass_struct * thisclass_c, const enum EnumBlendMode mode_c, const int force_c);
+
+// Controls whether rendering done by CEGUI
+void cegui_ogrrndr_setFrameControlExecutionEnabled(struct hg3dclass_struct * thisclass_c, const int enabled_c);
+
+// Returns whether rendering done by CEGUI
+void cegui_ogrrndr_isFrameControlExecutionEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Sets all the required render states needed for CEGUI
+void cegui_ogrrndr_initialiseRenderStateSettings(struct hg3dclass_struct * thisclass_c);
+
+// Destroy all GeometryBuffer objects created by this Renderer
+void cegui_ogrrndr_destroyAllGeometryBuffers(struct hg3dclass_struct * thisclass_c);
+
+// Destory all TextureTarget objects created by this Renderer
+void cegui_ogrrndr_destroyAllTextureTargets(struct hg3dclass_struct * thisclass_c);
+
+// Destroy all Texture objects created by this Renderer
+void cegui_ogrrndr_destroyAllTextures(struct hg3dclass_struct * thisclass_c);
+
+// Perform any operations required to put the system into a state ready for rendering operations to begin. 
+void cegui_ogrrndr_beginRendering(struct hg3dclass_struct * thisclass_c);
+
+// Perform any operations required to finalise rendering. 
+void cegui_ogrrndr_endRendering(struct hg3dclass_struct * thisclass_c);
+
+// Return the pixel size of the maximum supported texture. 
+void cegui_ogrrndr_getMaxTextureSize(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// Return identification string for the renderer module. 
+void cegui_ogrrndr_getIdentifierString(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+#endif 
diff --git a/include/ClassOgreResourceProvider.h b/include/ClassOgreResourceProvider.h
new file mode 100644
--- /dev/null
+++ b/include/ClassOgreResourceProvider.h
@@ -0,0 +1,30 @@
+// 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.
+// 
+
+// ClassOgreResourceProvider.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassOgreResourceProvider
+#define _DEFINED_HG3D_ClassOgreResourceProvider
+
+#include "ClassPtr.h"
+
+
+#endif 
diff --git a/include/ClassProgressBar.h b/include/ClassProgressBar.h
new file mode 100644
--- /dev/null
+++ b/include/ClassProgressBar.h
@@ -0,0 +1,54 @@
+// 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.
+// 
+
+// ClassProgressBar.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassProgressBar
+#define _DEFINED_HG3D_ClassProgressBar
+
+#include "ClassPtr.h"
+
+
+// return the current progress value 
+void cegui_prgbr_getProgress(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// return the current step size 
+void cegui_prgbr_getStep(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// set the current progress. 
+void cegui_prgbr_setProgress(struct hg3dclass_struct * thisclass_c, float progress_c);
+
+// set the size of the 'step' in percentage points (default is 0.01f or 1%). 
+void cegui_prgbr_setStepSize(struct hg3dclass_struct * thisclass_c, float step_val_c);
+
+// cause the progress to step 
+void cegui_prgbr_step(struct hg3dclass_struct * thisclass_c);
+
+// Modify the progress level by a specified delta. 
+void cegui_prgbr_adjustProgress(struct hg3dclass_struct * thisclass_c, float delta_c);
+
+// Constructor for ProgressBar
+void cegui_prgbr_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for ProgressBar
+void cegui_prgbr_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassPropertySet.h b/include/ClassPropertySet.h
new file mode 100644
--- /dev/null
+++ b/include/ClassPropertySet.h
@@ -0,0 +1,60 @@
+// 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.
+// 
+
+// ClassPropertySet.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassPropertySet
+#define _DEFINED_HG3D_ClassPropertySet
+
+#include "ClassPtr.h"
+
+
+// Constructs a new PropertySet
+void cegui_prpst_construct(struct hg3dclass_struct * result_c);
+
+// Destructor for PropertySet
+void cegui_prpst_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Removes a Property from the PropertySet
+void cegui_prpst_removeProperty(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// Removes all Property objects from the PropertySet
+void cegui_prpst_clearProperties(struct hg3dclass_struct * thisclass_c);
+
+// Checks to see if a Property with the given name is in the PropertySet
+void cegui_prpst_isPropertyPresent(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// Return the help text for the specified Property. 
+void cegui_prpst_getPropertyHelp(struct hg3dclass_struct * thisclass_c, char * name_c, char * result_c);
+
+// Gets the current value of the specified Property. 
+void cegui_prpst_getProperty(struct hg3dclass_struct * thisclass_c, char * name_c, char * result_c);
+
+// Sets the current value of a Property. 
+void cegui_prpst_setProperty(struct hg3dclass_struct * thisclass_c, char * name_c, char * value_c);
+
+// Returns whether a Property is at it's default value. 
+void cegui_prpst_isPropertyDefault(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// Returns the default value of a Property as a String. 
+void cegui_prpst_getPropertyDefault(struct hg3dclass_struct * thisclass_c, char * name_c, char * result_c);
+
+#endif 
diff --git a/include/ClassPtr.h b/include/ClassPtr.h
new file mode 100644
--- /dev/null
+++ b/include/ClassPtr.h
@@ -0,0 +1,215 @@
+// 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.
+// 
+
+// ClassPtr.h
+
+// Here are the methods defined, which do the class pointer
+// marshalling and the casting of subclasses to higher classes
+
+#include "wchar.h"
+
+
+#ifndef CLASSPTR_INCLUDE_H
+#define CLASSPTR_INCLUDE_H
+
+typedef struct hg3dclass_struct {
+	void *ptr;
+	void *fptr;
+} hg3dclass_struct;
+
+void *getHG3DClassPtr(hg3dclass_struct inSt, const char* className);
+
+
+typedef void ClassCheckbox; 
+hg3dclass_struct getHG3DClass_Checkbox(void *ptrIn);
+
+typedef void ClassCombobox; 
+hg3dclass_struct getHG3DClass_Combobox(void *ptrIn);
+
+typedef void ClassComboDropList; 
+hg3dclass_struct getHG3DClass_ComboDropList(void *ptrIn);
+
+typedef void ClassDefaultLogger; 
+hg3dclass_struct getHG3DClass_DefaultLogger(void *ptrIn);
+
+typedef void ClassDefaultResourceProvider; 
+hg3dclass_struct getHG3DClass_DefaultResourceProvider(void *ptrIn);
+
+typedef void ClassDragContainer; 
+hg3dclass_struct getHG3DClass_DragContainer(void *ptrIn);
+
+typedef void ClassEditbox; 
+hg3dclass_struct getHG3DClass_Editbox(void *ptrIn);
+
+typedef void ClassEventArgs; 
+hg3dclass_struct getHG3DClass_EventArgs(void *ptrIn);
+
+typedef void ClassEventSet; 
+hg3dclass_struct getHG3DClass_EventSet(void *ptrIn);
+
+typedef void ClassFont; 
+hg3dclass_struct getHG3DClass_Font(void *ptrIn);
+
+typedef void ClassFontManager; 
+hg3dclass_struct getHG3DClass_FontManager(void *ptrIn);
+
+typedef void ClassFrameWindow; 
+hg3dclass_struct getHG3DClass_FrameWindow(void *ptrIn);
+
+typedef void ClassImageCodec; 
+hg3dclass_struct getHG3DClass_ImageCodec(void *ptrIn);
+
+typedef void ClassImageset; 
+hg3dclass_struct getHG3DClass_Imageset(void *ptrIn);
+
+typedef void ClassItemEntry; 
+hg3dclass_struct getHG3DClass_ItemEntry(void *ptrIn);
+
+typedef void ClassItemListbox; 
+hg3dclass_struct getHG3DClass_ItemListbox(void *ptrIn);
+
+typedef void ClassListbox; 
+hg3dclass_struct getHG3DClass_Listbox(void *ptrIn);
+
+typedef void ClassListboxItem; 
+hg3dclass_struct getHG3DClass_ListboxItem(void *ptrIn);
+
+typedef void ClassListboxTextItem; 
+hg3dclass_struct getHG3DClass_ListboxTextItem(void *ptrIn);
+
+typedef void ClassListHeader; 
+hg3dclass_struct getHG3DClass_ListHeader(void *ptrIn);
+
+typedef void ClassListHeaderSegment; 
+hg3dclass_struct getHG3DClass_ListHeaderSegment(void *ptrIn);
+
+typedef void ClassLogger; 
+hg3dclass_struct getHG3DClass_Logger(void *ptrIn);
+
+typedef void ClassMenuBase; 
+hg3dclass_struct getHG3DClass_MenuBase(void *ptrIn);
+
+typedef void ClassMenuItem; 
+hg3dclass_struct getHG3DClass_MenuItem(void *ptrIn);
+
+typedef void ClassMultiColumnList; 
+hg3dclass_struct getHG3DClass_MultiColumnList(void *ptrIn);
+
+typedef void ClassMultiLineEditbox; 
+hg3dclass_struct getHG3DClass_MultiLineEditbox(void *ptrIn);
+
+typedef void ClassOgreRenderer; 
+hg3dclass_struct getHG3DClass_OgreRenderer(void *ptrIn);
+
+typedef void ClassOgreResourceProvider; 
+hg3dclass_struct getHG3DClass_OgreResourceProvider(void *ptrIn);
+
+typedef void ClassProgressBar; 
+hg3dclass_struct getHG3DClass_ProgressBar(void *ptrIn);
+
+typedef void ClassPropertySet; 
+hg3dclass_struct getHG3DClass_PropertySet(void *ptrIn);
+
+typedef void ClassPushButton; 
+hg3dclass_struct getHG3DClass_PushButton(void *ptrIn);
+
+typedef void ClassRadioButton; 
+hg3dclass_struct getHG3DClass_RadioButton(void *ptrIn);
+
+typedef void ClassRenderer; 
+hg3dclass_struct getHG3DClass_Renderer(void *ptrIn);
+
+typedef void ClassResourceProvider; 
+hg3dclass_struct getHG3DClass_ResourceProvider(void *ptrIn);
+
+typedef void ClassScheme; 
+hg3dclass_struct getHG3DClass_Scheme(void *ptrIn);
+
+typedef void ClassSchemeManager; 
+hg3dclass_struct getHG3DClass_SchemeManager(void *ptrIn);
+
+typedef void ClassScriptFunctor; 
+hg3dclass_struct getHG3DClass_ScriptFunctor(void *ptrIn);
+
+typedef void ClassScriptModule; 
+hg3dclass_struct getHG3DClass_ScriptModule(void *ptrIn);
+
+typedef void ClassScrollablePane; 
+hg3dclass_struct getHG3DClass_ScrollablePane(void *ptrIn);
+
+typedef void ClassScrollbar; 
+hg3dclass_struct getHG3DClass_Scrollbar(void *ptrIn);
+
+typedef void ClassScrolledContainer; 
+hg3dclass_struct getHG3DClass_ScrolledContainer(void *ptrIn);
+
+typedef void ClassScrolledItemListBase; 
+hg3dclass_struct getHG3DClass_ScrolledItemListBase(void *ptrIn);
+
+typedef void ClassSlider; 
+hg3dclass_struct getHG3DClass_Slider(void *ptrIn);
+
+typedef void ClassSpinner; 
+hg3dclass_struct getHG3DClass_Spinner(void *ptrIn);
+
+typedef void ClassSystem; 
+hg3dclass_struct getHG3DClass_System(void *ptrIn);
+
+typedef void ClassTabButton; 
+hg3dclass_struct getHG3DClass_TabButton(void *ptrIn);
+
+typedef void ClassThumb; 
+hg3dclass_struct getHG3DClass_Thumb(void *ptrIn);
+
+typedef void ClassTooltip; 
+hg3dclass_struct getHG3DClass_Tooltip(void *ptrIn);
+
+typedef void ClassTree; 
+hg3dclass_struct getHG3DClass_Tree(void *ptrIn);
+
+typedef void ClassWidgetLookManager; 
+hg3dclass_struct getHG3DClass_WidgetLookManager(void *ptrIn);
+
+typedef void ClassWindow; 
+hg3dclass_struct getHG3DClass_Window(void *ptrIn);
+
+typedef void ClassWindowManager; 
+hg3dclass_struct getHG3DClass_WindowManager(void *ptrIn);
+
+typedef void ClassXMLParser; 
+hg3dclass_struct getHG3DClass_XMLParser(void *ptrIn);
+
+typedef void ClassHG3DEventController; 
+hg3dclass_struct getHG3DClass_HG3DEventController(void *ptrIn);
+
+typedef void ClassHG3DEventStaticFunctions; 
+hg3dclass_struct getHG3DClass_HG3DEventStaticFunctions(void *ptrIn);
+
+typedef void ClassHG3DListboxStaticFunctions; 
+hg3dclass_struct getHG3DClass_HG3DListboxStaticFunctions(void *ptrIn);
+
+typedef void ClassHG3DWindowStaticFunctions; 
+hg3dclass_struct getHG3DClass_HG3DWindowStaticFunctions(void *ptrIn);
+
+typedef void ClassSystemHG3D; 
+hg3dclass_struct getHG3DClass_SystemHG3D(void *ptrIn);
+
+typedef void ClassWindowManagerHG3D; 
+hg3dclass_struct getHG3DClass_WindowManagerHG3D(void *ptrIn);
+
+#endif
diff --git a/include/ClassPushButton.h b/include/ClassPushButton.h
new file mode 100644
--- /dev/null
+++ b/include/ClassPushButton.h
@@ -0,0 +1,36 @@
+// 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.
+// 
+
+// ClassPushButton.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassPushButton
+#define _DEFINED_HG3D_ClassPushButton
+
+#include "ClassPtr.h"
+
+
+// Constructor for base PushButton
+void cegui_pshbttn_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for PushButton
+void cegui_pshbttn_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassRadioButton.h b/include/ClassRadioButton.h
new file mode 100644
--- /dev/null
+++ b/include/ClassRadioButton.h
@@ -0,0 +1,45 @@
+// 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.
+// 
+
+// ClassRadioButton.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassRadioButton
+#define _DEFINED_HG3D_ClassRadioButton
+
+#include "ClassPtr.h"
+
+
+// return true if the radio button is selected (has the checkmark) 
+void cegui_rdbttn_isSelected(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return a pointer to the RadioButtonRadioButton
+void cegui_rdbttn_getSelectedButtonInGroup(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// set whether the radio button is selected or not 
+void cegui_rdbttn_setSelected(struct hg3dclass_struct * thisclass_c, int select_c);
+
+// 
+void cegui_rdbttn_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_rdbttn_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassRenderer.h b/include/ClassRenderer.h
new file mode 100644
--- /dev/null
+++ b/include/ClassRenderer.h
@@ -0,0 +1,54 @@
+// 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.
+// 
+
+// ClassRenderer.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassRenderer
+#define _DEFINED_HG3D_ClassRenderer
+
+#include "ClassPtr.h"
+
+
+// Destroy all GeometryBuffer objects created by this Renderer
+void cegui_rndr_destroyAllGeometryBuffers(struct hg3dclass_struct * thisclass_c);
+
+// Destory all TextureTarget objects created by this Renderer
+void cegui_rndr_destroyAllTextureTargets(struct hg3dclass_struct * thisclass_c);
+
+// Destroy all Texture objects created by this Renderer
+void cegui_rndr_destroyAllTextures(struct hg3dclass_struct * thisclass_c);
+
+// Perform any operations required to put the system into a state ready for rendering operations to begin. 
+void cegui_rndr_beginRendering(struct hg3dclass_struct * thisclass_c);
+
+// Perform any operations required to finalise rendering. 
+void cegui_rndr_endRendering(struct hg3dclass_struct * thisclass_c);
+
+// Return the pixel size of the maximum supported texture. 
+void cegui_rndr_getMaxTextureSize(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// Return identification string for the renderer module. 
+void cegui_rndr_getIdentifierString(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// Destructor. 
+void cegui_rndr_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassResourceProvider.h b/include/ClassResourceProvider.h
new file mode 100644
--- /dev/null
+++ b/include/ClassResourceProvider.h
@@ -0,0 +1,39 @@
+// 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.
+// 
+
+// ClassResourceProvider.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassResourceProvider
+#define _DEFINED_HG3D_ClassResourceProvider
+
+#include "ClassPtr.h"
+
+
+// Destructor for the ResourceProvider
+void cegui_rsrcpr_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Return the current default resource group identifier. 
+void cegui_rsrcpr_getDefaultResourceGroup(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// Set the default resource group identifier. 
+void cegui_rsrcpr_setDefaultResourceGroup(struct hg3dclass_struct * thisclass_c, char * resourceGroup_c);
+
+#endif 
diff --git a/include/ClassScheme.h b/include/ClassScheme.h
new file mode 100644
--- /dev/null
+++ b/include/ClassScheme.h
@@ -0,0 +1,51 @@
+// 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.
+// 
+
+// ClassScheme.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassScheme
+#define _DEFINED_HG3D_ClassScheme
+
+#include "ClassPtr.h"
+
+
+// Loads all resources for this scheme. 
+void cegui_schm_loadResources(struct hg3dclass_struct * thisclass_c);
+
+// Unloads all resources for this scheme. This should be used very carefully. 
+void cegui_schm_unloadResources(struct hg3dclass_struct * thisclass_c);
+
+// Return whether the resources for this Scheme
+void cegui_schm_resourcesLoaded(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return the name of this Scheme
+void cegui_schm_getName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// Destroys a Scheme
+void cegui_schm_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Returns the default resource group currently set for Schemes. 
+void cegui_schm_getDefaultResourceGroup(char * result_c);
+
+// Sets the default resource group to be used when loading scheme xml data. 
+void cegui_schm_setDefaultResourceGroup(char * resourceGroup_c);
+
+#endif 
diff --git a/include/ClassSchemeManager.h b/include/ClassSchemeManager.h
new file mode 100644
--- /dev/null
+++ b/include/ClassSchemeManager.h
@@ -0,0 +1,36 @@
+// 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.
+// 
+
+// ClassSchemeManager.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassSchemeManager
+#define _DEFINED_HG3D_ClassSchemeManager
+
+#include "ClassPtr.h"
+
+
+// Constructor. 
+void cegui_schmmgr_construct(struct hg3dclass_struct * result_c);
+
+// Destructor. 
+void cegui_schmmgr_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassScriptFunctor.h b/include/ClassScriptFunctor.h
new file mode 100644
--- /dev/null
+++ b/include/ClassScriptFunctor.h
@@ -0,0 +1,33 @@
+// 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.
+// 
+
+// ClassScriptFunctor.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassScriptFunctor
+#define _DEFINED_HG3D_ClassScriptFunctor
+
+#include "ClassPtr.h"
+
+
+// 
+void cegui_scrfnct_construct(char * functionName_c, struct hg3dclass_struct * result_c);
+
+#endif 
diff --git a/include/ClassScriptModule.h b/include/ClassScriptModule.h
new file mode 100644
--- /dev/null
+++ b/include/ClassScriptModule.h
@@ -0,0 +1,61 @@
+// 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.
+// 
+
+// ClassScriptModule.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassScriptModule
+#define _DEFINED_HG3D_ClassScriptModule
+
+#include "ClassPtr.h"
+#include "ClassEventArgs.h"
+
+
+// Destructor for ScriptModule
+void cegui_scrmd_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Execute a script file. 
+void cegui_scrmd_executeScriptFile(struct hg3dclass_struct * thisclass_c, char * filename_c, char * resourceGroup_c);
+
+// Execute a scripted global function. The function should not take any parameters and should return an integer. 
+void cegui_scrmd_executeScriptGlobal(struct hg3dclass_struct * thisclass_c, char * function_name_c, int * result_c);
+
+// Execute a scripted global 'event handler' function. The function should take some kind of EventArgsEventArgs
+void cegui_scrmd_executeScriptedEventHandler(struct hg3dclass_struct * thisclass_c, char * handler_name_c, struct hg3dclass_struct * e_c, int * result_c);
+
+// Execute script code contained in the given CEGUI::String object. 
+void cegui_scrmd_executeString(struct hg3dclass_struct * thisclass_c, char * str_c);
+
+// Method called during system initialisation, prior to running any scripts via the ScriptModuleScriptModule
+void cegui_scrmd_createBindings(struct hg3dclass_struct * thisclass_c);
+
+// Method called during system destruction, after all scripts have been run via the ScriptModuleScriptModule
+void cegui_scrmd_destroyBindings(struct hg3dclass_struct * thisclass_c);
+
+// Return identification string for the ScriptModuleScriptModule
+void cegui_scrmd_getIdentifierString(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// Sets the default resource group to be used when loading script files. 
+void cegui_scrmd_setDefaultResourceGroup(char * resourceGroup_c);
+
+// Returns the default resource group used when loading script files. 
+void cegui_scrmd_getDefaultResourceGroup(char * result_c);
+
+#endif 
diff --git a/include/ClassScrollablePane.h b/include/ClassScrollablePane.h
new file mode 100644
--- /dev/null
+++ b/include/ClassScrollablePane.h
@@ -0,0 +1,107 @@
+// 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.
+// 
+
+// ClassScrollablePane.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassScrollablePane
+#define _DEFINED_HG3D_ClassScrollablePane
+
+#include "ClassPtr.h"
+#include "ClassScrolledContainer.h"
+#include "ClassScrollbar.h"
+
+
+// Constructor for the ScrollablePane
+void cegui_scrlpn_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for the ScrollablePane
+void cegui_scrlpn_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Returns a pointer to the window holding the pane contents. 
+void cegui_scrlpn_getContentPane(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return whether the vertical scroll bar is always shown. 
+void cegui_scrlpn_isVertScrollbarAlwaysShown(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Set whether the vertical scroll bar should always be shown. 
+void cegui_scrlpn_setShowVertScrollbar(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Return whether the horizontal scroll bar is always shown. 
+void cegui_scrlpn_isHorzScrollbarAlwaysShown(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Set whether the horizontal scroll bar should always be shown. 
+void cegui_scrlpn_setShowHorzScrollbar(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Return whether the content pane is auto sized. 
+void cegui_scrlpn_isContentPaneAutoSized(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Set whether the content pane should be auto-sized. 
+void cegui_scrlpn_setContentPaneAutoSized(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Returns the horizontal scrollbar step size as a fraction of one complete view page. 
+void cegui_scrlpn_getHorizontalStepSize(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Sets the horizontal scrollbar step size as a fraction of one complete view page. 
+void cegui_scrlpn_setHorizontalStepSize(struct hg3dclass_struct * thisclass_c, float step_c);
+
+// Returns the horizontal scrollbar overlap size as a fraction of one complete view page. 
+void cegui_scrlpn_getHorizontalOverlapSize(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Sets the horizontal scrollbar overlap size as a fraction of one complete view page. 
+void cegui_scrlpn_setHorizontalOverlapSize(struct hg3dclass_struct * thisclass_c, float overlap_c);
+
+// Returns the horizontal scroll position as a fraction of the complete scrollable width. 
+void cegui_scrlpn_getHorizontalScrollPosition(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Sets the horizontal scroll position as a fraction of the complete scrollable width. 
+void cegui_scrlpn_setHorizontalScrollPosition(struct hg3dclass_struct * thisclass_c, float position_c);
+
+// Returns the vertical scrollbar step size as a fraction of one complete view page. 
+void cegui_scrlpn_getVerticalStepSize(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Sets the vertical scrollbar step size as a fraction of one complete view page. 
+void cegui_scrlpn_setVerticalStepSize(struct hg3dclass_struct * thisclass_c, float step_c);
+
+// Returns the vertical scrollbar overlap size as a fraction of one complete view page. 
+void cegui_scrlpn_getVerticalOverlapSize(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Sets the vertical scrollbar overlap size as a fraction of one complete view page. 
+void cegui_scrlpn_setVerticalOverlapSize(struct hg3dclass_struct * thisclass_c, float overlap_c);
+
+// Returns the vertical scroll position as a fraction of the complete scrollable height. 
+void cegui_scrlpn_getVerticalScrollPosition(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Sets the vertical scroll position as a fraction of the complete scrollable height. 
+void cegui_scrlpn_setVerticalScrollPosition(struct hg3dclass_struct * thisclass_c, float position_c);
+
+// Return a pointer to the vertical scrollbar component widget for this ScrollablePane
+void cegui_scrlpn_getVertScrollbar(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return a pointer to the horizontal scrollbar component widget for this ScrollablePane
+void cegui_scrlpn_getHorzScrollbar(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Initialises the Window
+void cegui_scrlpn_initialiseComponents(struct hg3dclass_struct * thisclass_c);
+
+// Internal destroy method which actually just adds the window and any parent destructed child windows to the dead pool. 
+void cegui_scrlpn_destroy(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassScrollbar.h b/include/ClassScrollbar.h
new file mode 100644
--- /dev/null
+++ b/include/ClassScrollbar.h
@@ -0,0 +1,86 @@
+// 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.
+// 
+
+// ClassScrollbar.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassScrollbar
+#define _DEFINED_HG3D_ClassScrollbar
+
+#include "ClassPtr.h"
+#include "ClassPushButton.h"
+#include "ClassThumb.h"
+
+
+// Return the size of the document or data. 
+void cegui_scrlbr_getDocumentSize(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Return the page size for this scroll bar. 
+void cegui_scrlbr_getPageSize(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Return the step size for this scroll bar. 
+void cegui_scrlbr_getStepSize(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Return the overlap size for this scroll bar. 
+void cegui_scrlbr_getOverlapSize(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Return the current position of scroll bar within the document. 
+void cegui_scrlbr_getScrollPosition(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Return a pointer to the 'increase' PushButtoncomponent widget for this Scrollbar
+void cegui_scrlbr_getIncreaseButton(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return a pointer to the 'decrease' PushButtonScrollbar
+void cegui_scrlbr_getDecreaseButton(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return a pointer to the ThumbScrollbar
+void cegui_scrlbr_getThumb(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Initialises the Scrollbar
+void cegui_scrlbr_initialiseComponents(struct hg3dclass_struct * thisclass_c);
+
+// Set the size of the document or data. 
+void cegui_scrlbr_setDocumentSize(struct hg3dclass_struct * thisclass_c, float document_size_c);
+
+// Set the page size for this scroll bar. 
+void cegui_scrlbr_setPageSize(struct hg3dclass_struct * thisclass_c, float page_size_c);
+
+// Set the step size for this scroll bar. 
+void cegui_scrlbr_setStepSize(struct hg3dclass_struct * thisclass_c, float step_size_c);
+
+// Set the overlap size for this scroll bar. 
+void cegui_scrlbr_setOverlapSize(struct hg3dclass_struct * thisclass_c, float overlap_size_c);
+
+// Set the current position of scroll bar within the document. 
+void cegui_scrlbr_setScrollPosition(struct hg3dclass_struct * thisclass_c, float position_c);
+
+// Enable or disable the 'end lock' mode for the scrollbar. 
+void cegui_scrlbr_setEndLockEnabled(struct hg3dclass_struct * thisclass_c, const int enabled_c);
+
+// Returns whether the 'end lock'mode for the scrollbar is enabled. 
+void cegui_scrlbr_isEndLockEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Constructor for Scrollbar
+void cegui_scrlbr_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for Scrollbar
+void cegui_scrlbr_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassScrolledContainer.h b/include/ClassScrolledContainer.h
new file mode 100644
--- /dev/null
+++ b/include/ClassScrolledContainer.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.
+// 
+
+// ClassScrolledContainer.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassScrolledContainer
+#define _DEFINED_HG3D_ClassScrolledContainer
+
+#include "ClassPtr.h"
+
+
+// Constructor for ScrolledContainer
+void cegui_scrlcnt_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for ScrolledContainer
+void cegui_scrlcnt_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Return whether the content pane is auto sized. 
+void cegui_scrlcnt_isContentPaneAutoSized(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Set whether the content pane should be auto-sized. 
+void cegui_scrlcnt_setContentPaneAutoSized(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+#endif 
diff --git a/include/ClassScrolledItemListBase.h b/include/ClassScrolledItemListBase.h
new file mode 100644
--- /dev/null
+++ b/include/ClassScrolledItemListBase.h
@@ -0,0 +1,59 @@
+// 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.
+// 
+
+// ClassScrolledItemListBase.h
+
+// abstrakte Klasse!
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassScrolledItemListBase
+#define _DEFINED_HG3D_ClassScrolledItemListBase
+
+#include "ClassPtr.h"
+#include "ClassScrollbar.h"
+#include "ClassItemEntry.h"
+
+
+// Returns whether the vertical scrollbar is being forced visible. Despite content size. 
+void cegui_scrlitmlstbs_isVertScrollbarAlwaysShown(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Returns whether the horizontal scrollbar is being forced visible. Despite content size. 
+void cegui_scrlitmlstbs_isHorzScrollbarAlwaysShown(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Get the vertical scrollbar component attached to this window. 
+void cegui_scrlitmlstbs_getVertScrollbar(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Get the horizontal scrollbar component attached to this window. 
+void cegui_scrlitmlstbs_getHorzScrollbar(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Sets whether the vertical scrollbar should be forced visible. Despite content size. 
+void cegui_scrlitmlstbs_setShowVertScrollbar(struct hg3dclass_struct * thisclass_c, int mode_c);
+
+// Sets whether the horizontal scrollbar should be forced visible. Despite content size. 
+void cegui_scrlitmlstbs_setShowHorzScrollbar(struct hg3dclass_struct * thisclass_c, int mode_c);
+
+// Scroll the vertical list position if needed to ensure that the ItemEntryitemScrolledItemListBase
+void cegui_scrlitmlstbs_ensureItemIsVisibleVert(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c);
+
+// Scroll the horizontal list position if needed to ensure that the ItemEntryitemScrolledItemListBase
+void cegui_scrlitmlstbs_ensureItemIsVisibleHorz(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c);
+
+// 
+void cegui_scrlitmlstbs_initialiseComponents(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassSlider.h b/include/ClassSlider.h
new file mode 100644
--- /dev/null
+++ b/include/ClassSlider.h
@@ -0,0 +1,61 @@
+// 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.
+// 
+
+// ClassSlider.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassSlider
+#define _DEFINED_HG3D_ClassSlider
+
+#include "ClassPtr.h"
+#include "ClassThumb.h"
+
+
+// return the current slider value. 
+void cegui_sldr_getCurrentValue(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// return the maximum value set for this widget 
+void cegui_sldr_getMaxValue(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// return the current click step setting for the slider. 
+void cegui_sldr_getClickStep(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Return a pointer to the ThumbSlider
+void cegui_sldr_getThumb(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Initialises the Window
+void cegui_sldr_initialiseComponents(struct hg3dclass_struct * thisclass_c);
+
+// set the maximum value for the slider. Note that the minimum value is fixed at 0. 
+void cegui_sldr_setMaxValue(struct hg3dclass_struct * thisclass_c, float maxVal_c);
+
+// set the current slider value. 
+void cegui_sldr_setCurrentValue(struct hg3dclass_struct * thisclass_c, float value_c);
+
+// set the current click step setting for the slider. 
+void cegui_sldr_setClickStep(struct hg3dclass_struct * thisclass_c, float step_c);
+
+// Slider
+void cegui_sldr_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Slider
+void cegui_sldr_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassSpinner.h b/include/ClassSpinner.h
new file mode 100644
--- /dev/null
+++ b/include/ClassSpinner.h
@@ -0,0 +1,70 @@
+// 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.
+// 
+
+// ClassSpinner.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassSpinner
+#define _DEFINED_HG3D_ClassSpinner
+
+#include "ClassPtr.h"
+#include "EnumTextInputMode.h"
+
+
+// Constructor for Spinner
+void cegui_spnnr_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for Spinner
+void cegui_spnnr_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Initialises the Window
+void cegui_spnnr_initialiseComponents(struct hg3dclass_struct * thisclass_c);
+
+// Return the current spinner value. 
+void cegui_spnnr_getCurrentValue(struct hg3dclass_struct * thisclass_c, double * result_c);
+
+// Return the current step value. 
+void cegui_spnnr_getStepSize(struct hg3dclass_struct * thisclass_c, double * result_c);
+
+// Return the current maximum limit value for the Spinner
+void cegui_spnnr_getMaximumValue(struct hg3dclass_struct * thisclass_c, double * result_c);
+
+// Return the current minimum limit value for the Spinner
+void cegui_spnnr_getMinimumValue(struct hg3dclass_struct * thisclass_c, double * result_c);
+
+// Return the current text input / display mode setting. 
+void cegui_spnnr_getTextInputMode(struct hg3dclass_struct * thisclass_c, enum EnumTextInputMode * result_c);
+
+// Set the current spinner value. 
+void cegui_spnnr_setCurrentValue(struct hg3dclass_struct * thisclass_c, double value_c);
+
+// Set the current step value. 
+void cegui_spnnr_setStepSize(struct hg3dclass_struct * thisclass_c, double step_c);
+
+// Set the spinner maximum value. 
+void cegui_spnnr_setMaximumValue(struct hg3dclass_struct * thisclass_c, double maxValue_c);
+
+// Set the spinner minimum value. 
+void cegui_spnnr_setMinimumValue(struct hg3dclass_struct * thisclass_c, double minVaue_c);
+
+// Set the spinner input / display mode. 
+void cegui_spnnr_setTextInputMode(struct hg3dclass_struct * thisclass_c, enum EnumTextInputMode mode_c);
+
+#endif 
diff --git a/include/ClassSystem.h b/include/ClassSystem.h
new file mode 100644
--- /dev/null
+++ b/include/ClassSystem.h
@@ -0,0 +1,222 @@
+// 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.
+// 
+
+// ClassSystem.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassSystem
+#define _DEFINED_HG3D_ClassSystem
+
+#include "ClassPtr.h"
+#include "ClassRenderer.h"
+#include "ClassResourceProvider.h"
+#include "ClassXMLParser.h"
+#include "ClassImageCodec.h"
+#include "ClassScriptModule.h"
+#include "ClassFont.h"
+#include "ClassWindow.h"
+#include "ClassTooltip.h"
+#include "EnumMouseButton.h"
+
+
+// Create the System
+void cegui_sstm_create(struct hg3dclass_struct * renderer_c, struct hg3dclass_struct * resourceProvider_c, struct hg3dclass_struct * xmlParser_c, struct hg3dclass_struct * imageCodec_c, struct hg3dclass_struct * scriptModule_c, char * configFile_c, char * logFile_c, struct hg3dclass_struct * result_c);
+
+// Destroy the System
+void cegui_sstm_destroy();
+
+// Return singleton System
+void cegui_sstm_getSingleton(struct hg3dclass_struct * result_c);
+
+// Return pointer to singleton System
+void cegui_sstm_getSingletonPtr(struct hg3dclass_struct * result_c);
+
+// Static member to set the name of the default XML parser module that should be used. 
+void cegui_sstm_setDefaultXMLParserName(char * parserName_c);
+
+// Return the name of the currently set default xml parser module. 
+void cegui_sstm_getDefaultXMLParserName(char * result_c);
+
+// Set the name of the default image codec to be used. 
+void cegui_sstm_setDefaultImageCodecName(char * codecName_c);
+
+// Get the name of the default image codec. 
+void cegui_sstm_getDefaultImageCodecName(char * result_c);
+
+// Return a pointer to the Renderer
+void cegui_sstm_getRenderer(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Set the default font to be used by the system. 
+void cegui_sstm_setDefaultFont(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// Set the default font to be used by the system. 
+void cegui_sstm_setDefaultFont2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * font_c);
+
+// Return a pointer to the default Font
+void cegui_sstm_getDefaultFont(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Causes a full re-draw next time renderGUI()
+void cegui_sstm_signalRedraw(struct hg3dclass_struct * thisclass_c);
+
+// Return a boolean value to indicate whether a full re-draw is requested next time renderGUI()
+void cegui_sstm_isRedrawRequested(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Render the GUI. 
+void cegui_sstm_renderGUI(struct hg3dclass_struct * thisclass_c);
+
+// Set the active GUI sheet (root) window. 
+void cegui_sstm_setGUISheet(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * sheet_c, struct hg3dclass_struct * result_c);
+
+// Return a pointer to the active GUI sheet (root) window. 
+void cegui_sstm_getGUISheet(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return the current timeout for generation of single-click events. 
+void cegui_sstm_getSingleClickTimeout(struct hg3dclass_struct * thisclass_c, double * result_c);
+
+// Return the current timeout for generation of multi-click events. 
+void cegui_sstm_getMultiClickTimeout(struct hg3dclass_struct * thisclass_c, double * result_c);
+
+// Set the timeout used for generation of single-click events. 
+void cegui_sstm_setSingleClickTimeout(struct hg3dclass_struct * thisclass_c, double timeout_c);
+
+// Set the timeout to be used for the generation of multi-click events. 
+void cegui_sstm_setMultiClickTimeout(struct hg3dclass_struct * thisclass_c, double timeout_c);
+
+// Return whether automatic mouse button click and multi-click (i.e. double-click and treble-click) event generation is enabled. 
+void cegui_sstm_isMouseClickEventGenerationEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Set whether automatic mouse button click and multi-click (i.e. double-click and treble-click) event generation will occur. 
+void cegui_sstm_setMouseClickEventGenerationEnabled(struct hg3dclass_struct * thisclass_c, const int enable_c);
+
+// Set the image to be used as the default mouse cursor. 
+void cegui_sstm_setDefaultMouseCursor3(struct hg3dclass_struct * thisclass_c, char * imageset_c, char * image_name_c);
+
+// Return the Window
+void cegui_sstm_getWindowContainingMouse(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return a pointer to the ScriptModule
+void cegui_sstm_getScriptingModule(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Set the ScriptModule
+void cegui_sstm_setScriptingModule(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * scriptModule_c);
+
+// Return a pointer to the ResourceProvider
+void cegui_sstm_getResourceProvider(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Execute a script file if possible. 
+void cegui_sstm_executeScriptFile(struct hg3dclass_struct * thisclass_c, char * filename_c, char * resourceGroup_c);
+
+// Execute a scripted global function if possible. The function should not take any parameters and should return an integer. 
+void cegui_sstm_executeScriptGlobal(struct hg3dclass_struct * thisclass_c, char * function_name_c, int * result_c);
+
+// If possible, execute script code contained in the given CEGUI::String object. 
+void cegui_sstm_executeScriptString(struct hg3dclass_struct * thisclass_c, char * str_c);
+
+// return the current mouse movement scaling factor. 
+void cegui_sstm_getMouseMoveScaling(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Set the current mouse movement scaling factor. 
+void cegui_sstm_setMouseMoveScaling(struct hg3dclass_struct * thisclass_c, float scaling_c);
+
+// Internal method used to inform the SystemSystem
+void cegui_sstm_notifyWindowDestroyed(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * window_c);
+
+// Return the current system keys value. 
+void cegui_sstm_getSystemKeys(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// Set a new XML parser module to be used. 
+void cegui_sstm_setXMLParser(struct hg3dclass_struct * thisclass_c, char * parserName_c);
+
+// Sets the XMLParser
+void cegui_sstm_setXMLParser2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * parser_c);
+
+// Return the XMLParser
+void cegui_sstm_getXMLParser(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Set the system default TooltipTooltip
+void cegui_sstm_setDefaultTooltip(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * tooltip_c);
+
+// Set the system default TooltipWindow
+void cegui_sstm_setDefaultTooltip2(struct hg3dclass_struct * thisclass_c, char * tooltipType_c);
+
+// return a poiter to the system default tooltip. May return 0. 
+void cegui_sstm_getDefaultTooltip(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Internal method to directly set the current modal target. 
+void cegui_sstm_setModalTarget(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * target_c);
+
+// Return a pointer to the Window
+void cegui_sstm_getModalTarget(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Perform updates with regards to the window that contains the mouse cursor, firing any required MouseEnters / MouseLeaves events. 
+void cegui_sstm_updateWindowContainingMouse(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Retrieve the image codec to be used by the system. 
+void cegui_sstm_getImageCodec(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Set the image codec to be used by the system. 
+void cegui_sstm_setImageCodec(struct hg3dclass_struct * thisclass_c, char * codecName_c);
+
+// Set the image codec to use from an existing image codec. 
+void cegui_sstm_setImageCodec2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * codec_c);
+
+// Invalidate all imagery and geometry caches for CEGUI
+void cegui_sstm_invalidateAllCachedRendering(struct hg3dclass_struct * thisclass_c);
+
+// Method that injects a mouse movement event into the system. 
+void cegui_sstm_injectMouseMove(struct hg3dclass_struct * thisclass_c, float delta_x_c, float delta_y_c, int * result_c);
+
+// Method that injects that the mouse has left the application window. 
+void cegui_sstm_injectMouseLeaves(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Method that injects a mouse button down event into the system. 
+void cegui_sstm_injectMouseButtonDown(struct hg3dclass_struct * thisclass_c, enum EnumMouseButton button_c, int * result_c);
+
+// Method that injects a mouse button up event into the system. 
+void cegui_sstm_injectMouseButtonUp(struct hg3dclass_struct * thisclass_c, enum EnumMouseButton button_c, int * result_c);
+
+// Method that injects a key down event into the system. 
+void cegui_sstm_injectKeyDown(struct hg3dclass_struct * thisclass_c, unsigned int key_code_c, int * result_c);
+
+// Method that injects a key up event into the system. 
+void cegui_sstm_injectKeyUp(struct hg3dclass_struct * thisclass_c, unsigned int key_code_c, int * result_c);
+
+// Method that injects a typed character event into the system. 
+void cegui_sstm_injectChar(struct hg3dclass_struct * thisclass_c, int code_point_c, int * result_c);
+
+// Method that injects a mouse-wheel / scroll-wheel event into the system. 
+void cegui_sstm_injectMouseWheelChange(struct hg3dclass_struct * thisclass_c, float delta_c, int * result_c);
+
+// Method that injects a new position for the mouse cursor. 
+void cegui_sstm_injectMousePosition(struct hg3dclass_struct * thisclass_c, float x_pos_c, float y_pos_c, int * result_c);
+
+// Method to inject time pulses into the system. 
+void cegui_sstm_injectTimePulse(struct hg3dclass_struct * thisclass_c, float timeElapsed_c, int * result_c);
+
+// Function to directly inject a mouse button click event. 
+void cegui_sstm_injectMouseButtonClick(struct hg3dclass_struct * thisclass_c, const enum EnumMouseButton button_c, int * result_c);
+
+// Function to directly inject a mouse button double-click event. 
+void cegui_sstm_injectMouseButtonDoubleClick(struct hg3dclass_struct * thisclass_c, const enum EnumMouseButton button_c, int * result_c);
+
+// Function to directly inject a mouse button triple-click event. 
+void cegui_sstm_injectMouseButtonTripleClick(struct hg3dclass_struct * thisclass_c, const enum EnumMouseButton button_c, int * result_c);
+
+#endif 
diff --git a/include/ClassSystemHG3D.h b/include/ClassSystemHG3D.h
new file mode 100644
--- /dev/null
+++ b/include/ClassSystemHG3D.h
@@ -0,0 +1,56 @@
+// 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.
+// 
+
+// ClassSystemHG3D.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassSystemHG3D
+#define _DEFINED_HG3D_ClassSystemHG3D
+
+#include "ClassPtr.h"
+#include "ClassLogger.h"
+#include "ClassDefaultResourceProvider.h"
+#include "ClassSystem.h"
+#include "ClassSchemeManager.h"
+#include "ClassFontManager.h"
+
+
+// 
+void cegui_sstm_hg3d_createNoLogger(struct hg3dclass_struct * result_c);
+
+// 
+void cegui_sstm_hg3d_getDefaultResourceProvider(struct hg3dclass_struct * system_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_sstm_hg3d_getSchemeManagerSingleton(struct hg3dclass_struct * result_c);
+
+// 
+void cegui_sstm_hg3d_schemeManagerCreate(struct hg3dclass_struct * smgr_c, char * scheme_c);
+
+// 
+void cegui_sstm_hg3d_fontManagerCreate(struct hg3dclass_struct * fmgr_c, char * font_c);
+
+// 
+void cegui_sstm_hg3d_getFontManagerSingleton(struct hg3dclass_struct * result_c);
+
+// 
+void cegui_sstm_hg3d_getLoggerSingleton(struct hg3dclass_struct * result_c);
+
+#endif 
diff --git a/include/ClassTabButton.h b/include/ClassTabButton.h
new file mode 100644
--- /dev/null
+++ b/include/ClassTabButton.h
@@ -0,0 +1,49 @@
+// 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.
+// 
+
+// ClassTabButton.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassTabButton
+#define _DEFINED_HG3D_ClassTabButton
+
+#include "ClassPtr.h"
+#include "ClassWindow.h"
+
+
+// Constructor for base TabButton
+void cegui_tbbtn_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for TabButton
+void cegui_tbbtn_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Set whether this tab button is selected or not. 
+void cegui_tbbtn_setSelected(struct hg3dclass_struct * thisclass_c, int selected_c);
+
+// Return whether this tab button is selected or not. 
+void cegui_tbbtn_isSelected(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Set the target window which is the content pane which this button is covering. 
+void cegui_tbbtn_setTargetWindow(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * wnd_c);
+
+// Get the target window which is the content pane which this button is covering. 
+void cegui_tbbtn_getTargetWindow(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+#endif 
diff --git a/include/ClassThumb.h b/include/ClassThumb.h
new file mode 100644
--- /dev/null
+++ b/include/ClassThumb.h
@@ -0,0 +1,60 @@
+// 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.
+// 
+
+// ClassThumb.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassThumb
+#define _DEFINED_HG3D_ClassThumb
+
+#include "ClassPtr.h"
+
+
+// return whether hot-tracking is enabled or not. 
+void cegui_thmb_isHotTracked(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return whether the thumb is movable on the vertical axis. 
+void cegui_thmb_isVertFree(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return whether the thumb is movable on the horizontal axis. 
+void cegui_thmb_isHorzFree(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// set whether the thumb uses hot-tracking. 
+void cegui_thmb_setHotTracked(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// set whether thumb is movable on the vertical axis. 
+void cegui_thmb_setVertFree(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// set whether thumb is movable on the horizontal axis. 
+void cegui_thmb_setHorzFree(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// set the movement range of the thumb for the vertical axis. 
+void cegui_thmb_setVertRange(struct hg3dclass_struct * thisclass_c, float min_c, float max_c);
+
+// set the movement range of the thumb for the horizontal axis. 
+void cegui_thmb_setHorzRange(struct hg3dclass_struct * thisclass_c, float min_c, float max_c);
+
+// Constructor for Thumb
+void cegui_thmb_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for Thumb
+void cegui_thmb_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassTooltip.h b/include/ClassTooltip.h
new file mode 100644
--- /dev/null
+++ b/include/ClassTooltip.h
@@ -0,0 +1,70 @@
+// 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.
+// 
+
+// ClassTooltip.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassTooltip
+#define _DEFINED_HG3D_ClassTooltip
+
+#include "ClassPtr.h"
+#include "ClassWindow.h"
+
+
+// Constructor for the Tooltip
+void cegui_tltp_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for the Tooltip
+void cegui_tltp_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Sets the target window for the tooltip. This used internally to manage tooltips, you should not have to call this yourself. 
+void cegui_tltp_setTargetWindow(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * wnd_c);
+
+// return the current target window for this Tooltip
+void cegui_tltp_getTargetWindow(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Resets the timer on the tooltip when in the Active / Inactive states. This is used internally to control the tooltip, it is not normally necessary to call this method yourself. 
+void cegui_tltp_resetTimer(struct hg3dclass_struct * thisclass_c);
+
+// Return the number of seconds the mouse should hover stationary over the target window before the tooltip gets activated. 
+void cegui_tltp_getHoverTime(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Set the number of seconds the tooltip should be displayed for before it automatically de-activates itself. 0 indicates that the tooltip should never timesout and auto-deactivate. 
+void cegui_tltp_setDisplayTime(struct hg3dclass_struct * thisclass_c, float seconds_c);
+
+// Return the number of seconds that should be taken to fade the tooltip into and out of visibility. 
+void cegui_tltp_getFadeTime(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Set the number of seconds the mouse should hover stationary over the target window before the tooltip gets activated. 
+void cegui_tltp_setHoverTime(struct hg3dclass_struct * thisclass_c, float seconds_c);
+
+// Return the number of seconds the tooltip should be displayed for before it automatically de-activates itself. 0 indicates that the tooltip never timesout and auto-deactivates. 
+void cegui_tltp_getDisplayTime(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Set the number of seconds that should be taken to fade the tooltip into and out of visibility. 
+void cegui_tltp_setFadeTime(struct hg3dclass_struct * thisclass_c, float seconds_c);
+
+// Causes the tooltip to position itself appropriately. 
+void cegui_tltp_positionSelf(struct hg3dclass_struct * thisclass_c);
+
+// Causes the tooltip to resize itself appropriately. 
+void cegui_tltp_sizeSelf(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassTree.h b/include/ClassTree.h
new file mode 100644
--- /dev/null
+++ b/include/ClassTree.h
@@ -0,0 +1,103 @@
+// 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.
+// 
+
+// ClassTree.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassTree
+#define _DEFINED_HG3D_ClassTree
+
+#include "ClassPtr.h"
+#include "ClassScrollbar.h"
+
+
+// 
+void cegui_tree_doTreeRender(struct hg3dclass_struct * thisclass_c);
+
+// 
+void cegui_tree_doScrollbars(struct hg3dclass_struct * thisclass_c);
+
+// Return number of items attached to the tree. 
+void cegui_tree_getItemCount(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return the number of selected items in the tree. 
+void cegui_tree_getSelectedCount(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return whether tree sorting is enabled 
+void cegui_tree_isSortEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void cegui_tree_getVertScrollbar(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_tree_getHorzScrollbar(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// return whether multi-select is enabled 
+void cegui_tree_isMultiselectEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// 
+void cegui_tree_isItemTooltipsEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether the vertical scroll bar is always shown. 
+void cegui_tree_isVertScrollbarAlwaysShown(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether the horizontal scroll bar is always shown. 
+void cegui_tree_isHorzScrollbarAlwaysShown(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Initialise the Window
+void cegui_tree_initialise(struct hg3dclass_struct * thisclass_c);
+
+// Remove all items from the tree. 
+void cegui_tree_resetList(struct hg3dclass_struct * thisclass_c);
+
+// Clear the selected state for all items. 
+void cegui_tree_clearAllSelections(struct hg3dclass_struct * thisclass_c);
+
+// Set whether the tree should be sorted. 
+void cegui_tree_setSortingEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether the tree should allow multiple selections or just a single selection. 
+void cegui_tree_setMultiselectEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether the vertical scroll bar should always be shown. 
+void cegui_tree_setShowVertScrollbar(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether the horizontal scroll bar should always be shown. 
+void cegui_tree_setShowHorzScrollbar(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// 
+void cegui_tree_setItemTooltipsEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set the select state of an attached TreeItem. 
+void cegui_tree_setItemSelectState2(struct hg3dclass_struct * thisclass_c, int item_index_c, int state_c);
+
+// Set the LookNFeel that shoule be used for this window. 
+void cegui_tree_setLookNFeel(struct hg3dclass_struct * thisclass_c, char * look_c);
+
+// Causes the tree to update it's internal state after changes have been made to one or more attached TreeItem objects. 
+void cegui_tree_handleUpdatedItemData(struct hg3dclass_struct * thisclass_c);
+
+// Constructor for Tree
+void cegui_tree_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for Tree
+void cegui_tree_destruct(struct hg3dclass_struct * thisclass_c);
+
+#endif 
diff --git a/include/ClassWidgetLookManager.h b/include/ClassWidgetLookManager.h
new file mode 100644
--- /dev/null
+++ b/include/ClassWidgetLookManager.h
@@ -0,0 +1,57 @@
+// 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.
+// 
+
+// ClassWidgetLookManager.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassWidgetLookManager
+#define _DEFINED_HG3D_ClassWidgetLookManager
+
+#include "ClassPtr.h"
+
+
+// Constructor. 
+void cegui_wdgtlmgr_construct(struct hg3dclass_struct * result_c);
+
+// Destructor. 
+void cegui_wdgtlmgr_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Parses a file containing window look & feel specifications (in the form of XML). 
+void cegui_wdgtlmgr_parseLookNFeelSpecification(struct hg3dclass_struct * thisclass_c, char * filename_c, char * resourceGroup_c);
+
+// Return whether a WidgetLookFeel has been created with the specified name. 
+void cegui_wdgtlmgr_isWidgetLookAvailable(struct hg3dclass_struct * thisclass_c, char * widget_c, int * result_c);
+
+// Erase the WidgetLookFeel that has the specified name. 
+void cegui_wdgtlmgr_eraseWidgetLook(struct hg3dclass_struct * thisclass_c, char * widget_c);
+
+// Return singleton WidgetLookManager
+void cegui_wdgtlmgr_getSingleton(struct hg3dclass_struct * result_c);
+
+// Return pointer to singleton WidgetLookManager
+void cegui_wdgtlmgr_getSingletonPtr(struct hg3dclass_struct * result_c);
+
+// Returns the default resource group currently set for LookNFeels. 
+void cegui_wdgtlmgr_getDefaultResourceGroup(char * result_c);
+
+// Sets the default resource group to be used when loading LookNFeel data. 
+void cegui_wdgtlmgr_setDefaultResourceGroup(char * resourceGroup_c);
+
+#endif 
diff --git a/include/ClassWindow.h b/include/ClassWindow.h
new file mode 100644
--- /dev/null
+++ b/include/ClassWindow.h
@@ -0,0 +1,489 @@
+// 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.
+// 
+
+// ClassWindow.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassWindow
+#define _DEFINED_HG3D_ClassWindow
+
+#include "ClassPtr.h"
+#include "ClassFont.h"
+#include "ClassTooltip.h"
+#include "EnumVerticalAlignment.h"
+#include "EnumHorizontalAlignment.h"
+#include "ClassDragContainer.h"
+#include "EnumWindowUpdateMode.h"
+
+
+// Constructor for Window
+void cegui_wnd_construct(char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destructor for Window
+void cegui_wnd_destruct(struct hg3dclass_struct * thisclass_c);
+
+// return a String object holding the type name for this Window
+void cegui_wnd_getType(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// return a String object holding the name of this Window
+void cegui_wnd_getName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// returns whether or not this Window
+void cegui_wnd_isDestroyedByParent(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// returns whether or not this WindowWindow
+void cegui_wnd_isAlwaysOnTop(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return whether the Window
+void cegui_wnd_isDisabled(struct hg3dclass_struct * thisclass_c, int localOnly_c, int * result_c);
+
+// return true if the Window
+void cegui_wnd_isVisible(struct hg3dclass_struct * thisclass_c, int localOnly_c, int * result_c);
+
+// return true if this is the active Window
+void cegui_wnd_isActive(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return true if this WindowWindow
+void cegui_wnd_isClippedByParent(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return the ID code currently assigned to this Window
+void cegui_wnd_getID(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
+
+// return the number of child WindowWindow
+void cegui_wnd_getChildCount(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// returns whether a WindowWindow
+void cegui_wnd_isChild(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// returns whether at least one window with the given ID code is attached to this Window
+void cegui_wnd_isChild2(struct hg3dclass_struct * thisclass_c, unsigned int ID_c, int * result_c);
+
+// returns whether at least one window with the given ID code is attached to this Window
+void cegui_wnd_isChildRecursive(struct hg3dclass_struct * thisclass_c, unsigned int ID_c, int * result_c);
+
+// return true if the given Window
+void cegui_wnd_isChild3(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * window_c, int * result_c);
+
+// return a pointer to the child window with the specified name. 
+void cegui_wnd_getChild(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// return a pointer to the first attached child window with the specified ID value. 
+void cegui_wnd_getChild2(struct hg3dclass_struct * thisclass_c, unsigned int ID_c, struct hg3dclass_struct * result_c);
+
+// return a pointer to the first attached child window with the specified name. Children are traversed recursively. 
+void cegui_wnd_getChildRecursive(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// return a pointer to the first attached child window with the specified ID value. Children are traversed recursively. 
+void cegui_wnd_getChildRecursive2(struct hg3dclass_struct * thisclass_c, unsigned int ID_c, struct hg3dclass_struct * result_c);
+
+// return a pointer to the child window that is attached to 'this' at the given index. 
+void cegui_wnd_getChildAtIdx(struct hg3dclass_struct * thisclass_c, int idx_c, struct hg3dclass_struct * result_c);
+
+// return a pointer to the WindowWindow
+void cegui_wnd_getActiveChild(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_wnd_getActiveChild2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// return true if the specified WindowWindow
+void cegui_wnd_isAncestor(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// return true if any WindowWindow
+void cegui_wnd_isAncestor2(struct hg3dclass_struct * thisclass_c, unsigned int ID_c, int * result_c);
+
+// return true if the specified WindowWindow
+void cegui_wnd_isAncestor3(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * window_c, int * result_c);
+
+// return the active FontWindow
+void cegui_wnd_getFont(struct hg3dclass_struct * thisclass_c, int useDefault_c, struct hg3dclass_struct * result_c);
+
+// return the current text for the Window
+void cegui_wnd_getText(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// return text string with visual
+void cegui_wnd_getTextVisual(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// return true if the Window
+void cegui_wnd_inheritsAlpha(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return the current alpha value set for this Window
+void cegui_wnd_getAlpha(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// return the effective alpha value that will be used when rendering this window, taking into account inheritance of parent window(s) alpha. 
+void cegui_wnd_getEffectiveAlpha(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// return true if this Window
+void cegui_wnd_isCapturedByThis(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return true if an ancestor window has captured inputs. 
+void cegui_wnd_isCapturedByAncestor(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return true if a child window has captured inputs. 
+void cegui_wnd_isCapturedByChild(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// return the parent of this Window
+void cegui_wnd_getParent(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return whether this window is set to restore old input capture when it loses input capture. 
+void cegui_wnd_restoresOldCapture(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether z-order changes are enabled or disabled for this Window
+void cegui_wnd_isZOrderingEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether this window will receive multi-click events or multiple 'down' events instead. 
+void cegui_wnd_wantsMultiClickEvents(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether mouse button down event autorepeat is enabled for this window. 
+void cegui_wnd_isMouseAutoRepeatEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return the current auto-repeat delay setting for this window. 
+void cegui_wnd_getAutoRepeatDelay(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Return the current auto-repeat rate setting for this window. 
+void cegui_wnd_getAutoRepeatRate(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Return whether the window wants inputs passed to its attached child windows when the window has inputs captured. 
+void cegui_wnd_distributesCapturedInputs(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether this WindowTooltipTooltip
+void cegui_wnd_isUsingDefaultTooltip(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return a pointer to the TooltipWindowTooltipWindowTooltip
+void cegui_wnd_getTooltip(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return the custom tooltip type. 
+void cegui_wnd_getTooltipType(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// Return the current tooltip text set for this Window
+void cegui_wnd_getTooltipText(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// Return whether this window inherits Tooltip
+void cegui_wnd_inheritsTooltipText(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether this window will rise to the top of the z-order when clicked with the left mouse button. 
+void cegui_wnd_isRiseOnClickEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether this window was inherited from the given class name at some point in the inheritance hierarchy. 
+void cegui_wnd_testClassName(struct hg3dclass_struct * thisclass_c, char * class_name_c, int * result_c);
+
+// Get the vertical alignment. 
+void cegui_wnd_getVerticalAlignment(struct hg3dclass_struct * thisclass_c, enum EnumVerticalAlignment * result_c);
+
+// Get the horizontal alignment. 
+void cegui_wnd_getHorizontalAlignment(struct hg3dclass_struct * thisclass_c, enum EnumHorizontalAlignment * result_c);
+
+// Get the name of the LookNFeel assigned to this window. 
+void cegui_wnd_getLookNFeel(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// Get whether or not this Window
+void cegui_wnd_getModalState(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Returns a named user string. 
+void cegui_wnd_getUserString(struct hg3dclass_struct * thisclass_c, char * name_c, char * result_c);
+
+// Return whether a user string with the specified name exists. 
+void cegui_wnd_isUserStringDefined(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// Returns the active sibling window. 
+void cegui_wnd_getActiveSibling(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return the pixel Width of the parent element. This always returns a valid number. 
+void cegui_wnd_getParentPixelWidth(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Return the pixel Height of the parent element. This always returns a valid number. 
+void cegui_wnd_getParentPixelHeight(struct hg3dclass_struct * thisclass_c, float * result_c);
+
+// Returns whether this window should ignore mouse event and pass them through to and other windows behind it. In effect making the window transparent to the mouse. 
+void cegui_wnd_isMousePassThroughEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Returns whether this window is an auto-child window. All auto-child windows have "__auto_" in their name, but this is faster. 
+void cegui_wnd_isAutoWindow(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Returns whether this window is allowed to write XML. 
+void cegui_wnd_isWritingXMLAllowed(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Returns whether this Window
+void cegui_wnd_isDragDropTarget(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Returns whether automatic
+void cegui_wnd_isUsingAutoRenderingSurface(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Returns the window at the root of the hierarchy starting at this Window
+void cegui_wnd_getRootWindow(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_wnd_getRootWindow2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * result_c);
+
+// Return whether the Window
+void cegui_wnd_isNonClientWindow(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Renames the window. 
+void cegui_wnd_rename(struct hg3dclass_struct * thisclass_c, char * new_name_c);
+
+// Initialises the Window
+void cegui_wnd_initialiseComponents(struct hg3dclass_struct * thisclass_c);
+
+// Set whether or not this WindowWindow
+void cegui_wnd_setDestroyedByParent(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether this window is always on top, or not. 
+void cegui_wnd_setAlwaysOnTop(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether this window is enabled or disabled. A disabled window normally can not be interacted with, and may have different rendering. 
+void cegui_wnd_setEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// enable the Window
+void cegui_wnd_enable(struct hg3dclass_struct * thisclass_c);
+
+// disable the Window
+void cegui_wnd_disable(struct hg3dclass_struct * thisclass_c);
+
+// Set whether the Window
+void cegui_wnd_setVisible(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// show the Window
+void cegui_wnd_show(struct hg3dclass_struct * thisclass_c);
+
+// hide the Window
+void cegui_wnd_hide(struct hg3dclass_struct * thisclass_c);
+
+// Activate the WindowWindow
+void cegui_wnd_activate(struct hg3dclass_struct * thisclass_c);
+
+// Deactivate the window. No further inputs will be received by the window until it is re-activated either programmatically or by the user interacting with the gui. 
+void cegui_wnd_deactivate(struct hg3dclass_struct * thisclass_c);
+
+// Set whether this Window
+void cegui_wnd_setClippedByParent(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set the current ID for the Window
+void cegui_wnd_setID(struct hg3dclass_struct * thisclass_c, unsigned int ID_c);
+
+// Set the current text string for the Window
+void cegui_wnd_setText(struct hg3dclass_struct * thisclass_c, char * text_c);
+
+// Append the string textWindow
+void cegui_wnd_appendText(struct hg3dclass_struct * thisclass_c, char * text_c);
+
+// Set the font used by this Window
+void cegui_wnd_setFont(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * font_c);
+
+// Set the font used by this Window
+void cegui_wnd_setFont2(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// Add the named WindowWindowWindownameWindowWindow
+void cegui_wnd_addChildWindow(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// Add the specified WindowWindowWindowwindowWindowWindow
+void cegui_wnd_addChildWindow2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * window_c);
+
+// Remove the named Window
+void cegui_wnd_removeChildWindow(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// Remove the specified Window
+void cegui_wnd_removeChildWindow2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * window_c);
+
+// Remove the first child WindowWindow
+void cegui_wnd_removeChildWindow3(struct hg3dclass_struct * thisclass_c, unsigned int ID_c);
+
+// Move the Window
+void cegui_wnd_moveToFront(struct hg3dclass_struct * thisclass_c);
+
+// Move the Window
+void cegui_wnd_moveToBack(struct hg3dclass_struct * thisclass_c);
+
+// Captures input to this window. 
+void cegui_wnd_captureInput(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Releases input capture from this WindowWindow
+void cegui_wnd_releaseInput(struct hg3dclass_struct * thisclass_c);
+
+// Set whether this window will remember and restore the previous window that had inputs captured. 
+void cegui_wnd_setRestoreCapture(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set the current alpha value for this window. 
+void cegui_wnd_setAlpha(struct hg3dclass_struct * thisclass_c, float alpha_c);
+
+// Sets whether this Window
+void cegui_wnd_setInheritsAlpha(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Invalidate this window causing at least this window to be redrawn during the next rendering pass. 
+void cegui_wnd_invalidate(struct hg3dclass_struct * thisclass_c);
+
+// Invalidate this window and - dependant upon recursive
+void cegui_wnd_invalidate2(struct hg3dclass_struct * thisclass_c, const int recursive_c);
+
+// Set the mouse cursor image to be used when the mouse enters this window. 
+void cegui_wnd_setMouseCursor3(struct hg3dclass_struct * thisclass_c, char * imageset_c, char * image_name_c);
+
+// Set whether z-order changes are enabled or disabled for this Window
+void cegui_wnd_setZOrderingEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether this window will receive multi-click events or multiple 'down' events instead. 
+void cegui_wnd_setWantsMultiClickEvents(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether mouse button down event autorepeat is enabled for this window. 
+void cegui_wnd_setMouseAutoRepeatEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set the current auto-repeat delay setting for this window. 
+void cegui_wnd_setAutoRepeatDelay(struct hg3dclass_struct * thisclass_c, float delay_c);
+
+// Set the current auto-repeat rate setting for this window. 
+void cegui_wnd_setAutoRepeatRate(struct hg3dclass_struct * thisclass_c, float rate_c);
+
+// Set whether the window wants inputs passed to its attached child windows when the window has inputs captured. 
+void cegui_wnd_setDistributesCapturedInputs(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Internal support method for drag & drop. You do not normally call this directly from client code. See the DragContainer
+void cegui_wnd_notifyDragDropItemEnters(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c);
+
+// Internal support method for drag & drop. You do not normally call this directly from client code. See the DragContainer
+void cegui_wnd_notifyDragDropItemLeaves(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c);
+
+// Internal support method for drag & drop. You do not normally call this directly from client code. See the DragContainer
+void cegui_wnd_notifyDragDropItemDropped(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * item_c);
+
+// Internal destroy method which actually just adds the window and any parent destructed child windows to the dead pool. 
+void cegui_wnd_destroy(struct hg3dclass_struct * thisclass_c);
+
+// Set the custom TooltipWindowWindowTooltip
+void cegui_wnd_setTooltip(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * tooltip_c);
+
+// Set the custom TooltipWindowWindow
+void cegui_wnd_setTooltipType(struct hg3dclass_struct * thisclass_c, char * tooltipType_c);
+
+// Set the tooltip text for this window. 
+void cegui_wnd_setTooltipText(struct hg3dclass_struct * thisclass_c, char * tip_c);
+
+// Set whether this window inherits Tooltip
+void cegui_wnd_setInheritsTooltipText(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether this window will rise to the top of the z-order when clicked with the left mouse button. 
+void cegui_wnd_setRiseOnClickEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set the vertical alignment. 
+void cegui_wnd_setVerticalAlignment(struct hg3dclass_struct * thisclass_c, const enum EnumVerticalAlignment alignment_c);
+
+// Set the horizontal alignment. 
+void cegui_wnd_setHorizontalAlignment(struct hg3dclass_struct * thisclass_c, const enum EnumHorizontalAlignment alignment_c);
+
+// Set the LookNFeel that shoule be used for this window. 
+void cegui_wnd_setLookNFeel(struct hg3dclass_struct * thisclass_c, char * look_c);
+
+// Set the modal state for this Window
+void cegui_wnd_setModalState(struct hg3dclass_struct * thisclass_c, int state_c);
+
+// method called to perform extended laying out of attached child windows. 
+void cegui_wnd_performChildWindowLayout(struct hg3dclass_struct * thisclass_c);
+
+// 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);
+
+// Causes the Window
+void cegui_wnd_render(struct hg3dclass_struct * thisclass_c);
+
+// Cause window to update itself and any attached children. Client code does not need to call this method; to ensure full, and proper updates, call the injectTimePulse methodname method provided by the System
+void cegui_wnd_update(struct hg3dclass_struct * thisclass_c, float elapsed_c);
+
+// Sets the internal 'initialising' flag to true. This can be use to optimize initialisation of some widgets, and is called automatically by the layout XML handler when it has created a window. That is just after the window has been created, but before any children or properties are read. 
+void cegui_wnd_beginInitialisation(struct hg3dclass_struct * thisclass_c);
+
+// Sets the internal 'initialising' flag to false. This is called automatically by the layout XML handler when it is done creating a window. That is after all properties and children have been loaded and just before the next sibling gets created. 
+void cegui_wnd_endInitialisation(struct hg3dclass_struct * thisclass_c);
+
+// Sets whether this window should ignore mouse events and pass them through to any windows behind it. In effect making the window transparent to the mouse. 
+void cegui_wnd_setMousePassThroughEnabled(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Assign the WindowRenderer to specify the Look'N'Feel specification to be used. 
+void cegui_wnd_setWindowRenderer(struct hg3dclass_struct * thisclass_c, char * name_c);
+
+// Get the factory name of the currently assigned WindowRenderer. (Look'N'Feel specification). 
+void cegui_wnd_getWindowRendererName(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+// Sets whether this window is allowed to write XML. 
+void cegui_wnd_setWritingXMLAllowed(struct hg3dclass_struct * thisclass_c, int allow_c);
+
+// Inform the window, and optionally all children, that screen area rectangles have changed. 
+void cegui_wnd_notifyScreenAreaChanged(struct hg3dclass_struct * thisclass_c, int recursive_c);
+
+// Changes the widget's falagard type, thus changing its look'n'feel and optionally its renderer in the process. 
+void cegui_wnd_setFalagardType(struct hg3dclass_struct * thisclass_c, char * type_c, char * rendererType_c);
+
+// Specifies whether this Window
+void cegui_wnd_setDragDropTarget(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Invalidate the chain of rendering surfaces from this window backwards to ensure they get properly redrawn - but doing the minimum amount of work possibe - next render. 
+void cegui_wnd_invalidateRenderingSurface(struct hg3dclass_struct * thisclass_c);
+
+// Sets whether automatic
+void cegui_wnd_setUsingAutoRenderingSurface(struct hg3dclass_struct * thisclass_c, int setting_c);
+
+// Set whether the Window
+void cegui_wnd_setNonClientWindow(struct hg3dclass_struct * thisclass_c, const int setting_c);
+
+// return whether text parsing is enabled for this window. 
+void cegui_wnd_isTextParsingEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// set whether text parsing is enabled for this window. 
+void cegui_wnd_setTextParsingEnabled(struct hg3dclass_struct * thisclass_c, const int setting_c);
+
+// Add the named property to the XML ban list for this window. 
+void cegui_wnd_banPropertyFromXML(struct hg3dclass_struct * thisclass_c, char * property_name_c);
+
+// Remove the named property from the XML ban list for this window. 
+void cegui_wnd_unbanPropertyFromXML(struct hg3dclass_struct * thisclass_c, char * property_name_c);
+
+// Return whether the named property is banned from XML. 
+void cegui_wnd_isPropertyBannedFromXML(struct hg3dclass_struct * thisclass_c, char * property_name_c, int * result_c);
+
+// Set the window update mode. This mode controls the behaviour of the Window::update
+void cegui_wnd_setUpdateMode(struct hg3dclass_struct * thisclass_c, const enum EnumWindowUpdateMode mode_c);
+
+// Return the current window update mode that is set for this WindowWindow::update
+void cegui_wnd_getUpdateMode(struct hg3dclass_struct * thisclass_c, enum EnumWindowUpdateMode * result_c);
+
+// Set whether mouse input that is not directly handled by this WindowWindow
+void cegui_wnd_setMouseInputPropagationEnabled(struct hg3dclass_struct * thisclass_c, const int enabled_c);
+
+// Return whether mouse input that is not directly handled by this WindowWindow
+void cegui_wnd_isMouseInputPropagationEnabled(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Clones this Window
+void cegui_wnd_clone(struct hg3dclass_struct * thisclass_c, char * newName_c, const int deepCopy_c, struct hg3dclass_struct * result_c);
+
+// copies this widget's properties to given target widget 
+void cegui_wnd_clonePropertiesTo(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * target_c);
+
+// copies this widget's child widgets to given target widget 
+void cegui_wnd_cloneChildWidgetsTo(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * target_c);
+
+// Return the (visual) z index of the window on it's parent. 
+void cegui_wnd_getZIndex(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Return whether /a this Window
+void cegui_wnd_isInFront(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * wnd_c, int * result_c);
+
+// Return whether /a this Window
+void cegui_wnd_isBehind(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * wnd_c, int * result_c);
+
+// return the Window
+void cegui_wnd_getCaptureWindow(struct hg3dclass_struct * result_c);
+
+#endif 
diff --git a/include/ClassWindowManager.h b/include/ClassWindowManager.h
new file mode 100644
--- /dev/null
+++ b/include/ClassWindowManager.h
@@ -0,0 +1,88 @@
+// 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.
+// 
+
+// ClassWindowManager.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassWindowManager
+#define _DEFINED_HG3D_ClassWindowManager
+
+#include "ClassPtr.h"
+#include "ClassWindow.h"
+
+
+// Constructs a new WindowManager
+void cegui_wmgr_construct(struct hg3dclass_struct * result_c);
+
+// Destructor for WindowManager
+void cegui_wmgr_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Creates a new Window
+void cegui_wmgr_createWindow(struct hg3dclass_struct * thisclass_c, char * type_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Destroy the specified Window
+void cegui_wmgr_destroyWindow(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * window_c);
+
+// Destroy the specified Window
+void cegui_wmgr_destroyWindow2(struct hg3dclass_struct * thisclass_c, char * window_c);
+
+// Return a pointer to the specified Window
+void cegui_wmgr_getWindow(struct hg3dclass_struct * thisclass_c, char * name_c, struct hg3dclass_struct * result_c);
+
+// Examines the list of Window
+void cegui_wmgr_isWindowPresent(struct hg3dclass_struct * thisclass_c, char * name_c, int * result_c);
+
+// Destroys all Window
+void cegui_wmgr_destroyAllWindows(struct hg3dclass_struct * thisclass_c);
+
+// Return whether the window dead pool is empty. 
+void cegui_wmgr_isDeadPoolEmpty(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Permanently destroys any windows placed in the dead pool. 
+void cegui_wmgr_cleanDeadPool(struct hg3dclass_struct * thisclass_c);
+
+// Save a full XML window layout, starting at the given Window
+void cegui_wmgr_saveWindowLayout(struct hg3dclass_struct * thisclass_c, char * window_c, char * filename_c, const int writeParent_c);
+
+// Save a full XML window layout, starting at the given Window
+void cegui_wmgr_saveWindowLayout2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * window_c, char * filename_c, const int writeParent_c);
+
+// Rename a window. 
+void cegui_wmgr_renameWindow(struct hg3dclass_struct * thisclass_c, char * window_c, char * new_name_c);
+
+// Rename a window. 
+void cegui_wmgr_renameWindow2(struct hg3dclass_struct * thisclass_c, struct hg3dclass_struct * window_c, char * new_name_c);
+
+// Put WindowManager
+void cegui_wmgr_lock(struct hg3dclass_struct * thisclass_c);
+
+// Put WindowManager
+void cegui_wmgr_unlock(struct hg3dclass_struct * thisclass_c);
+
+// Returns whether WindowManager
+void cegui_wmgr_isLocked(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Returns the default resource group currently set for layouts. 
+void cegui_wmgr_getDefaultResourceGroup(char * result_c);
+
+// Sets the default resource group to be used when loading layouts. 
+void cegui_wmgr_setDefaultResourceGroup(char * resourceGroup_c);
+
+#endif 
diff --git a/include/ClassWindowManagerHG3D.h b/include/ClassWindowManagerHG3D.h
new file mode 100644
--- /dev/null
+++ b/include/ClassWindowManagerHG3D.h
@@ -0,0 +1,44 @@
+// 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.
+// 
+
+// ClassWindowManagerHG3D.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassWindowManagerHG3D
+#define _DEFINED_HG3D_ClassWindowManagerHG3D
+
+#include "ClassPtr.h"
+#include "ClassWindow.h"
+#include "ClassWindowManager.h"
+
+
+// 
+void cegui_wmgr_hg3d_construct(struct hg3dclass_struct * result_c);
+
+// 
+void cegui_wmgr_hg3d_destruct(struct hg3dclass_struct * thisclass_c);
+
+// 
+void cegui_wmgr_hg3d_loadWindowLayoutHG3D(struct hg3dclass_struct * thisclass_c, char * filename_c, char * name_prefix_c, struct hg3dclass_struct * result_c);
+
+// 
+void cegui_wmgr_hg3d_getSingleton(struct hg3dclass_struct * result_c);
+
+#endif 
diff --git a/include/ClassXMLParser.h b/include/ClassXMLParser.h
new file mode 100644
--- /dev/null
+++ b/include/ClassXMLParser.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.
+// 
+
+// ClassXMLParser.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassXMLParser
+#define _DEFINED_HG3D_ClassXMLParser
+
+#include "ClassPtr.h"
+
+
+// XMLParser
+void cegui_xmlprs_destruct(struct hg3dclass_struct * thisclass_c);
+
+// Initialises the XMLParser
+void cegui_xmlprs_initialise(struct hg3dclass_struct * thisclass_c, int * result_c);
+
+// Cleans up the XMLParser
+void cegui_xmlprs_cleanup(struct hg3dclass_struct * thisclass_c);
+
+// Return identification string for the XML parser module. If the internal id string has not been set by the XML parser module creator, a generic string of "Unknown XML parser" will be returned. 
+void cegui_xmlprs_getIdentifierString(struct hg3dclass_struct * thisclass_c, char * result_c);
+
+#endif 
diff --git a/include/EnumBlendMode.h b/include/EnumBlendMode.h
new file mode 100644
--- /dev/null
+++ b/include/EnumBlendMode.h
@@ -0,0 +1,34 @@
+// 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.
+// 
+
+// EnumBlendMode.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumBlendMode
+#define _DEFINED_HG3D_EnumBlendMode
+
+
+enum EnumBlendMode
+{
+  BM_INVALID, // Invalid mode indicator. 
+  BM_NORMAL, // Use normal blending mode. 
+  BM_RTT_PREMULTIPLIED // Use blending mode suitable for textures with premultiplied colours. 
+};
+#endif 
diff --git a/include/EnumFWSizingLocation.h b/include/EnumFWSizingLocation.h
new file mode 100644
--- /dev/null
+++ b/include/EnumFWSizingLocation.h
@@ -0,0 +1,40 @@
+// 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.
+// 
+
+// EnumFWSizingLocation.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumFWSizingLocation
+#define _DEFINED_HG3D_EnumFWSizingLocation
+
+
+enum EnumFWSizingLocation
+{
+  SizingNone, // Position is not a sizing location. 
+  SizingTopLeft, // Position will size from the top-left. 
+  SizingTopRight, // Position will size from the top-right. 
+  SizingBottomLeft, // Position will size from the bottom left. 
+  SizingBottomRight, // Position will size from the bottom right. 
+  SizingTop, // Position will size from the top. 
+  SizingLeft, // Position will size from the left. 
+  SizingBottom, // Position will size from the bottom. 
+  SizingRight // Position will size from the right. 
+};
+#endif 
diff --git a/include/EnumHorizontalAlignment.h b/include/EnumHorizontalAlignment.h
new file mode 100644
--- /dev/null
+++ b/include/EnumHorizontalAlignment.h
@@ -0,0 +1,34 @@
+// 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.
+// 
+
+// EnumHorizontalAlignment.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumHorizontalAlignment
+#define _DEFINED_HG3D_EnumHorizontalAlignment
+
+
+enum EnumHorizontalAlignment
+{
+  HA_LEFT, // 
+  HA_CENTRE, // 
+  HA_RIGHT // 
+};
+#endif 
diff --git a/include/EnumKeyScan.h b/include/EnumKeyScan.h
new file mode 100644
--- /dev/null
+++ b/include/EnumKeyScan.h
@@ -0,0 +1,175 @@
+// 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.
+// 
+
+// EnumKeyScan.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumKeyScan
+#define _DEFINED_HG3D_EnumKeyScan
+
+
+enum EnumKeyScan
+{
+  KeyEscape = 0x01, // 
+  KeyOne = 0x02, // 
+  KeyTwo = 0x03, // 
+  KeyThree = 0x04, // 
+  KeyFour = 0x05, // 
+  KeyFive = 0x06, // 
+  KeySix = 0x07, // 
+  KeySeven = 0x08, // 
+  KeyEight = 0x09, // 
+  KeyNine = 0x0A, // 
+  KeyZero = 0x0B, // 
+  KeyMinus = 0x0C, // 
+  KeyEquals = 0x0D, // 
+  KeyBackspace = 0x0E, // 
+  KeyTab = 0x0F, // 
+  KeyQ = 0x10, // 
+  KeyW = 0x11, // 
+  KeyE = 0x12, // 
+  KeyR = 0x13, // 
+  KeyT = 0x14, // 
+  KeyY = 0x15, // 
+  KeyU = 0x16, // 
+  KeyI = 0x17, // 
+  KeyO = 0x18, // 
+  KeyP = 0x19, // 
+  KeyLeftBracket = 0x1A, // 
+  KeyRightBracket = 0x1B, // 
+  KeyReturn = 0x1C, // 
+  KeyLeftControl = 0x1D, // 
+  KeyA = 0x1E, // 
+  KeyS = 0x1F, // 
+  KeyD = 0x20, // 
+  KeyF = 0x21, // 
+  KeyG = 0x22, // 
+  KeyH = 0x23, // 
+  KeyJ = 0x24, // 
+  KeyK = 0x25, // 
+  KeyL = 0x26, // 
+  KeySemicolon = 0x27, // 
+  KeyApostrophe = 0x28, // 
+  KeyGrave = 0x29, // 
+  KeyLeftShift = 0x2A, // 
+  KeyBackslash = 0x2B, // 
+  KeyZ = 0x2C, // 
+  KeyX = 0x2D, // 
+  KeyC = 0x2E, // 
+  KeyV = 0x2F, // 
+  KeyB = 0x30, // 
+  KeyN = 0x31, // 
+  KeyM = 0x32, // 
+  KeyComma = 0x33, // 
+  KeyPeriod = 0x34, // 
+  KeySlash = 0x35, // 
+  KeyRightShift = 0x36, // 
+  KeyMultiply = 0x37, // 
+  KeyLeftAlt = 0x38, // 
+  KeySpace = 0x39, // 
+  KeyCapital = 0x3A, // 
+  KeyF1 = 0x3B, // 
+  KeyF2 = 0x3C, // 
+  KeyF3 = 0x3D, // 
+  KeyF4 = 0x3E, // 
+  KeyF5 = 0x3F, // 
+  KeyF6 = 0x40, // 
+  KeyF7 = 0x41, // 
+  KeyF8 = 0x42, // 
+  KeyF9 = 0x43, // 
+  KeyF10 = 0x44, // 
+  KeyNumLock = 0x45, // 
+  KeyScrollLock = 0x46, // 
+  KeyNumpad7 = 0x47, // 
+  KeyNumpad8 = 0x48, // 
+  KeyNumpad9 = 0x49, // 
+  KeySubtract = 0x4A, // 
+  KeyNumpad4 = 0x4B, // 
+  KeyNumpad5 = 0x4C, // 
+  KeyNumpad6 = 0x4D, // 
+  KeyAdd = 0x4E, // 
+  KeyNumpad1 = 0x4F, // 
+  KeyNumpad2 = 0x50, // 
+  KeyNumpad3 = 0x51, // 
+  KeyNumpad0 = 0x52, // 
+  KeyDecimal = 0x53, // 
+  KeyOEM_102 = 0x56, // 
+  KeyF11 = 0x57, // 
+  KeyF12 = 0x58, // 
+  KeyF13 = 0x64, // 
+  KeyF14 = 0x65, // 
+  KeyF15 = 0x66, // 
+  KeyKana = 0x70, // 
+  KeyABNT_C1 = 0x73, // 
+  KeyConvert = 0x79, // 
+  KeyNoConvert = 0x7B, // 
+  KeyYen = 0x7D, // 
+  KeyABNT_C2 = 0x7E, // 
+  KeyNumpadEquals = 0x8D, // 
+  KeyPrevTrack = 0x90, // 
+  KeyAt = 0x91, // 
+  KeyColon = 0x92, // 
+  KeyUnderline = 0x93, // 
+  KeyKanji = 0x94, // 
+  KeyStop = 0x95, // 
+  KeyAX = 0x96, // 
+  KeyUnlabeled = 0x97, // 
+  KeyNextTrack = 0x99, // 
+  KeyNumpadEnter = 0x9C, // 
+  KeyRightControl = 0x9D, // 
+  KeyMute = 0xA0, // 
+  KeyCalculator = 0xA1, // 
+  KeyPlayPause = 0xA2, // 
+  KeyMediaStop = 0xA4, // 
+  KeyVolumeDown = 0xAE, // 
+  KeyVolumeUp = 0xB0, // 
+  KeyWebHome = 0xB2, // 
+  KeyNumpadComma = 0xB3, // 
+  KeyDivide = 0xB5, // 
+  KeySysRq = 0xB7, // 
+  KeyRightAlt = 0xB8, // 
+  KeyPause = 0xC5, // 
+  KeyHome = 0xC7, // 
+  KeyArrowUp = 0xC8, // 
+  KeyPageUp = 0xC9, // 
+  KeyArrowLeft = 0xCB, // 
+  KeyArrowRight = 0xCD, // 
+  KeyEnd = 0xCF, // 
+  KeyArrowDown = 0xD0, // 
+  KeyPageDown = 0xD1, // 
+  KeyInsert = 0xD2, // 
+  KeyDelete = 0xD3, // 
+  KeyLeftWindows = 0xDB, // 
+  KeyRightWindows = 0xDC, // 
+  KeyAppMenu = 0xDD, // 
+  KeyPower = 0xDE, // 
+  KeySleep = 0xDF, // 
+  KeyWake = 0xE3, // 
+  KeyWebSearch = 0xE5, // 
+  KeyWebFavorites = 0xE6, // 
+  KeyWebRefresh = 0xE7, // 
+  KeyWebStop = 0xE8, // 
+  KeyWebForward = 0xE9, // 
+  KeyWebBack = 0xEA, // 
+  KeyMyComputer = 0xEB, // 
+  KeyMail = 0xEC, // 
+  KeyMediaSelect = 0xED // 
+};
+#endif 
diff --git a/include/EnumLoggingLevel.h b/include/EnumLoggingLevel.h
new file mode 100644
--- /dev/null
+++ b/include/EnumLoggingLevel.h
@@ -0,0 +1,36 @@
+// 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.
+// 
+
+// EnumLoggingLevel.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumLoggingLevel
+#define _DEFINED_HG3D_EnumLoggingLevel
+
+
+enum EnumLoggingLevel
+{
+  LoggingLevelErrors, // Only actual error conditions will be logged. 
+  LoggingLevelWarnings, // Warnings will be logged as well. 
+  LoggingLevelStandard, // Basic events will be logged (default level). 
+  LoggingLevelInformative, // Useful tracing (object creations etc) information will be logged. 
+  LoggingLevelInsane // Mostly everything gets logged (use for heavy tracing only, log WILL be big). 
+};
+#endif 
diff --git a/include/EnumMouseButton.h b/include/EnumMouseButton.h
new file mode 100644
--- /dev/null
+++ b/include/EnumMouseButton.h
@@ -0,0 +1,38 @@
+// 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.
+// 
+
+// EnumMouseButton.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumMouseButton
+#define _DEFINED_HG3D_EnumMouseButton
+
+
+enum EnumMouseButton
+{
+  MouseLeftButton, // The left mouse button. 
+  MouseRightButton, // The right mouse button. 
+  MouseMiddleButton, // The middle mouse button. 
+  MouseX1Button, // The first 'extra' mouse button. 
+  MouseX2Button, // The second 'extra' mouse button. 
+  MouseMouseButtonCount, // Value that equals the number of mouse buttons supported by CEGUI
+  MouseNoButton // Value set for no mouse button. NB: This is not 0, do not assume! 
+};
+#endif 
diff --git a/include/EnumQuadSplitMode.h b/include/EnumQuadSplitMode.h
new file mode 100644
--- /dev/null
+++ b/include/EnumQuadSplitMode.h
@@ -0,0 +1,33 @@
+// 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.
+// 
+
+// EnumQuadSplitMode.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumQuadSplitMode
+#define _DEFINED_HG3D_EnumQuadSplitMode
+
+
+enum EnumQuadSplitMode
+{
+  TopLeftToBottomRight, // Diagonal split goes from top-left to bottom-right. 
+  BottomLeftToTopRight // Diagonal split goes from bottom-left to top-right. 
+};
+#endif 
diff --git a/include/EnumSelectionMode.h b/include/EnumSelectionMode.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSelectionMode.h
@@ -0,0 +1,41 @@
+// 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.
+// 
+
+// EnumSelectionMode.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSelectionMode
+#define _DEFINED_HG3D_EnumSelectionMode
+
+
+enum EnumSelectionMode
+{
+  SelectionModeRowSingle, // 
+  SelectionModeRowMultiple, // 
+  SelectionModeCellSingle, // 
+  SelectionModeCellMultiple, // 
+  SelectionModeNominatedColumnSingle, // 
+  SelectionModeNominatedColumnMultiple, // 
+  SelectionModeColumnSingle, // 
+  SelectionModeColumnMultiple, // 
+  SelectionModeNominatedRowSingle, // 
+  SelectionModeNominatedRowMultiple // 
+};
+#endif 
diff --git a/include/EnumSortDirection.h b/include/EnumSortDirection.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSortDirection.h
@@ -0,0 +1,34 @@
+// 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.
+// 
+
+// EnumSortDirection.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSortDirection
+#define _DEFINED_HG3D_EnumSortDirection
+
+
+enum EnumSortDirection
+{
+  SortDirectionNone, // Items under this segment should not be sorted. 
+  SortDirectionAscending, // Items under this segment should be sorted in ascending order. 
+  SortDirectionDescending // Items under this segment should be sorted in descending order. 
+};
+#endif 
diff --git a/include/EnumSystemKey.h b/include/EnumSystemKey.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSystemKey.h
@@ -0,0 +1,39 @@
+// 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.
+// 
+
+// EnumSystemKey.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSystemKey
+#define _DEFINED_HG3D_EnumSystemKey
+
+
+enum EnumSystemKey
+{
+  SystemKeyLeftMouse =  0x0001, // The left mouse button. 
+  SystemKeyRightMouse =  0x0002, // The right mouse button. 
+  SystemKeyShift =  0x0004, // Either shift key. 
+  SystemKeyControl =  0x0008, // Either control key. 
+  SystemKeyMiddleMouse =  0x0010, // The middle mouse button. 
+  SystemKeyX1Mouse =  0x0020, // The first 'extra' mouse button. 
+  SystemKeyX2Mouse =  0x0040, // The second 'extra' mouse button. 
+  SystemKeyAlt =  0x0080 // Either alt key. 
+};
+#endif 
diff --git a/include/EnumTabPanePosition.h b/include/EnumTabPanePosition.h
new file mode 100644
--- /dev/null
+++ b/include/EnumTabPanePosition.h
@@ -0,0 +1,33 @@
+// 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.
+// 
+
+// EnumTabPanePosition.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumTabPanePosition
+#define _DEFINED_HG3D_EnumTabPanePosition
+
+
+enum EnumTabPanePosition
+{
+  TabPanePositionTop, // 
+  TabPanePositionBottom // 
+};
+#endif 
diff --git a/include/EnumTextInputMode.h b/include/EnumTextInputMode.h
new file mode 100644
--- /dev/null
+++ b/include/EnumTextInputMode.h
@@ -0,0 +1,35 @@
+// 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.
+// 
+
+// EnumTextInputMode.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumTextInputMode
+#define _DEFINED_HG3D_EnumTextInputMode
+
+
+enum EnumTextInputMode
+{
+  TextInputModeFloatingPoint, // Floating point decimal. 
+  TextInputModeInteger, // Integer decimal. 
+  TextInputModeHexadecimal, // Hexadecimal. 
+  TextInputModeOctal // Octal. 
+};
+#endif 
diff --git a/include/EnumTipState.h b/include/EnumTipState.h
new file mode 100644
--- /dev/null
+++ b/include/EnumTipState.h
@@ -0,0 +1,35 @@
+// 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.
+// 
+
+// EnumTipState.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumTipState
+#define _DEFINED_HG3D_EnumTipState
+
+
+enum EnumTipState
+{
+  TipStateInactive, // Tooltip
+  TipStateActive, // Tooltip
+  TipStateFadeIn, // Tooltip
+  TipStateFadeOut // Tooltip
+};
+#endif 
diff --git a/include/EnumVerticalAlignment.h b/include/EnumVerticalAlignment.h
new file mode 100644
--- /dev/null
+++ b/include/EnumVerticalAlignment.h
@@ -0,0 +1,34 @@
+// 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.
+// 
+
+// EnumVerticalAlignment.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumVerticalAlignment
+#define _DEFINED_HG3D_EnumVerticalAlignment
+
+
+enum EnumVerticalAlignment
+{
+  VA_TOP, // 
+  VA_CENTRE, // 
+  VA_BOTTOM // 
+};
+#endif 
diff --git a/include/EnumWindowUpdateMode.h b/include/EnumWindowUpdateMode.h
new file mode 100644
--- /dev/null
+++ b/include/EnumWindowUpdateMode.h
@@ -0,0 +1,34 @@
+// 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.
+// 
+
+// EnumWindowUpdateMode.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumWindowUpdateMode
+#define _DEFINED_HG3D_EnumWindowUpdateMode
+
+
+enum EnumWindowUpdateMode
+{
+  WUM_ALWAYS, // Always call the Window::update
+  WUM_NEVER, // Never call the Window::update
+  WUM_VISIBLE // Only call the Window::update
+};
+#endif 
diff --git a/include/HG3DCommandHandler.h b/include/HG3DCommandHandler.h
new file mode 100644
--- /dev/null
+++ b/include/HG3DCommandHandler.h
@@ -0,0 +1,41 @@
+/*
+This source file is part of HGamer3D
+(A project to enable 3D game development in Haskell)
+For the latest info, see http://www.althainz.de/HGamer3D.html
+
+(c) 2011 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.
+*/
+
+// HG3DCommandHandler.h
+// Handles events of the Event Module
+
+#ifndef _HG3DCommandHandler_INCLUDE
+#define _HG3DCommandHandler_INCLUDE
+
+#include "CEGUI/CEGUI.h"
+#include "HG3DEventController.h"
+
+class HG3DCommandHandler
+ {
+ public:
+   
+   HG3DCommandHandler(const std::string& name, HG3DEventController* ectrl);
+   bool operator()(const CEGUI::EventArgs& args) const;
+   std::string m_name ;
+   HG3DEventController* eventController;
+   
+ };
+
+#endif
diff --git a/include/HG3DEventController.h b/include/HG3DEventController.h
new file mode 100644
--- /dev/null
+++ b/include/HG3DEventController.h
@@ -0,0 +1,51 @@
+/*
+This source file is part of HGamer3D
+(A project to enable 3D game development in Haskell)
+For the latest info, see http://www.althainz.de/HGamer3D.html
+
+(c) 2011 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.
+*/
+
+// HG3DEventController.h
+// this class static methods are called from Haskell
+
+#ifndef _HG3DEventController_INCLUDE
+#define _HG3DEventController_INCLUDE
+
+#include <list>
+#include "CEGUI/CEGUI.h"
+
+class HG3DEventController
+{
+public:
+
+	class EvtCtrlEvent
+	{
+		public:
+			CEGUI::String name;
+			CEGUI::String sender; 
+			CEGUI::Window* window;
+	};
+	
+	std::list<EvtCtrlEvent> evtList;
+
+	HG3DEventController();
+	~HG3DEventController();
+	void pushEvent(CEGUI::String name, CEGUI::String sender, CEGUI::Window* window);
+	bool eventsAvailable();
+	void popEvent(CEGUI::String& name, CEGUI::String& sender, CEGUI::Window** window);
+};
+
+#endif
diff --git a/include/HG3DEventModule.h b/include/HG3DEventModule.h
new file mode 100644
--- /dev/null
+++ b/include/HG3DEventModule.h
@@ -0,0 +1,51 @@
+/*
+This source file is part of HGamer3D
+(A project to enable 3D game development in Haskell)
+For the latest info, see http://www.althainz.de/HGamer3D.html
+
+(c) 2011 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.
+*/
+
+// HG3DEventModule.h
+// a separate Scripting Event Handler, to forward GUI Events to Haskell
+
+#include "CEGUI/CEGUI.h"
+#include "HG3DEventController.h"
+
+class HG3DEventModule : public CEGUI::ScriptModule
+{
+ public:
+ 
+	HG3DEventModule(HG3DEventController* ectrl);
+	HG3DEventController* eventController;
+
+   virtual CEGUI::Event::Connection subscribeEvent(
+       CEGUI::EventSet*     target, 
+       const CEGUI::String& name, 
+       const CEGUI::String& subscriber_name);
+   virtual CEGUI::Event::Connection subscribeEvent(
+       CEGUI::EventSet*     target,
+       const CEGUI::String& name,
+       CEGUI::Event::Group  group,
+       const CEGUI::String& subscriber_name);
+   virtual void executeScriptFile(const CEGUI::String &filename, const CEGUI::String &resourceGroup="");
+   virtual int executeScriptGlobal(const CEGUI::String& function_name);
+   virtual void executeString(const CEGUI::String &str);
+   virtual bool executeScriptedEventHandler(
+       const CEGUI::String& handler_name,
+       const CEGUI::EventArgs &e);
+
+ };
+
diff --git a/include/HG3DEventStaticFunctions.h b/include/HG3DEventStaticFunctions.h
new file mode 100644
--- /dev/null
+++ b/include/HG3DEventStaticFunctions.h
@@ -0,0 +1,32 @@
+/*
+This source file is part of HGamer3D
+(A project to enable 3D game development in Haskell)
+For the latest info, see http://www.althainz.de/HGamer3D.html
+
+(c) 2011 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.
+*/
+
+// HG3DEventStaticFunctions.h
+// a separate Scripting Event Handler, to forward GUI Events to Haskell
+
+#include "CEGUI/CEGUI.h"
+
+class HG3DEventStaticFunctions
+{
+ public:
+ 
+	static void subscribeScriptedEvent(CEGUI::EventSet * window, const CEGUI::String & name, const CEGUI::String & subscriber_name);
+};
+
diff --git a/include/HG3DListboxStaticFunctions.h b/include/HG3DListboxStaticFunctions.h
new file mode 100644
--- /dev/null
+++ b/include/HG3DListboxStaticFunctions.h
@@ -0,0 +1,33 @@
+/*
+This source file is part of HGamer3D
+(A project to enable 3D game development in Haskell)
+For the latest info, see http://www.althainz.de/HGamer3D.html
+
+(c) 2011 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.
+*/
+
+// HG3DEventStaticFunctions.h
+// a separate Scripting Event Handler, to forward GUI Events to Haskell
+
+#include "CEGUI/CEGUI.h"
+
+class HG3DListboxStaticFunctions
+{
+ public:
+ 
+	static void listboxAddItem(CEGUI::Listbox * listbox, const CEGUI::String & itemString);
+	static void comboboxAddItem(CEGUI::Combobox * combobox, const CEGUI::String & itemString);
+};
+
diff --git a/include/HG3DWindowStaticFunctions.h b/include/HG3DWindowStaticFunctions.h
new file mode 100644
--- /dev/null
+++ b/include/HG3DWindowStaticFunctions.h
@@ -0,0 +1,44 @@
+/*
+This source file is part of HGamer3D
+(A project to enable 3D game development in Haskell)
+For the latest info, see http://www.althainz.de/HGamer3D.html
+
+(c) 2011 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.
+*/
+
+// HG3DEventStaticFunctions.h
+// a separate Scripting Event Handler, to forward GUI Events to Haskell
+
+#include "CEGUI/CEGUI.h"
+
+class HG3DWindowStaticFunctions
+{
+ public:
+ 
+	// functions, downcast to specialized windows, use with care :-)
+	static CEGUI::PushButton* castWindowToPushButton(CEGUI::Window * window);
+	static CEGUI::Listbox* castWindowToListbox(CEGUI::Window * window);
+	static CEGUI::Combobox* castWindowToCombobox(CEGUI::Window * window);
+	//	static CEGUI::Checkbox* castWindowToCheckbox(CEGUI::Window * window);
+	static CEGUI::RadioButton* castWindowToRadioButton(CEGUI::Window * window);
+	static CEGUI::Editbox* castWindowToEditbox(CEGUI::Window * window);
+	static CEGUI::MultiLineEditbox* castWindowToMultiLineEditbox(CEGUI::Window * window);
+	static CEGUI::FrameWindow* castWindowToFrameWindow(CEGUI::Window * window);
+	static CEGUI::ProgressBar* castWindowToProgressBar(CEGUI::Window * window);
+	static CEGUI::Slider* castWindowToSlider(CEGUI::Window * window);
+	static CEGUI::Spinner* castWindowToSpinner(CEGUI::Window * window);
+	static CEGUI::MultiColumnList* castWindowToMultiColumnList(CEGUI::Window * window);
+};
+
diff --git a/include/StructHG3DClass.h b/include/StructHG3DClass.h
new file mode 100644
--- /dev/null
+++ b/include/StructHG3DClass.h
@@ -0,0 +1,34 @@
+// 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.
+// 
+
+// StructHG3DClass.h
+
+// 
+
+#include "wchar.h"
+
+
+#ifndef _INC_STRUCT_HG3DCLASS
+#define _INC_STRUCT_HG3DCLASS
+
+typedef struct hg3dclass_struct {
+	void *ptr;
+	void *fptr;
+} hg3dclass_struct;
+
+#endif
diff --git a/include/SystemHG3D.h b/include/SystemHG3D.h
deleted file mode 100644
--- a/include/SystemHG3D.h
+++ /dev/null
@@ -1,49 +0,0 @@
-// 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
deleted file mode 100644
--- a/include/WindowManagerHG3D.h
+++ /dev/null
@@ -1,26 +0,0 @@
-// 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
deleted file mode 100644
--- a/include/colorvalue_struct.h
+++ /dev/null
@@ -1,6 +0,0 @@
-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
deleted file mode 100644
--- a/include/degree_struct.h
+++ /dev/null
@@ -1,3 +0,0 @@
-typedef struct degree_struct {
-	float d;
-} degree_struct;
diff --git a/include/hg3dstruct.h b/include/hg3dstruct.h
deleted file mode 100644
--- a/include/hg3dstruct.h
+++ /dev/null
@@ -1,4 +0,0 @@
-typedef struct hg3dclass_struct {
-	void *ptr;
-	void *fptr;
-} hg3dclass_struct;
diff --git a/include/quaternion_struct.h b/include/quaternion_struct.h
deleted file mode 100644
--- a/include/quaternion_struct.h
+++ /dev/null
@@ -1,6 +0,0 @@
-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
deleted file mode 100644
--- a/include/radian_struct.h
+++ /dev/null
@@ -1,3 +0,0 @@
-typedef struct radian_struct {
-	float r;
-} radian_struct;
diff --git a/include/sharedptr_struct.h b/include/sharedptr_struct.h
deleted file mode 100644
--- a/include/sharedptr_struct.h
+++ /dev/null
@@ -1,5 +0,0 @@
-typedef struct sharedptr_struct {
-	void* pT;
-	void* pCount;
-	void* pFreeFunc;
-} sharedptr_struct;
diff --git a/include/vector2_struct.h b/include/vector2_struct.h
deleted file mode 100644
--- a/include/vector2_struct.h
+++ /dev/null
@@ -1,4 +0,0 @@
-typedef struct vector2_struct {
-	float x;
-	float y;
-} vector2_struct;
diff --git a/include/vector3_struct.h b/include/vector3_struct.h
deleted file mode 100644
--- a/include/vector3_struct.h
+++ /dev/null
@@ -1,5 +0,0 @@
-typedef struct vector3_struct {
-	float x;
-	float y;
-	float z;
-} vector3_struct;
diff --git a/include/vector4_struct.h b/include/vector4_struct.h
deleted file mode 100644
--- a/include/vector4_struct.h
+++ /dev/null
@@ -1,6 +0,0 @@
-typedef struct vector4_struct {
-	float x;
-	float y;
-	float z;
-	float w;
-} vector4_struct;
