diff --git a/HGamer3D-SDL2-Binding.cabal b/HGamer3D-SDL2-Binding.cabal
--- a/HGamer3D-SDL2-Binding.cabal
+++ b/HGamer3D-SDL2-Binding.cabal
@@ -1,5 +1,5 @@
 Name:                HGamer3D-SDL2-Binding
-Version:             0.3.1
+Version:             0.3.2
 Synopsis:            SDL2 Binding for HGamer3D
 Description:         
    HGamer3D is a game engine for developing 3D games in the programming 
@@ -18,7 +18,7 @@
 Cabal-Version:       >=1.4
 Homepage:            http://www.hgamer3d.org
 Category:            Game Engine
-Extra-source-files:  Setup.hs, include/sdlevent_struct.h, include/hg3dstruct.h
+Extra-source-files:  Setup.hs, include/HeaderSDLEvents.h, include/EnumSDLRendererFlags.h, include/StructHG3DClass.h, include/EnumSDLLogPriority.h, include/EnumSDLWindowShapeMode.h, include/HG3DUtilities.h, include/StructSDLEvent.h, include/HeaderSDL.h, include/EnumSDLMessageBoxColorType.h, include/EnumSDLThreadPriority.h, include/HeaderSDLVideo.h, include/EnumSDLBlendMode.h, include/EnumSDLEventType.h, include/EnumSDLHintPriority.h, include/EnumSDLGLAttr.h, include/EnumSDLWindowEventID.h, include/EnumSDLTextureAccess.h, include/EnumSDLRendererFlip.h, include/EnumSDLMessageBoxFlags.h, include/SDL2DllDefines.h, include/EnumSDLPowerState.h, include/EnumSDLSystemCursor.h, include/EnumSDLGameControllerButton.h, include/EnumSDLTextureModulate.h, include/HeaderSDLKeyboard.h, include/EnumSDLKeymod.h, include/EnumSDLGameControllerAxis.h, include/EnumSDLScancode.h, include/EnumSDLGLProfile.h, include/EnumSDLWindowFlags.h, include/EnumSDLGlContextFlag.h, include/EnumSDLSysWMType.h, include/ClassPtr.h, include/EnumSDLMessageBoxButtonFlags.h, include/EnumSDLGameControllerBindType.h, include/HeaderSDLMouse.h
 
 Library
   Build-Depends:     base >= 3 && < 5, utf8-string, bytestring, HGamer3D-Data >= 0.3.0
@@ -33,6 +33,6 @@
   Build-tools:       
   build-depends:     
   if os(windows)
-     extra-libraries:   hg3dsdl2031
+     extra-libraries:   hg3dsdl2032
   else
-     extra-libraries:   hg3dsdl2031,SDL2-2.0,X11
+     extra-libraries:   hg3dsdl2032,SDL2-2.0,X11
diff --git a/include/ClassPtr.h b/include/ClassPtr.h
new file mode 100644
--- /dev/null
+++ b/include/ClassPtr.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.
+// 
+
+// 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);
+
+
+#endif
diff --git a/include/EnumSDLBlendMode.h b/include/EnumSDLBlendMode.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLBlendMode.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.
+// 
+
+// EnumSDLBlendMode.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLBlendMode
+#define _DEFINED_HG3D_EnumSDLBlendMode
+
+
+enum EnumSDLBlendMode
+{
+  SDL_BLENDMODE_NONE =  0x00000000, // 
+  SDL_BLENDMODE_BLEND =  0x00000001, // 
+  SDL_BLENDMODE_ADD =  0x00000002, // 
+  SDL_BLENDMODE_MOD =  0x00000004 // 
+};
+#endif 
diff --git a/include/EnumSDLEventType.h b/include/EnumSDLEventType.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLEventType.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.
+// 
+
+// EnumSDLEventType.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLEventType
+#define _DEFINED_HG3D_EnumSDLEventType
+
+
+enum EnumSDLEventType
+{
+  SDL_FIRSTEVENT =  0, // 
+  SDL_QUIT =  0x100, // 
+  SDL_APP_TERMINATING, // 
+  SDL_APP_LOWMEMORY, // 
+  SDL_APP_WILLENTERBACKGROUND, // 
+  SDL_APP_DIDENTERBACKGROUND, // 
+  SDL_APP_WILLENTERFOREGROUND, // 
+  SDL_APP_DIDENTERFOREGROUND, // 
+  SDL_WINDOWEVENT =  0x200, // 
+  SDL_SYSWMEVENT, // 
+  SDL_KEYDOWN =  0x300, // 
+  SDL_KEYUP, // 
+  SDL_TEXTEDITING, // 
+  SDL_TEXTINPUT, // 
+  SDL_MOUSEMOTION =  0x400, // 
+  SDL_MOUSEBUTTONDOWN, // 
+  SDL_MOUSEBUTTONUP, // 
+  SDL_MOUSEWHEEL, // 
+  SDL_JOYAXISMOTION =  0x600, // 
+  SDL_JOYBALLMOTION, // 
+  SDL_JOYHATMOTION, // 
+  SDL_JOYBUTTONDOWN, // 
+  SDL_JOYBUTTONUP, // 
+  SDL_JOYDEVICEADDED, // 
+  SDL_JOYDEVICEREMOVED, // 
+  SDL_CONTROLLERAXISMOTION =  0x650, // 
+  SDL_CONTROLLERBUTTONDOWN, // 
+  SDL_CONTROLLERBUTTONUP, // 
+  SDL_CONTROLLERDEVICEADDED, // 
+  SDL_CONTROLLERDEVICEREMOVED, // 
+  SDL_CONTROLLERDEVICEREMAPPED, // 
+  SDL_FINGERDOWN =  0x700, // 
+  SDL_FINGERUP, // 
+  SDL_FINGERMOTION, // 
+  SDL_DOLLARGESTURE =  0x800, // 
+  SDL_DOLLARRECORD, // 
+  SDL_MULTIGESTURE, // 
+  SDL_CLIPBOARDUPDATE =  0x900, // 
+  SDL_DROPFILE =  0x1000, // 
+  SDL_USEREVENT =  0x8000, // 
+  SDL_LASTEVENT =  0xFFFF // 
+};
+#endif 
diff --git a/include/EnumSDLGLAttr.h b/include/EnumSDLGLAttr.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLGLAttr.h
@@ -0,0 +1,55 @@
+// 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.
+// 
+
+// EnumSDLGLAttr.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLGLAttr
+#define _DEFINED_HG3D_EnumSDLGLAttr
+
+
+enum EnumSDLGLAttr
+{
+  SDL_GL_RED_SIZE, // 
+  SDL_GL_GREEN_SIZE, // 
+  SDL_GL_BLUE_SIZE, // 
+  SDL_GL_ALPHA_SIZE, // 
+  SDL_GL_BUFFER_SIZE, // 
+  SDL_GL_DOUBLEBUFFER, // 
+  SDL_GL_DEPTH_SIZE, // 
+  SDL_GL_STENCIL_SIZE, // 
+  SDL_GL_ACCUM_RED_SIZE, // 
+  SDL_GL_ACCUM_GREEN_SIZE, // 
+  SDL_GL_ACCUM_BLUE_SIZE, // 
+  SDL_GL_ACCUM_ALPHA_SIZE, // 
+  SDL_GL_STEREO, // 
+  SDL_GL_MULTISAMPLEBUFFERS, // 
+  SDL_GL_MULTISAMPLESAMPLES, // 
+  SDL_GL_ACCELERATED_VISUAL, // 
+  SDL_GL_RETAINED_BACKING, // 
+  SDL_GL_CONTEXT_MAJOR_VERSION, // 
+  SDL_GL_CONTEXT_MINOR_VERSION, // 
+  SDL_GL_CONTEXT_EGL, // 
+  SDL_GL_CONTEXT_FLAGS, // 
+  SDL_GL_CONTEXT_PROFILE_MASK, // 
+  SDL_GL_SHARE_WITH_CURRENT_CONTEXT, // 
+  SDL_GL_FRAMEBUFFER_SRGB_CAPABLE // 
+};
+#endif 
diff --git a/include/EnumSDLGLProfile.h b/include/EnumSDLGLProfile.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLGLProfile.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.
+// 
+
+// EnumSDLGLProfile.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLGLProfile
+#define _DEFINED_HG3D_EnumSDLGLProfile
+
+
+enum EnumSDLGLProfile
+{
+  SDL_GL_CONTEXT_PROFILE_CORE =  0x0001, // 
+  SDL_GL_CONTEXT_PROFILE_COMPATIBILITY =  0x0002, // 
+  SDL_GL_CONTEXT_PROFILE_ES =  0x0004 // 
+};
+#endif 
diff --git a/include/EnumSDLGameControllerAxis.h b/include/EnumSDLGameControllerAxis.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLGameControllerAxis.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.
+// 
+
+// EnumSDLGameControllerAxis.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLGameControllerAxis
+#define _DEFINED_HG3D_EnumSDLGameControllerAxis
+
+
+enum EnumSDLGameControllerAxis
+{
+  SDL_CONTROLLER_AXIS_INVALID =  -1, // 
+  SDL_CONTROLLER_AXIS_LEFTX, // 
+  SDL_CONTROLLER_AXIS_LEFTY, // 
+  SDL_CONTROLLER_AXIS_RIGHTX, // 
+  SDL_CONTROLLER_AXIS_RIGHTY, // 
+  SDL_CONTROLLER_AXIS_TRIGGERLEFT, // 
+  SDL_CONTROLLER_AXIS_TRIGGERRIGHT, // 
+  SDL_CONTROLLER_AXIS_MAX // 
+};
+#endif 
diff --git a/include/EnumSDLGameControllerBindType.h b/include/EnumSDLGameControllerBindType.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLGameControllerBindType.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.
+// 
+
+// EnumSDLGameControllerBindType.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLGameControllerBindType
+#define _DEFINED_HG3D_EnumSDLGameControllerBindType
+
+
+enum EnumSDLGameControllerBindType
+{
+  SDL_CONTROLLER_BINDTYPE_NONE =  0, // 
+  SDL_CONTROLLER_BINDTYPE_BUTTON, // 
+  SDL_CONTROLLER_BINDTYPE_AXIS, // 
+  SDL_CONTROLLER_BINDTYPE_HAT // 
+};
+#endif 
diff --git a/include/EnumSDLGameControllerButton.h b/include/EnumSDLGameControllerButton.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLGameControllerButton.h
@@ -0,0 +1,48 @@
+// 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.
+// 
+
+// EnumSDLGameControllerButton.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLGameControllerButton
+#define _DEFINED_HG3D_EnumSDLGameControllerButton
+
+
+enum EnumSDLGameControllerButton
+{
+  SDL_CONTROLLER_BUTTON_INVALID =  -1, // 
+  SDL_CONTROLLER_BUTTON_A, // 
+  SDL_CONTROLLER_BUTTON_B, // 
+  SDL_CONTROLLER_BUTTON_X, // 
+  SDL_CONTROLLER_BUTTON_Y, // 
+  SDL_CONTROLLER_BUTTON_BACK, // 
+  SDL_CONTROLLER_BUTTON_GUIDE, // 
+  SDL_CONTROLLER_BUTTON_START, // 
+  SDL_CONTROLLER_BUTTON_LEFTSTICK, // 
+  SDL_CONTROLLER_BUTTON_RIGHTSTICK, // 
+  SDL_CONTROLLER_BUTTON_LEFTSHOULDER, // 
+  SDL_CONTROLLER_BUTTON_RIGHTSHOULDER, // 
+  SDL_CONTROLLER_BUTTON_DPAD_UP, // 
+  SDL_CONTROLLER_BUTTON_DPAD_DOWN, // 
+  SDL_CONTROLLER_BUTTON_DPAD_LEFT, // 
+  SDL_CONTROLLER_BUTTON_DPAD_RIGHT, // 
+  SDL_CONTROLLER_BUTTON_MAX // 
+};
+#endif 
diff --git a/include/EnumSDLGlContextFlag.h b/include/EnumSDLGlContextFlag.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLGlContextFlag.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.
+// 
+
+// EnumSDLGlContextFlag.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLGlContextFlag
+#define _DEFINED_HG3D_EnumSDLGlContextFlag
+
+
+enum EnumSDLGlContextFlag
+{
+  SDL_GL_CONTEXT_DEBUG_FLAG =  0x0001, // 
+  SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG =  0x0002, // 
+  SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG =  0x0004, // 
+  SDL_GL_CONTEXT_RESET_ISOLATION_FLAG =  0x0008 // 
+};
+#endif 
diff --git a/include/EnumSDLHintPriority.h b/include/EnumSDLHintPriority.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLHintPriority.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.
+// 
+
+// EnumSDLHintPriority.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLHintPriority
+#define _DEFINED_HG3D_EnumSDLHintPriority
+
+
+enum EnumSDLHintPriority
+{
+  SDL_HINT_DEFAULT, // 
+  SDL_HINT_NORMAL, // 
+  SDL_HINT_OVERRIDE // 
+};
+#endif 
diff --git a/include/EnumSDLKeymod.h b/include/EnumSDLKeymod.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLKeymod.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.
+// 
+
+// EnumSDLKeymod.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLKeymod
+#define _DEFINED_HG3D_EnumSDLKeymod
+
+
+enum EnumSDLKeymod
+{
+  KMOD_NONE =  0x0000, // 
+  KMOD_LSHIFT =  0x0001, // 
+  KMOD_RSHIFT =  0x0002, // 
+  KMOD_LCTRL =  0x0040, // 
+  KMOD_RCTRL =  0x0080, // 
+  KMOD_LALT =  0x0100, // 
+  KMOD_RALT =  0x0200, // 
+  KMOD_LGUI =  0x0400, // 
+  KMOD_RGUI =  0x0800, // 
+  KMOD_NUM =  0x1000, // 
+  KMOD_CAPS =  0x2000, // 
+  KMOD_MODE =  0x4000, // 
+  KMOD_RESERVED =  0x8000 // 
+};
+#endif 
diff --git a/include/EnumSDLLogPriority.h b/include/EnumSDLLogPriority.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLLogPriority.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.
+// 
+
+// EnumSDLLogPriority.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLLogPriority
+#define _DEFINED_HG3D_EnumSDLLogPriority
+
+
+enum EnumSDLLogPriority
+{
+  SDL_LOG_PRIORITY_VERBOSE =  1, // 
+  SDL_LOG_PRIORITY_DEBUG, // 
+  SDL_LOG_PRIORITY_INFO, // 
+  SDL_LOG_PRIORITY_WARN, // 
+  SDL_LOG_PRIORITY_ERROR, // 
+  SDL_LOG_PRIORITY_CRITICAL, // 
+  SDL_NUM_LOG_PRIORITIES // 
+};
+#endif 
diff --git a/include/EnumSDLMessageBoxButtonFlags.h b/include/EnumSDLMessageBoxButtonFlags.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLMessageBoxButtonFlags.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.
+// 
+
+// EnumSDLMessageBoxButtonFlags.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLMessageBoxButtonFlags
+#define _DEFINED_HG3D_EnumSDLMessageBoxButtonFlags
+
+
+enum EnumSDLMessageBoxButtonFlags
+{
+  SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT =  0x00000001, // 
+  SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT =  0x00000002 // 
+};
+#endif 
diff --git a/include/EnumSDLMessageBoxColorType.h b/include/EnumSDLMessageBoxColorType.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLMessageBoxColorType.h
@@ -0,0 +1,37 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumSDLMessageBoxColorType.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLMessageBoxColorType
+#define _DEFINED_HG3D_EnumSDLMessageBoxColorType
+
+
+enum EnumSDLMessageBoxColorType
+{
+  SDL_MESSAGEBOX_COLOR_BACKGROUND, // 
+  SDL_MESSAGEBOX_COLOR_TEXT, // 
+  SDL_MESSAGEBOX_COLOR_BUTTON_BORDER, // 
+  SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND, // 
+  SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED, // 
+  SDL_MESSAGEBOX_COLOR_MAX // 
+};
+#endif 
diff --git a/include/EnumSDLMessageBoxFlags.h b/include/EnumSDLMessageBoxFlags.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLMessageBoxFlags.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.
+// 
+
+// EnumSDLMessageBoxFlags.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLMessageBoxFlags
+#define _DEFINED_HG3D_EnumSDLMessageBoxFlags
+
+
+enum EnumSDLMessageBoxFlags
+{
+  SDL_MESSAGEBOX_ERROR =  0x00000010, // 
+  SDL_MESSAGEBOX_WARNING =  0x00000020, // 
+  SDL_MESSAGEBOX_INFORMATION =  0x00000040 // 
+};
+#endif 
diff --git a/include/EnumSDLPowerState.h b/include/EnumSDLPowerState.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLPowerState.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.
+// 
+
+// EnumSDLPowerState.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLPowerState
+#define _DEFINED_HG3D_EnumSDLPowerState
+
+
+enum EnumSDLPowerState
+{
+  SDL_POWERSTATE_UNKNOWN, // 
+  SDL_POWERSTATE_ON_BATTERY, // 
+  SDL_POWERSTATE_NO_BATTERY, // 
+  SDL_POWERSTATE_CHARGING, // 
+  SDL_POWERSTATE_CHARGED // 
+};
+#endif 
diff --git a/include/EnumSDLRendererFlags.h b/include/EnumSDLRendererFlags.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLRendererFlags.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.
+// 
+
+// EnumSDLRendererFlags.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLRendererFlags
+#define _DEFINED_HG3D_EnumSDLRendererFlags
+
+
+enum EnumSDLRendererFlags
+{
+  SDL_RENDERER_SOFTWARE =  0x00000001, // 
+  SDL_RENDERER_ACCELERATED =  0x00000002, // 
+  SDL_RENDERER_PRESENTVSYNC =  0x00000004, // 
+  SDL_RENDERER_TARGETTEXTURE =  0x00000008 // 
+};
+#endif 
diff --git a/include/EnumSDLRendererFlip.h b/include/EnumSDLRendererFlip.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLRendererFlip.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.
+// 
+
+// EnumSDLRendererFlip.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLRendererFlip
+#define _DEFINED_HG3D_EnumSDLRendererFlip
+
+
+enum EnumSDLRendererFlip
+{
+  SDL_FLIP_NONE =  0x00000000, // 
+  SDL_FLIP_HORIZONTAL =  0x00000001, // 
+  SDL_FLIP_VERTICAL =  0x00000002 // 
+};
+#endif 
diff --git a/include/EnumSDLScancode.h b/include/EnumSDLScancode.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLScancode.h
@@ -0,0 +1,273 @@
+// 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.
+// 
+
+// EnumSDLScancode.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLScancode
+#define _DEFINED_HG3D_EnumSDLScancode
+
+
+enum EnumSDLScancode
+{
+  SDL_SCANCODE_UNKNOWN =  0, // 
+  SDL_SCANCODE_A =  4, // 
+  SDL_SCANCODE_B =  5, // 
+  SDL_SCANCODE_C =  6, // 
+  SDL_SCANCODE_D =  7, // 
+  SDL_SCANCODE_E =  8, // 
+  SDL_SCANCODE_F =  9, // 
+  SDL_SCANCODE_G =  10, // 
+  SDL_SCANCODE_H =  11, // 
+  SDL_SCANCODE_I =  12, // 
+  SDL_SCANCODE_J =  13, // 
+  SDL_SCANCODE_K =  14, // 
+  SDL_SCANCODE_L =  15, // 
+  SDL_SCANCODE_M =  16, // 
+  SDL_SCANCODE_N =  17, // 
+  SDL_SCANCODE_O =  18, // 
+  SDL_SCANCODE_P =  19, // 
+  SDL_SCANCODE_Q =  20, // 
+  SDL_SCANCODE_R =  21, // 
+  SDL_SCANCODE_S =  22, // 
+  SDL_SCANCODE_T =  23, // 
+  SDL_SCANCODE_U =  24, // 
+  SDL_SCANCODE_V =  25, // 
+  SDL_SCANCODE_W =  26, // 
+  SDL_SCANCODE_X =  27, // 
+  SDL_SCANCODE_Y =  28, // 
+  SDL_SCANCODE_Z =  29, // 
+  SDL_SCANCODE_1 =  30, // 
+  SDL_SCANCODE_2 =  31, // 
+  SDL_SCANCODE_3 =  32, // 
+  SDL_SCANCODE_4 =  33, // 
+  SDL_SCANCODE_5 =  34, // 
+  SDL_SCANCODE_6 =  35, // 
+  SDL_SCANCODE_7 =  36, // 
+  SDL_SCANCODE_8 =  37, // 
+  SDL_SCANCODE_9 =  38, // 
+  SDL_SCANCODE_0 =  39, // 
+  SDL_SCANCODE_RETURN =  40, // 
+  SDL_SCANCODE_ESCAPE =  41, // 
+  SDL_SCANCODE_BACKSPACE =  42, // 
+  SDL_SCANCODE_TAB =  43, // 
+  SDL_SCANCODE_SPACE =  44, // 
+  SDL_SCANCODE_MINUS =  45, // 
+  SDL_SCANCODE_EQUALS =  46, // 
+  SDL_SCANCODE_LEFTBRACKET =  47, // 
+  SDL_SCANCODE_RIGHTBRACKET =  48, // 
+  SDL_SCANCODE_BACKSLASH =  49, // 
+  SDL_SCANCODE_NONUSHASH =  50, // 
+  SDL_SCANCODE_SEMICOLON =  51, // 
+  SDL_SCANCODE_APOSTROPHE =  52, // 
+  SDL_SCANCODE_GRAVE =  53, // 
+  SDL_SCANCODE_COMMA =  54, // 
+  SDL_SCANCODE_PERIOD =  55, // 
+  SDL_SCANCODE_SLASH =  56, // 
+  SDL_SCANCODE_CAPSLOCK =  57, // 
+  SDL_SCANCODE_F1 =  58, // 
+  SDL_SCANCODE_F2 =  59, // 
+  SDL_SCANCODE_F3 =  60, // 
+  SDL_SCANCODE_F4 =  61, // 
+  SDL_SCANCODE_F5 =  62, // 
+  SDL_SCANCODE_F6 =  63, // 
+  SDL_SCANCODE_F7 =  64, // 
+  SDL_SCANCODE_F8 =  65, // 
+  SDL_SCANCODE_F9 =  66, // 
+  SDL_SCANCODE_F10 =  67, // 
+  SDL_SCANCODE_F11 =  68, // 
+  SDL_SCANCODE_F12 =  69, // 
+  SDL_SCANCODE_PRINTSCREEN =  70, // 
+  SDL_SCANCODE_SCROLLLOCK =  71, // 
+  SDL_SCANCODE_PAUSE =  72, // 
+  SDL_SCANCODE_INSERT =  73, // 
+  SDL_SCANCODE_HOME =  74, // 
+  SDL_SCANCODE_PAGEUP =  75, // 
+  SDL_SCANCODE_DELETE =  76, // 
+  SDL_SCANCODE_END =  77, // 
+  SDL_SCANCODE_PAGEDOWN =  78, // 
+  SDL_SCANCODE_RIGHT =  79, // 
+  SDL_SCANCODE_LEFT =  80, // 
+  SDL_SCANCODE_DOWN =  81, // 
+  SDL_SCANCODE_UP =  82, // 
+  SDL_SCANCODE_NUMLOCKCLEAR =  83, // 
+  SDL_SCANCODE_KP_DIVIDE =  84, // 
+  SDL_SCANCODE_KP_MULTIPLY =  85, // 
+  SDL_SCANCODE_KP_MINUS =  86, // 
+  SDL_SCANCODE_KP_PLUS =  87, // 
+  SDL_SCANCODE_KP_ENTER =  88, // 
+  SDL_SCANCODE_KP_1 =  89, // 
+  SDL_SCANCODE_KP_2 =  90, // 
+  SDL_SCANCODE_KP_3 =  91, // 
+  SDL_SCANCODE_KP_4 =  92, // 
+  SDL_SCANCODE_KP_5 =  93, // 
+  SDL_SCANCODE_KP_6 =  94, // 
+  SDL_SCANCODE_KP_7 =  95, // 
+  SDL_SCANCODE_KP_8 =  96, // 
+  SDL_SCANCODE_KP_9 =  97, // 
+  SDL_SCANCODE_KP_0 =  98, // 
+  SDL_SCANCODE_KP_PERIOD =  99, // 
+  SDL_SCANCODE_NONUSBACKSLASH =  100, // 
+  SDL_SCANCODE_APPLICATION =  101, // 
+  SDL_SCANCODE_POWER =  102, // 
+  SDL_SCANCODE_KP_EQUALS =  103, // 
+  SDL_SCANCODE_F13 =  104, // 
+  SDL_SCANCODE_F14 =  105, // 
+  SDL_SCANCODE_F15 =  106, // 
+  SDL_SCANCODE_F16 =  107, // 
+  SDL_SCANCODE_F17 =  108, // 
+  SDL_SCANCODE_F18 =  109, // 
+  SDL_SCANCODE_F19 =  110, // 
+  SDL_SCANCODE_F20 =  111, // 
+  SDL_SCANCODE_F21 =  112, // 
+  SDL_SCANCODE_F22 =  113, // 
+  SDL_SCANCODE_F23 =  114, // 
+  SDL_SCANCODE_F24 =  115, // 
+  SDL_SCANCODE_EXECUTE =  116, // 
+  SDL_SCANCODE_HELP =  117, // 
+  SDL_SCANCODE_MENU =  118, // 
+  SDL_SCANCODE_SELECT =  119, // 
+  SDL_SCANCODE_STOP =  120, // 
+  SDL_SCANCODE_AGAIN =  121, // 
+  SDL_SCANCODE_UNDO =  122, // 
+  SDL_SCANCODE_CUT =  123, // 
+  SDL_SCANCODE_COPY =  124, // 
+  SDL_SCANCODE_PASTE =  125, // 
+  SDL_SCANCODE_FIND =  126, // 
+  SDL_SCANCODE_MUTE =  127, // 
+  SDL_SCANCODE_VOLUMEUP =  128, // 
+  SDL_SCANCODE_VOLUMEDOWN =  129, // 
+  SDL_SCANCODE_KP_COMMA =  133, // 
+  SDL_SCANCODE_KP_EQUALSAS400 =  134, // 
+  SDL_SCANCODE_INTERNATIONAL1 =  135, // 
+  SDL_SCANCODE_INTERNATIONAL2 =  136, // 
+  SDL_SCANCODE_INTERNATIONAL3 =  137, // 
+  SDL_SCANCODE_INTERNATIONAL4 =  138, // 
+  SDL_SCANCODE_INTERNATIONAL5 =  139, // 
+  SDL_SCANCODE_INTERNATIONAL6 =  140, // 
+  SDL_SCANCODE_INTERNATIONAL7 =  141, // 
+  SDL_SCANCODE_INTERNATIONAL8 =  142, // 
+  SDL_SCANCODE_INTERNATIONAL9 =  143, // 
+  SDL_SCANCODE_LANG1 =  144, // 
+  SDL_SCANCODE_LANG2 =  145, // 
+  SDL_SCANCODE_LANG3 =  146, // 
+  SDL_SCANCODE_LANG4 =  147, // 
+  SDL_SCANCODE_LANG5 =  148, // 
+  SDL_SCANCODE_LANG6 =  149, // 
+  SDL_SCANCODE_LANG7 =  150, // 
+  SDL_SCANCODE_LANG8 =  151, // 
+  SDL_SCANCODE_LANG9 =  152, // 
+  SDL_SCANCODE_ALTERASE =  153, // 
+  SDL_SCANCODE_SYSREQ =  154, // 
+  SDL_SCANCODE_CANCEL =  155, // 
+  SDL_SCANCODE_CLEAR =  156, // 
+  SDL_SCANCODE_PRIOR =  157, // 
+  SDL_SCANCODE_RETURN2 =  158, // 
+  SDL_SCANCODE_SEPARATOR =  159, // 
+  SDL_SCANCODE_OUT =  160, // 
+  SDL_SCANCODE_OPER =  161, // 
+  SDL_SCANCODE_CLEARAGAIN =  162, // 
+  SDL_SCANCODE_CRSEL =  163, // 
+  SDL_SCANCODE_EXSEL =  164, // 
+  SDL_SCANCODE_KP_00 =  176, // 
+  SDL_SCANCODE_KP_000 =  177, // 
+  SDL_SCANCODE_THOUSANDSSEPARATOR =  178, // 
+  SDL_SCANCODE_DECIMALSEPARATOR =  179, // 
+  SDL_SCANCODE_CURRENCYUNIT =  180, // 
+  SDL_SCANCODE_CURRENCYSUBUNIT =  181, // 
+  SDL_SCANCODE_KP_LEFTPAREN =  182, // 
+  SDL_SCANCODE_KP_RIGHTPAREN =  183, // 
+  SDL_SCANCODE_KP_LEFTBRACE =  184, // 
+  SDL_SCANCODE_KP_RIGHTBRACE =  185, // 
+  SDL_SCANCODE_KP_TAB =  186, // 
+  SDL_SCANCODE_KP_BACKSPACE =  187, // 
+  SDL_SCANCODE_KP_A =  188, // 
+  SDL_SCANCODE_KP_B =  189, // 
+  SDL_SCANCODE_KP_C =  190, // 
+  SDL_SCANCODE_KP_D =  191, // 
+  SDL_SCANCODE_KP_E =  192, // 
+  SDL_SCANCODE_KP_F =  193, // 
+  SDL_SCANCODE_KP_XOR =  194, // 
+  SDL_SCANCODE_KP_POWER =  195, // 
+  SDL_SCANCODE_KP_PERCENT =  196, // 
+  SDL_SCANCODE_KP_LESS =  197, // 
+  SDL_SCANCODE_KP_GREATER =  198, // 
+  SDL_SCANCODE_KP_AMPERSAND =  199, // 
+  SDL_SCANCODE_KP_DBLAMPERSAND =  200, // 
+  SDL_SCANCODE_KP_VERTICALBAR =  201, // 
+  SDL_SCANCODE_KP_DBLVERTICALBAR =  202, // 
+  SDL_SCANCODE_KP_COLON =  203, // 
+  SDL_SCANCODE_KP_HASH =  204, // 
+  SDL_SCANCODE_KP_SPACE =  205, // 
+  SDL_SCANCODE_KP_AT =  206, // 
+  SDL_SCANCODE_KP_EXCLAM =  207, // 
+  SDL_SCANCODE_KP_MEMSTORE =  208, // 
+  SDL_SCANCODE_KP_MEMRECALL =  209, // 
+  SDL_SCANCODE_KP_MEMCLEAR =  210, // 
+  SDL_SCANCODE_KP_MEMADD =  211, // 
+  SDL_SCANCODE_KP_MEMSUBTRACT =  212, // 
+  SDL_SCANCODE_KP_MEMMULTIPLY =  213, // 
+  SDL_SCANCODE_KP_MEMDIVIDE =  214, // 
+  SDL_SCANCODE_KP_PLUSMINUS =  215, // 
+  SDL_SCANCODE_KP_CLEAR =  216, // 
+  SDL_SCANCODE_KP_CLEARENTRY =  217, // 
+  SDL_SCANCODE_KP_BINARY =  218, // 
+  SDL_SCANCODE_KP_OCTAL =  219, // 
+  SDL_SCANCODE_KP_DECIMAL =  220, // 
+  SDL_SCANCODE_KP_HEXADECIMAL =  221, // 
+  SDL_SCANCODE_LCTRL =  224, // 
+  SDL_SCANCODE_LSHIFT =  225, // 
+  SDL_SCANCODE_LALT =  226, // 
+  SDL_SCANCODE_LGUI =  227, // 
+  SDL_SCANCODE_RCTRL =  228, // 
+  SDL_SCANCODE_RSHIFT =  229, // 
+  SDL_SCANCODE_RALT =  230, // 
+  SDL_SCANCODE_RGUI =  231, // 
+  SDL_SCANCODE_MODE =  257, // 
+  SDL_SCANCODE_AUDIONEXT =  258, // 
+  SDL_SCANCODE_AUDIOPREV =  259, // 
+  SDL_SCANCODE_AUDIOSTOP =  260, // 
+  SDL_SCANCODE_AUDIOPLAY =  261, // 
+  SDL_SCANCODE_AUDIOMUTE =  262, // 
+  SDL_SCANCODE_MEDIASELECT =  263, // 
+  SDL_SCANCODE_WWW =  264, // 
+  SDL_SCANCODE_MAIL =  265, // 
+  SDL_SCANCODE_CALCULATOR =  266, // 
+  SDL_SCANCODE_COMPUTER =  267, // 
+  SDL_SCANCODE_AC_SEARCH =  268, // 
+  SDL_SCANCODE_AC_HOME =  269, // 
+  SDL_SCANCODE_AC_BACK =  270, // 
+  SDL_SCANCODE_AC_FORWARD =  271, // 
+  SDL_SCANCODE_AC_STOP =  272, // 
+  SDL_SCANCODE_AC_REFRESH =  273, // 
+  SDL_SCANCODE_AC_BOOKMARKS =  274, // 
+  SDL_SCANCODE_BRIGHTNESSDOWN =  275, // 
+  SDL_SCANCODE_BRIGHTNESSUP =  276, // 
+  SDL_SCANCODE_DISPLAYSWITCH =  277, // 
+  SDL_SCANCODE_KBDILLUMTOGGLE =  278, // 
+  SDL_SCANCODE_KBDILLUMDOWN =  279, // 
+  SDL_SCANCODE_KBDILLUMUP =  280, // 
+  SDL_SCANCODE_EJECT =  281, // 
+  SDL_SCANCODE_SLEEP =  282, // 
+  SDL_SCANCODE_APP1 =  283, // 
+  SDL_SCANCODE_APP2 =  284, // 
+  SDL_NUM_SCANCODES =  512 // 
+};
+#endif 
diff --git a/include/EnumSDLSysWMType.h b/include/EnumSDLSysWMType.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLSysWMType.h
@@ -0,0 +1,37 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumSDLSysWMType.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLSysWMType
+#define _DEFINED_HG3D_EnumSDLSysWMType
+
+
+enum EnumSDLSysWMType
+{
+  SDL_SYSWM_UNKNOWN, // 
+  SDL_SYSWM_WINDOWS, // 
+  SDL_SYSWM_X11, // 
+  SDL_SYSWM_DIRECTFB, // 
+  SDL_SYSWM_COCOA, // 
+  SDL_SYSWM_UIKIT // 
+};
+#endif 
diff --git a/include/EnumSDLSystemCursor.h b/include/EnumSDLSystemCursor.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLSystemCursor.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.
+// 
+
+// EnumSDLSystemCursor.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLSystemCursor
+#define _DEFINED_HG3D_EnumSDLSystemCursor
+
+
+enum EnumSDLSystemCursor
+{
+  SDL_SYSTEM_CURSOR_ARROW, // 
+  SDL_SYSTEM_CURSOR_IBEAM, // 
+  SDL_SYSTEM_CURSOR_WAIT, // 
+  SDL_SYSTEM_CURSOR_CROSSHAIR, // 
+  SDL_SYSTEM_CURSOR_WAITARROW, // 
+  SDL_SYSTEM_CURSOR_SIZENWSE, // 
+  SDL_SYSTEM_CURSOR_SIZENESW, // 
+  SDL_SYSTEM_CURSOR_SIZEWE, // 
+  SDL_SYSTEM_CURSOR_SIZENS, // 
+  SDL_SYSTEM_CURSOR_SIZEALL, // 
+  SDL_SYSTEM_CURSOR_NO, // 
+  SDL_SYSTEM_CURSOR_HAND, // 
+  SDL_NUM_SYSTEM_CURSORS // 
+};
+#endif 
diff --git a/include/EnumSDLTextureAccess.h b/include/EnumSDLTextureAccess.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLTextureAccess.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.
+// 
+
+// EnumSDLTextureAccess.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLTextureAccess
+#define _DEFINED_HG3D_EnumSDLTextureAccess
+
+
+enum EnumSDLTextureAccess
+{
+  SDL_TEXTUREACCESS_STATIC, // 
+  SDL_TEXTUREACCESS_STREAMING, // 
+  SDL_TEXTUREACCESS_TARGET // 
+};
+#endif 
diff --git a/include/EnumSDLTextureModulate.h b/include/EnumSDLTextureModulate.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLTextureModulate.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.
+// 
+
+// EnumSDLTextureModulate.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLTextureModulate
+#define _DEFINED_HG3D_EnumSDLTextureModulate
+
+
+enum EnumSDLTextureModulate
+{
+  SDL_TEXTUREMODULATE_NONE =  0x00000000, // 
+  SDL_TEXTUREMODULATE_COLOR =  0x00000001, // 
+  SDL_TEXTUREMODULATE_ALPHA =  0x00000002 // 
+};
+#endif 
diff --git a/include/EnumSDLThreadPriority.h b/include/EnumSDLThreadPriority.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLThreadPriority.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.
+// 
+
+// EnumSDLThreadPriority.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLThreadPriority
+#define _DEFINED_HG3D_EnumSDLThreadPriority
+
+
+enum EnumSDLThreadPriority
+{
+  SDL_THREAD_PRIORITY_LOW, // 
+  SDL_THREAD_PRIORITY_NORMAL, // 
+  SDL_THREAD_PRIORITY_HIGH // 
+};
+#endif 
diff --git a/include/EnumSDLWindowEventID.h b/include/EnumSDLWindowEventID.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLWindowEventID.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.
+// 
+
+// EnumSDLWindowEventID.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLWindowEventID
+#define _DEFINED_HG3D_EnumSDLWindowEventID
+
+
+enum EnumSDLWindowEventID
+{
+  SDL_WINDOWEVENT_NONE, // 
+  SDL_WINDOWEVENT_SHOWN, // 
+  SDL_WINDOWEVENT_HIDDEN, // 
+  SDL_WINDOWEVENT_EXPOSED, // 
+  SDL_WINDOWEVENT_MOVED, // 
+  SDL_WINDOWEVENT_RESIZED, // 
+  SDL_WINDOWEVENT_SIZE_CHANGED, // 
+  SDL_WINDOWEVENT_MINIMIZED, // 
+  SDL_WINDOWEVENT_MAXIMIZED, // 
+  SDL_WINDOWEVENT_RESTORED, // 
+  SDL_WINDOWEVENT_ENTER, // 
+  SDL_WINDOWEVENT_LEAVE, // 
+  SDL_WINDOWEVENT_FOCUS_GAINED, // 
+  SDL_WINDOWEVENT_FOCUS_LOST, // 
+  SDL_WINDOWEVENT_CLOSE // 
+};
+#endif 
diff --git a/include/EnumSDLWindowFlags.h b/include/EnumSDLWindowFlags.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLWindowFlags.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.
+// 
+
+// EnumSDLWindowFlags.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLWindowFlags
+#define _DEFINED_HG3D_EnumSDLWindowFlags
+
+
+enum EnumSDLWindowFlags
+{
+  SDL_WINDOW_FULLSCREEN =  0x00000001, // 
+  SDL_WINDOW_OPENGL =  0x00000002, // 
+  SDL_WINDOW_SHOWN =  0x00000004, // 
+  SDL_WINDOW_HIDDEN =  0x00000008, // 
+  SDL_WINDOW_BORDERLESS =  0x00000010, // 
+  SDL_WINDOW_RESIZABLE =  0x00000020, // 
+  SDL_WINDOW_MINIMIZED =  0x00000040, // 
+  SDL_WINDOW_MAXIMIZED =  0x00000080, // 
+  SDL_WINDOW_INPUT_GRABBED =  0x00000100, // 
+  SDL_WINDOW_INPUT_FOCUS =  0x00000200, // 
+  SDL_WINDOW_MOUSE_FOCUS =  0x00000400, // 
+  SDL_WINDOW_FULLSCREEN_DESKTOP =  ( SDL_WINDOW_FULLSCREEN | 0x00001000 ), // 
+  SDL_WINDOW_FOREIGN =  0x00000800, // 
+  SDL_WINDOW_ALLOW_HIGHDPI =  0x00002000 // 
+};
+#endif 
diff --git a/include/EnumSDLWindowShapeMode.h b/include/EnumSDLWindowShapeMode.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLWindowShapeMode.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.
+// 
+
+// EnumSDLWindowShapeMode.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLWindowShapeMode
+#define _DEFINED_HG3D_EnumSDLWindowShapeMode
+
+
+enum EnumSDLWindowShapeMode
+{
+  ShapeModeDefault, // The default mode, a binarized alpha cutoff of 1. 
+  ShapeModeBinarizeAlpha, // A binarized alpha cutoff with a given integer value. 
+  ShapeModeReverseBinarizeAlpha, // A binarized alpha cutoff with a given integer value, but with the opposite comparison. 
+  ShapeModeColorKey // A color key is applied. 
+};
+#endif 
diff --git a/include/HG3DUtilities.h b/include/HG3DUtilities.h
new file mode 100644
--- /dev/null
+++ b/include/HG3DUtilities.h
@@ -0,0 +1,28 @@
+/*
+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.
+*/
+
+#include "SDL.h"
+
+class HG3DUtilities
+{
+ public:
+  static SDL_Window* createWindowFromHandle(unsigned int handle);
+};
+
diff --git a/include/HeaderSDL.h b/include/HeaderSDL.h
new file mode 100644
--- /dev/null
+++ b/include/HeaderSDL.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.
+// 
+
+// HeaderSDL.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_HeaderSDL
+#define _DEFINED_HG3D_HeaderSDL
+
+#include "ClassPtr.h"
+
+
+// 
+void fsdl_sdl_Init(unsigned int flags_c, int * result_c);
+
+// 
+void fsdl_sdl_InitSubSystem(unsigned int flags_c, int * result_c);
+
+// 
+void fsdl_sdl_QuitSubSystem(unsigned int flags_c);
+
+// 
+void fsdl_sdl_WasInit(unsigned int flags_c, unsigned int * result_c);
+
+// 
+void fsdl_sdl_Quit();
+
+#endif 
diff --git a/include/HeaderSDLEvents.h b/include/HeaderSDLEvents.h
new file mode 100644
--- /dev/null
+++ b/include/HeaderSDLEvents.h
@@ -0,0 +1,55 @@
+// 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.
+// 
+
+// HeaderSDLEvents.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_HeaderSDLEvents
+#define _DEFINED_HG3D_HeaderSDLEvents
+
+#include "ClassPtr.h"
+#include "StructSDLEvent.h"
+
+
+// 
+void sdlevts_sdl_PumpEvents();
+
+// 
+void sdlevts_sdl_FlushEvent(unsigned int type_c);
+
+// 
+void sdlevts_sdl_FlushEvents(unsigned int minType_c, unsigned int maxType_c);
+
+// Polls for currently pending events. 
+void sdlevts_sdl_PollEvent(struct sdlevent_struct * event_c, int * result_c);
+
+// Waits indefinitely for the next available event. 
+void sdlevts_sdl_WaitEvent(struct sdlevent_struct * event_c, int * result_c);
+
+// Waits until the specified timeout (in milliseconds) for the next available event. 
+void sdlevts_sdl_WaitEventTimeout(struct sdlevent_struct * event_c, int timeout_c, int * result_c);
+
+// Add an event to the event queue. 
+void sdlevts_sdl_PushEvent(struct sdlevent_struct * event_c, int * result_c);
+
+// 
+void sdlevts_sdl_RegisterEvents(int numevents_c, unsigned int * result_c);
+
+#endif 
diff --git a/include/HeaderSDLKeyboard.h b/include/HeaderSDLKeyboard.h
new file mode 100644
--- /dev/null
+++ b/include/HeaderSDLKeyboard.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.
+// 
+
+// HeaderSDLKeyboard.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_HeaderSDLKeyboard
+#define _DEFINED_HG3D_HeaderSDLKeyboard
+
+#include "ClassPtr.h"
+
+
+// Get the window which currently has keyboard focus. 
+void skbd_sdl_GetKeyboardFocus(void * * result_c);
+
+// Start accepting Unicode text input events. This function will show the on-screen keyboard if supported. 
+void skbd_sdl_StartTextInput();
+
+// Stop receiving any text input events. This function will hide the on-screen keyboard if supported. 
+void skbd_sdl_StopTextInput();
+
+#endif 
diff --git a/include/HeaderSDLMouse.h b/include/HeaderSDLMouse.h
new file mode 100644
--- /dev/null
+++ b/include/HeaderSDLMouse.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.
+// 
+
+// HeaderSDLMouse.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_HeaderSDLMouse
+#define _DEFINED_HG3D_HeaderSDLMouse
+
+#include "ClassPtr.h"
+
+
+// Get the window which currently has mouse focus. 
+void sdlms_sdl_GetMouseFocus(void * * result_c);
+
+// Retrieve the current state of the mouse. 
+void sdlms_sdl_GetMouseState(int * x_c, int * y_c, unsigned int * result_c);
+
+// Retrieve the relative state of the mouse. 
+void sdlms_sdl_GetRelativeMouseState(int * x_c, int * y_c, unsigned int * result_c);
+
+// Moves the mouse to the given position within the window. 
+void sdlms_sdl_WarpMouseInWindow(void * window_c, int x_c, int y_c);
+
+// Toggle whether or not the cursor is shown. 
+void sdlms_sdl_ShowCursor(int toggle_c, int * result_c);
+
+#endif 
diff --git a/include/HeaderSDLVideo.h b/include/HeaderSDLVideo.h
new file mode 100644
--- /dev/null
+++ b/include/HeaderSDLVideo.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.
+// 
+
+// HeaderSDLVideo.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_HeaderSDLVideo
+#define _DEFINED_HG3D_HeaderSDLVideo
+
+#include "ClassPtr.h"
+
+
+// Get the number of video drivers compiled into SDL. 
+void fsdlvid_sdl_GetNumVideoDrivers(int * result_c);
+
+// Get the name of a built in video driver. 
+void fsdlvid_sdl_GetVideoDriver(int index_c, char * result_c);
+
+// Initialize the video subsystem, optionally specifying a video driver. 
+void fsdlvid_sdl_VideoInit(char * driver_name_c, int * result_c);
+
+// Shuts down the video subsystem. 
+void fsdlvid_sdl_VideoQuit();
+
+// Returns the name of the currently initialized video driver. 
+void fsdlvid_sdl_GetCurrentVideoDriver(char * result_c);
+
+// Returns the number of available video displays. 
+void fsdlvid_sdl_GetNumVideoDisplays(int * result_c);
+
+// Get the name of a display in UTF-8 encoding. 
+void fsdlvid_sdl_GetDisplayName(int displayIndex_c, char * result_c);
+
+// Returns the number of available display modes. 
+void fsdlvid_sdl_GetNumDisplayModes(int displayIndex_c, int * result_c);
+
+// Get the display index associated with a window. 
+void fsdlvid_sdl_GetWindowDisplayIndex(void * window_c, int * result_c);
+
+// Get the pixel format associated with the window. 
+void fsdlvid_sdl_GetWindowPixelFormat(void * window_c, unsigned int * result_c);
+
+// Create a window with the specified position, dimensions, and flags. 
+void fsdlvid_sdl_CreateWindow(char * title_c, int x_c, int y_c, int w_c, int h_c, unsigned int flags_c, void * * result_c);
+
+// Get the numeric ID of a window, for logging purposes. 
+void fsdlvid_sdl_GetWindowID(void * window_c, unsigned int * result_c);
+
+// Get a window from a stored ID, or NULL if it doesn't exist. 
+void fsdlvid_sdl_GetWindowFromID(unsigned int id_c, void * * result_c);
+
+// Get the window flags. 
+void fsdlvid_sdl_GetWindowFlags(void * window_c, unsigned int * result_c);
+
+// Set the title of a window, in UTF-8 format. 
+void fsdlvid_sdl_SetWindowTitle(void * window_c, char * title_c);
+
+// Get the title of a window, in UTF-8 format. 
+void fsdlvid_sdl_GetWindowTitle(void * window_c, char * result_c);
+
+// Set the position of a window. 
+void fsdlvid_sdl_SetWindowPosition(void * window_c, int x_c, int y_c);
+
+// Get the position of a window. 
+void fsdlvid_sdl_GetWindowPosition(void * window_c, int * x_c, int * y_c);
+
+// Set the size of a window's client area. 
+void fsdlvid_sdl_SetWindowSize(void * window_c, int w_c, int h_c);
+
+// Get the size of a window's client area. 
+void fsdlvid_sdl_GetWindowSize(void * window_c, int * w_c, int * h_c);
+
+// Set the minimum size of a window's client area. 
+void fsdlvid_sdl_SetWindowMinimumSize(void * window_c, int min_w_c, int min_h_c);
+
+// Get the minimum size of a window's client area. 
+void fsdlvid_sdl_GetWindowMinimumSize(void * window_c, int * w_c, int * h_c);
+
+// Set the maximum size of a window's client area. 
+void fsdlvid_sdl_SetWindowMaximumSize(void * window_c, int max_w_c, int max_h_c);
+
+// Get the maximum size of a window's client area. 
+void fsdlvid_sdl_GetWindowMaximumSize(void * window_c, int * w_c, int * h_c);
+
+// Show a window. 
+void fsdlvid_sdl_ShowWindow(void * window_c);
+
+// Hide a window. 
+void fsdlvid_sdl_HideWindow(void * window_c);
+
+// Raise a window above other windows and set the input focus. 
+void fsdlvid_sdl_RaiseWindow(void * window_c);
+
+// Make a window as large as possible. 
+void fsdlvid_sdl_MaximizeWindow(void * window_c);
+
+// Minimize a window to an iconic representation. 
+void fsdlvid_sdl_MinimizeWindow(void * window_c);
+
+// Restore the size and position of a minimized or maximized window. 
+void fsdlvid_sdl_RestoreWindow(void * window_c);
+
+// Set a window's fullscreen state. 
+void fsdlvid_sdl_SetWindowFullscreen(void * window_c, unsigned int flags_c, int * result_c);
+
+// Copy the window surface to the screen. 
+void fsdlvid_sdl_UpdateWindowSurface(void * window_c, int * result_c);
+
+// Set the brightness (gamma correction) for a window. 
+void fsdlvid_sdl_SetWindowBrightness(void * window_c, float brightness_c, int * result_c);
+
+// Get the brightness (gamma correction) for a window. 
+void fsdlvid_sdl_GetWindowBrightness(void * window_c, float * result_c);
+
+// Destroy a window. 
+void fsdlvid_sdl_DestroyWindow(void * window_c);
+
+// Allow the screen to be blanked by a screensaver. 
+void fsdlvid_sdl_EnableScreenSaver();
+
+// Prevent the screen from being blanked by a screensaver. 
+void fsdlvid_sdl_DisableScreenSaver();
+
+#endif 
diff --git a/include/SDL2DllDefines.h b/include/SDL2DllDefines.h
new file mode 100644
--- /dev/null
+++ b/include/SDL2DllDefines.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.
+// 
+
+
+// SDL2DllDefines.h
+
+#ifndef _HGamer3DSDL2032_DLLDEFINES_H_
+#define _HGamer3DSDL2032_DLLDEFINES_H_
+
+/* Cmake will define HGamer3DSDL2032_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(HGamer3DSDL2032_EXPORTS)
+    #define  SDL2_LIB_EXPORT __declspec(dllexport)
+  #else
+    #define  SDL2_LIB_EXPORT __declspec(dllimport)
+  #endif /* HGamer3DSDL2032_EXPORTS */
+#else /* defined (_WIN32) */
+ #define SDL2_LIB_EXPORT
+#endif
+
+#endif /* _HGamer3DSDL2032_DLLDEFINES_H_ */
diff --git a/include/StructHG3DClass.h b/include/StructHG3DClass.h
new file mode 100644
--- /dev/null
+++ b/include/StructHG3DClass.h
@@ -0,0 +1,29 @@
+// 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"
+
+
+typedef struct hg3dclass_struct {
+	void *ptr;
+	void *fptr;
+} hg3dclass_struct;
diff --git a/include/StructSDLEvent.h b/include/StructSDLEvent.h
new file mode 100644
--- /dev/null
+++ b/include/StructSDLEvent.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.
+// 
+
+// StructSDLEvent.h
+
+// 
+
+#include "wchar.h"
+
+
+#ifndef _INC_STRUCT_SDLEVENT
+#define _INC_STRUCT_SDLEVENT
+
+typedef struct sdlevent_struct {
+  int type;
+  int what;
+  int data[12];
+} sdlevent_struct;
+
+#endif
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/sdlevent_struct.h b/include/sdlevent_struct.h
deleted file mode 100644
--- a/include/sdlevent_struct.h
+++ /dev/null
@@ -1,3 +0,0 @@
-typedef struct sdlevent_struct {
-  unsigned int sdl_event_data[14];
-} sdlevent_struct;
