diff --git a/C2HS.hs b/C2HS.hs
deleted file mode 100644
--- a/C2HS.hs
+++ /dev/null
@@ -1,238 +0,0 @@
---  C->Haskell Compiler: Marshalling library
---
---  Copyright (c) [1999...2005] Manuel M T Chakravarty
---
---  Redistribution and use in source and binary forms, with or without
---  modification, are permitted provided that the following conditions are met:
--- 
---  1. Redistributions of source code must retain the above copyright notice,
---     this list of conditions and the following disclaimer. 
---  2. Redistributions in binary form must reproduce the above copyright
---     notice, this list of conditions and the following disclaimer in the
---     documentation and/or other materials provided with the distribution. 
---  3. The name of the author may not be used to endorse or promote products
---     derived from this software without specific prior written permission. 
---
---  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
---  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
---  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
---  NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
---  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
---  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
---  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
---  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
---  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
---  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---
---- Description ---------------------------------------------------------------
---
---  Language: Haskell 98
---
---  This module provides the marshaling routines for Haskell files produced by 
---  C->Haskell for binding to C library interfaces.  It exports all of the
---  low-level FFI (language-independent plus the C-specific parts) together
---  with the C->HS-specific higher-level marshalling routines.
---
-
-module C2HS (
-
-  -- * Re-export the language-independent component of the FFI 
-  module Foreign,
-
-  -- * Re-export the C language component of the FFI
-  module Foreign.C,
-
-  -- * Composite marshalling functions
-  withCStringLenIntConv, peekCStringLenIntConv, withIntConv, withFloatConv,
-  peekIntConv, peekFloatConv, withBool, peekBool, withEnum, peekEnum,
-
-  -- * Conditional results using 'Maybe'
-  nothingIf, nothingIfNull,
-
-  -- * Bit masks
-  combineBitMasks, containsBitMask, extractBitMasks,
-
-  -- * Conversion between C and Haskell types
-  cIntConv, cFloatConv, cToBool, cFromBool, cToEnum, cFromEnum
-) where 
-
-
-import Foreign
-import Foreign.C
-
-import Monad (liftM)
-
-
--- Composite marshalling functions
--- -------------------------------
-
--- Strings with explicit length
---
-withCStringLenIntConv :: Num n => String -> ((CString, n) -> IO a) -> IO a
-withCStringLenIntConv s f    = withCStringLen s $ \(p, n) -> f (p, fromIntegral n)
-
-peekCStringLenIntConv :: Integral n => (CString, n) -> IO String
-peekCStringLenIntConv (s, n) = peekCStringLen (s, fromIntegral n)
-
--- Marshalling of numerals
---
-
-withIntConv   :: (Storable b, Integral a, Integral b) 
-              => a -> (Ptr b -> IO c) -> IO c
-withIntConv    = with . fromIntegral
-
-withFloatConv :: (Storable b, RealFloat a, RealFloat b) 
-              => a -> (Ptr b -> IO c) -> IO c
-withFloatConv  = with . realToFrac
-
-peekIntConv   :: (Storable a, Integral a, Integral b) 
-              => Ptr a -> IO b
-peekIntConv    = liftM fromIntegral . peek
-
-peekFloatConv :: (Storable a, RealFloat a, RealFloat b) 
-              => Ptr a -> IO b
-peekFloatConv  = liftM realToFrac . peek
-
-
--- Everything else below is deprecated.
--- These functions are not used by code generated by c2hs.
-
-{-# DEPRECATED withBool        "The C2HS module will soon stop providing unnecessary\nutility functions. Please use standard FFI library functions instead." #-}
-{-# DEPRECATED peekBool        "The C2HS module will soon stop providing unnecessary\nutility functions. Please use standard FFI library functions instead." #-}
-{-# DEPRECATED withEnum        "The C2HS module will soon stop providing unnecessary\nutility functions. Please use standard FFI library functions instead." #-}
-{-# DEPRECATED peekEnum        "The C2HS module will soon stop providing unnecessary\nutility functions. Please use standard FFI library functions instead." #-}
-{-# DEPRECATED nothingIf       "The C2HS module will soon stop providing unnecessary\nutility functions. Please use standard FFI library functions instead." #-}
-{-# DEPRECATED nothingIfNull   "The C2HS module will soon stop providing unnecessary\nutility functions. Please use standard FFI library functions instead." #-}
-{-# DEPRECATED combineBitMasks "The C2HS module will soon stop providing unnecessary\nutility functions. Please use standard FFI library functions instead." #-}
-{-# DEPRECATED containsBitMask "The C2HS module will soon stop providing unnecessary\nutility functions. Please use standard FFI library functions instead." #-}
-{-# DEPRECATED extractBitMasks "The C2HS module will soon stop providing unnecessary\nutility functions. Please use standard FFI library functions instead." #-}
-{-# DEPRECATED cIntConv        "The C2HS module will soon stop providing unnecessary\nutility functions. Please use standard FFI library functions instead." #-}
-{-# DEPRECATED cFloatConv      "The C2HS module will soon stop providing unnecessary\nutility functions. Please use standard FFI library functions instead." #-}
-{-# DEPRECATED cFromBool       "The C2HS module will soon stop providing unnecessary\nutility functions. Please use standard FFI library functions instead." #-}
-{-# DEPRECATED cToBool         "The C2HS module will soon stop providing unnecessary\nutility functions. Please use standard FFI library functions instead." #-}
-{-# DEPRECATED cToEnum         "The C2HS module will soon stop providing unnecessary\nutility functions. Please use standard FFI library functions instead." #-}
-{-# DEPRECATED cFromEnum       "The C2HS module will soon stop providing unnecessary\nutility functions. Please use standard FFI library functions instead." #-}
-
-
--- Passing Booleans by reference
---
-
-withBool :: (Integral a, Storable a) => Bool -> (Ptr a -> IO b) -> IO b
-withBool  = with . fromBool
-
-peekBool :: (Integral a, Storable a) => Ptr a -> IO Bool
-peekBool  = liftM toBool . peek
-
-
--- Passing enums by reference
---
-
-withEnum :: (Enum a, Integral b, Storable b) => a -> (Ptr b -> IO c) -> IO c
-withEnum  = with . cFromEnum
-
-peekEnum :: (Enum a, Integral b, Storable b) => Ptr b -> IO a
-peekEnum  = liftM cToEnum . peek
-
-
--- Storing of 'Maybe' values
--- -------------------------
-
---TODO: kill off this orphan instance!
-
-instance Storable a => Storable (Maybe a) where
-  sizeOf    _ = sizeOf    (undefined :: Ptr ())
-  alignment _ = alignment (undefined :: Ptr ())
-
-  peek p = do
-             ptr <- peek (castPtr p)
-             if ptr == nullPtr
-               then return Nothing
-               else liftM Just $ peek ptr
-
-  poke p v = do
-               ptr <- case v of
-                        Nothing -> return nullPtr
-                        Just v' -> new v'
-               poke (castPtr p) ptr
-
-
--- Conditional results using 'Maybe'
--- ---------------------------------
-
--- Wrap the result into a 'Maybe' type.
---
--- * the predicate determines when the result is considered to be non-existing,
---   ie, it is represented by `Nothing'
---
--- * the second argument allows to map a result wrapped into `Just' to some
---   other domain
---
-nothingIf       :: (a -> Bool) -> (a -> b) -> a -> Maybe b
-nothingIf p f x  = if p x then Nothing else Just $ f x
-
--- |Instance for special casing null pointers.
---
-nothingIfNull :: (Ptr a -> b) -> Ptr a -> Maybe b
-nothingIfNull  = nothingIf (== nullPtr)
-
-
--- Support for bit masks
--- ---------------------
-
--- Given a list of enumeration values that represent bit masks, combine these
--- masks using bitwise disjunction.
---
-combineBitMasks :: (Enum a, Bits b) => [a] -> b
-combineBitMasks = foldl (.|.) 0 . map (fromIntegral . fromEnum)
-
--- Tests whether the given bit mask is contained in the given bit pattern
--- (i.e., all bits set in the mask are also set in the pattern).
---
-containsBitMask :: (Bits a, Enum b) => a -> b -> Bool
-bits `containsBitMask` bm = let bm' = fromIntegral . fromEnum $ bm
-                            in
-                            bm' .&. bits == bm'
-
--- |Given a bit pattern, yield all bit masks that it contains.
---
--- * This does *not* attempt to compute a minimal set of bit masks that when
---   combined yield the bit pattern, instead all contained bit masks are
---   produced.
---
-extractBitMasks :: (Bits a, Enum b, Bounded b) => a -> [b]
-extractBitMasks bits = 
-  [bm | bm <- [minBound..maxBound], bits `containsBitMask` bm]
-
-
--- Conversion routines
--- -------------------
-
--- |Integral conversion
---
-cIntConv :: (Integral a, Integral b) => a -> b
-cIntConv  = fromIntegral
-
--- |Floating conversion
---
-cFloatConv :: (RealFloat a, RealFloat b) => a -> b
-cFloatConv  = realToFrac
-
--- |Obtain C value from Haskell 'Bool'.
---
-cFromBool :: Num a => Bool -> a
-cFromBool  = fromBool
-
--- |Obtain Haskell 'Bool' from C value.
---
-cToBool :: Num a => a -> Bool
-cToBool  = toBool
-
--- |Convert a C enumeration to Haskell.
---
-cToEnum :: (Integral i, Enum e) => i -> e
-cToEnum  = toEnum . fromIntegral
-
--- |Convert a Haskell enumeration to C.
---
-cFromEnum :: (Enum e, Integral i) => e -> i
-cFromEnum  = fromIntegral . fromEnum
diff --git a/HGamer3D-SFML-Binding.cabal b/HGamer3D-SFML-Binding.cabal
--- a/HGamer3D-SFML-Binding.cabal
+++ b/HGamer3D-SFML-Binding.cabal
@@ -1,39 +1,38 @@
 Name:                HGamer3D-SFML-Binding
-Version:             0.1.6
-Synopsis:            Library to enable 3D game development for Haskell - SFML Bindings
+Version:             0.5.0
+Synopsis:            SFML Binding for HGamer3D
 Description:         
-   Library, to enable 3D game development for Haskell,
-   based on bindings to 3D Graphics, Audio and GUI libraries.
-   
-   This is the SFML Bindings module, which provides Audio and
-   Input System (Joystick, Mouse, Keyboard) functionality.
-   
-   Platform: Windows only
-   License: Apache License, Version 2.0
-   Install: see http://www.althainz.de/HGamer3D/Download-and-Installation.html
-   
+   HGamer3D is a game engine for developing 3D games in the programming 
+   language Haskell. This package provides the SFML binding. 
+   HGamer3D-SFML-Binding is available on Windows and Linux. 
+   This binding does not claim to have full coverage of SFML 
+   functionality, but only to support what is needed for the
+   HGamer3D-Audio and HGamer3D-InputSystem packages.
 
 	
 License:             OtherLicense
 License-file:        LICENSE
 Author:              Peter Althainz
-Maintainer:          althainz@googlemail.com
+Maintainer:          althainz@gmail.com
 Build-Type:          Simple
-Cabal-Version:       >=1.2
-Homepage:            http://www.althainz.de/HGamer3D.html
-Category:            Game
-Extra-source-files:  Setup.hs, include/ClassJoystick.h, include/ClassKeyboard.h, include/ClassListener.h, include/ClassMouse.h, include/ClassMouseHG3D.h, include/ClassMusic.h, include/ClassPtr.h, include/ClassSound.h, include/ClassSoundBuffer.h, include/ClassSoundSource.h, include/ClassSoundStream.h, include/EnumJoystickAxis.h, include/EnumKey.h, include/EnumMouseButton.h, include/EnumSoundSourceStatus.h, include/SFMLDllDefines.h, include/StructHG3DClass.h
+Cabal-Version:       >=1.4
+Homepage:            http://www.hgamer3d.org
+Category:            Game Engine, Audio, Graphics
+Extra-source-files:  Setup.hs, include/ClassJoystick.h, include/ClassKeyboard.h, include/ClassListener.h, include/ClassMouse.h, include/ClassMouseHG3D.h, include/ClassMusic.h, include/ClassPtr.h, include/ClassSound.h, include/ClassSoundBuffer.h, include/ClassSoundSource.h, include/ClassSoundStream.h, include/EnumJoystickAxis.h, include/EnumKey.h, include/EnumMouseButton.h, include/EnumSoundSourceStatus.h, include/hg3dstruct.h, include/MouseHG3D.h, include/SFMLDllDefines.h, include/StructHG3DClass.h, include/StructVec3.h, include/vector2fstruct.h, include/vector2istruct.h, include/vector3fstruct.h, include/vector3istruct.h
 
 Library
-  Build-Depends:     base >= 3 && < 5, HGamer3D-Data == 0.1.5
+  Build-Depends:     base >= 3 && < 5, HGamer3D-Data >= 0.5.0
 
-  Exposed-modules:   HGamer3D.Bindings.SFML.ClassPtr, HGamer3D.Bindings.SFML.StructHG3DClass, HGamer3D.Bindings.SFML.Utils, HGamer3D.Bindings.SFML.ClassJoystick, HGamer3D.Bindings.SFML.ClassKeyboard, HGamer3D.Bindings.SFML.ClassListener, HGamer3D.Bindings.SFML.ClassMouse, HGamer3D.Bindings.SFML.ClassMouseHG3D, HGamer3D.Bindings.SFML.ClassMusic, HGamer3D.Bindings.SFML.ClassSound, HGamer3D.Bindings.SFML.ClassSoundBuffer, HGamer3D.Bindings.SFML.ClassSoundSource, HGamer3D.Bindings.SFML.ClassSoundStream, HGamer3D.Bindings.SFML.EnumJoystickAxis, HGamer3D.Bindings.SFML.EnumKey, HGamer3D.Bindings.SFML.EnumMouseButton, HGamer3D.Bindings.SFML.EnumSoundSourceStatus
-  Other-modules:     C2HS 
+  Exposed-modules:   HGamer3D.Bindings.SFML.Utils, HGamer3D.Bindings.SFML.ClassPtr, HGamer3D.Bindings.SFML.StructHG3DClass, HGamer3D.Bindings.SFML.EnumJoystickAxis, HGamer3D.Bindings.SFML.EnumKey, HGamer3D.Bindings.SFML.EnumMouseButton, HGamer3D.Bindings.SFML.EnumSoundSourceStatus, HGamer3D.Bindings.SFML.StructVec3, HGamer3D.Bindings.SFML.ClassJoystick, HGamer3D.Bindings.SFML.ClassKeyboard, HGamer3D.Bindings.SFML.ClassListener, HGamer3D.Bindings.SFML.ClassMouse, HGamer3D.Bindings.SFML.ClassMouseHG3D, HGamer3D.Bindings.SFML.ClassMusic, HGamer3D.Bindings.SFML.ClassSound, HGamer3D.Bindings.SFML.ClassSoundBuffer, HGamer3D.Bindings.SFML.ClassSoundSource, HGamer3D.Bindings.SFML.ClassSoundStream
+  Other-modules:     
 
-  ghc-options:       
+  ghc-options:       -O2
   cc-options:        -Wno-attributes 
   hs-source-dirs:    .
   Include-dirs:      include
   Build-tools:       
-  build-depends:     haskell98
-  extra-libraries:   HGamer3DSFML016
+  build-depends:     
+  if os(windows)
+     extra-libraries:   hg3dsfml050
+  else
+     extra-libraries:   hg3dsfml050,sfml-audio,sfml-system,sfml-window,sfml-network
diff --git a/HGamer3D/Bindings/SFML/ClassJoystick.chs b/HGamer3D/Bindings/SFML/ClassJoystick.chs
--- a/HGamer3D/Bindings/SFML/ClassJoystick.chs
+++ b/HGamer3D/Bindings/SFML/ClassJoystick.chs
@@ -1,82 +1,76 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-
--- This source file is part of HGamer3D
--- (A project to enable 3D game development in Haskell)
--- For the latest info, see http://www.althainz.de/HGamer3D.html
--- 
-
--- (c) 2011, 2012 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.
--- 
-
-
--- ClassJoystick.chs
-
--- 
-
-module HGamer3D.Bindings.SFML.ClassJoystick where
-
-import C2HS
-import Foreign
-import Foreign.Ptr
-import Foreign.C
-import Monad         (liftM, liftM2)
-
-import HGamer3D.Data.HG3DClass
-import HGamer3D.Data.Vector2
-import HGamer3D.Data.Vector3
-import HGamer3D.Data.Vector4
-import HGamer3D.Data.Quaternion
-import HGamer3D.Data.Colour
-import HGamer3D.Data.Angle
-
-{# import HGamer3D.Bindings.SFML.Utils #}
-{# import HGamer3D.Bindings.SFML.ClassPtr #}
-{# import HGamer3D.Bindings.SFML.StructHG3DClass #}
-import HGamer3D.Bindings.SFML.EnumJoystickAxis
-
-#include "ClassJoystick.h"
-{- function isConnected -}
-{#fun sfml_jst_isConnected as isConnected 
-{ fromIntegral `Int' ,
- alloca- `Bool' peekBoolUtil*} -> `()'  #}
-
-{- function getButtonCount -}
-{#fun sfml_jst_getButtonCount as getButtonCount 
-{ fromIntegral `Int' ,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function hasAxis -}
-{#fun sfml_jst_hasAxis as hasAxis 
-{ fromIntegral `Int' ,
- cIntFromEnum `EnumJoystickAxis' ,
- alloca- `Bool' peekBoolUtil*} -> `()'  #}
-
-{- function isButtonPressed -}
-{#fun sfml_jst_isButtonPressed as isButtonPressed 
-{ fromIntegral `Int' ,
- fromIntegral `Int' ,
- alloca- `Bool' peekBoolUtil*} -> `()'  #}
-
-{- function getAxisPosition -}
-{#fun sfml_jst_getAxisPosition as getAxisPosition 
-{ fromIntegral `Int' ,
- cIntFromEnum `EnumJoystickAxis' ,
- alloca- `Float' peekFloatConv*} -> `()'  #}
-
-{- function update -}
-{#fun sfml_jst_update as update 
-{ } -> `()'  #}
-
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+-- This source file is part of HGamer3D, a project to enable 3D game development 
+-- in Haskell. For the latest info, see http://www.hgamer3d.org .
+-- 
+
+-- (c) 2011-2014 Peter Althainz
+-- 
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+-- 
+--     http://www.apache.org/licenses/LICENSE-2.0
+-- 
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- 
+
+
+-- ClassJoystick.chs
+
+-- 
+
+module HGamer3D.Bindings.SFML.ClassJoystick where
+
+import Foreign
+import Foreign.Ptr
+import Foreign.C
+
+import HGamer3D.Data.HG3DClass
+import HGamer3D.Data.Vector
+import HGamer3D.Data.Colour
+import HGamer3D.Data.Angle
+
+{# import HGamer3D.Bindings.SFML.Utils #}
+{# import HGamer3D.Bindings.SFML.ClassPtr #}
+{# import HGamer3D.Bindings.SFML.StructHG3DClass #}
+{# import HGamer3D.Bindings.SFML.EnumJoystickAxis #}
+
+#include "ClassJoystick.h"
+{- function isConnected -}
+{#fun sfml_jst_isConnected as isConnected 
+{ fromIntegral `Int' ,
+ alloca- `Bool' peekBoolUtil*} -> `()'  #}
+
+{- function getButtonCount -}
+{#fun sfml_jst_getButtonCount as getButtonCount 
+{ fromIntegral `Int' ,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function hasAxis -}
+{#fun sfml_jst_hasAxis as hasAxis 
+{ fromIntegral `Int' ,
+ cIntFromEnum `EnumJoystickAxis' ,
+ alloca- `Bool' peekBoolUtil*} -> `()'  #}
+
+{- function isButtonPressed -}
+{#fun sfml_jst_isButtonPressed as isButtonPressed 
+{ fromIntegral `Int' ,
+ fromIntegral `Int' ,
+ alloca- `Bool' peekBoolUtil*} -> `()'  #}
+
+{- function getAxisPosition -}
+{#fun sfml_jst_getAxisPosition as getAxisPosition 
+{ fromIntegral `Int' ,
+ cIntFromEnum `EnumJoystickAxis' ,
+ alloca- `Float' peekFloatConv*} -> `()'  #}
+
+{- function update -}
+{#fun sfml_jst_update as update 
+{ } -> `()'  #}
+
diff --git a/HGamer3D/Bindings/SFML/ClassKeyboard.chs b/HGamer3D/Bindings/SFML/ClassKeyboard.chs
--- a/HGamer3D/Bindings/SFML/ClassKeyboard.chs
+++ b/HGamer3D/Bindings/SFML/ClassKeyboard.chs
@@ -1,55 +1,49 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-
--- This source file is part of HGamer3D
--- (A project to enable 3D game development in Haskell)
--- For the latest info, see http://www.althainz.de/HGamer3D.html
--- 
-
--- (c) 2011, 2012 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.
--- 
-
-
--- ClassKeyboard.chs
-
--- 
-
-module HGamer3D.Bindings.SFML.ClassKeyboard where
-
-import C2HS
-import Foreign
-import Foreign.Ptr
-import Foreign.C
-import Monad         (liftM, liftM2)
-
-import HGamer3D.Data.HG3DClass
-import HGamer3D.Data.Vector2
-import HGamer3D.Data.Vector3
-import HGamer3D.Data.Vector4
-import HGamer3D.Data.Quaternion
-import HGamer3D.Data.Colour
-import HGamer3D.Data.Angle
-
-{# import HGamer3D.Bindings.SFML.Utils #}
-{# import HGamer3D.Bindings.SFML.ClassPtr #}
-{# import HGamer3D.Bindings.SFML.StructHG3DClass #}
-import HGamer3D.Bindings.SFML.EnumKey
-
-#include "ClassKeyboard.h"
-{- function isKeyPressed -}
-{#fun sfml_kbd_isKeyPressed as isKeyPressed 
-{ cIntFromEnum `EnumKey' ,
- alloca- `Bool' peekBoolUtil*} -> `()'  #}
-
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+-- This source file is part of HGamer3D, a project to enable 3D game development 
+-- in Haskell. For the latest info, see http://www.hgamer3d.org .
+-- 
+
+-- (c) 2011-2014 Peter Althainz
+-- 
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+-- 
+--     http://www.apache.org/licenses/LICENSE-2.0
+-- 
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- 
+
+
+-- ClassKeyboard.chs
+
+-- 
+
+module HGamer3D.Bindings.SFML.ClassKeyboard where
+
+import Foreign
+import Foreign.Ptr
+import Foreign.C
+
+import HGamer3D.Data.HG3DClass
+import HGamer3D.Data.Vector
+import HGamer3D.Data.Colour
+import HGamer3D.Data.Angle
+
+{# import HGamer3D.Bindings.SFML.Utils #}
+{# import HGamer3D.Bindings.SFML.ClassPtr #}
+{# import HGamer3D.Bindings.SFML.StructHG3DClass #}
+{# import HGamer3D.Bindings.SFML.EnumKey #}
+
+#include "ClassKeyboard.h"
+{- function isKeyPressed -}
+{#fun sfml_kbd_isKeyPressed as isKeyPressed 
+{ cIntFromEnum `EnumKey' ,
+ alloca- `Bool' peekBoolUtil*} -> `()'  #}
+
diff --git a/HGamer3D/Bindings/SFML/ClassListener.chs b/HGamer3D/Bindings/SFML/ClassListener.chs
--- a/HGamer3D/Bindings/SFML/ClassListener.chs
+++ b/HGamer3D/Bindings/SFML/ClassListener.chs
@@ -1,69 +1,72 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-
--- This source file is part of HGamer3D
--- (A project to enable 3D game development in Haskell)
--- For the latest info, see http://www.althainz.de/HGamer3D.html
--- 
-
--- (c) 2011, 2012 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.
--- 
-
-
--- ClassListener.chs
-
--- 
-
-module HGamer3D.Bindings.SFML.ClassListener where
-
-import C2HS
-import Foreign
-import Foreign.Ptr
-import Foreign.C
-import Monad         (liftM, liftM2)
-
-import HGamer3D.Data.HG3DClass
-import HGamer3D.Data.Vector2
-import HGamer3D.Data.Vector3
-import HGamer3D.Data.Vector4
-import HGamer3D.Data.Quaternion
-import HGamer3D.Data.Colour
-import HGamer3D.Data.Angle
-
-{# import HGamer3D.Bindings.SFML.Utils #}
-{# import HGamer3D.Bindings.SFML.ClassPtr #}
-{# import HGamer3D.Bindings.SFML.StructHG3DClass #}
-
-#include "ClassListener.h"
-{- function setGlobalVolume -}
-{#fun sfml_lst_setGlobalVolume as setGlobalVolume 
-{ realToFrac `Float' } -> `()'  #}
-
-{- function getGlobalVolume -}
-{#fun sfml_lst_getGlobalVolume as getGlobalVolume 
-{ alloca- `Float' peekFloatConv*} -> `()'  #}
-
-{- function setPosition -}
-{#fun sfml_lst_setPosition as setPosition 
-{ realToFrac `Float' ,
- realToFrac `Float' ,
- realToFrac `Float' } -> `()'  #}
-
-{- function setDirection -}
-{#fun sfml_lst_setDirection as setDirection 
-{ realToFrac `Float' ,
- realToFrac `Float' ,
- realToFrac `Float' } -> `()'  #}
-
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+-- This source file is part of HGamer3D, a project to enable 3D game development 
+-- in Haskell. For the latest info, see http://www.hgamer3d.org .
+-- 
+
+-- (c) 2011-2014 Peter Althainz
+-- 
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+-- 
+--     http://www.apache.org/licenses/LICENSE-2.0
+-- 
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- 
+
+
+-- ClassListener.chs
+
+-- 
+
+module HGamer3D.Bindings.SFML.ClassListener where
+
+import Foreign
+import Foreign.Ptr
+import Foreign.C
+
+import HGamer3D.Data.HG3DClass
+import HGamer3D.Data.Vector
+import HGamer3D.Data.Colour
+import HGamer3D.Data.Angle
+
+{# import HGamer3D.Bindings.SFML.Utils #}
+{# import HGamer3D.Bindings.SFML.ClassPtr #}
+{# import HGamer3D.Bindings.SFML.StructHG3DClass #}
+{# import HGamer3D.Bindings.SFML.StructVec3 #}
+
+#include "ClassListener.h"
+{- function setGlobalVolume -}
+{#fun sfml_lst_setGlobalVolume as setGlobalVolume 
+{ realToFrac `Float' } -> `()'  #}
+
+{- function getGlobalVolume -}
+{#fun sfml_lst_getGlobalVolume as getGlobalVolume 
+{ alloca- `Float' peekFloatConv*} -> `()'  #}
+
+{- function setPosition -}
+{#fun sfml_lst_setPosition as setPosition 
+{ realToFrac `Float' ,
+ realToFrac `Float' ,
+ realToFrac `Float' } -> `()'  #}
+
+{- function getPosition -}
+{#fun sfml_lst_getPosition as getPosition 
+{ alloca- `Vec3' peekVec3*} -> `()'  #}
+
+{- function setDirection -}
+{#fun sfml_lst_setDirection as setDirection 
+{ realToFrac `Float' ,
+ realToFrac `Float' ,
+ realToFrac `Float' } -> `()'  #}
+
+{- function getDirection -}
+{#fun sfml_lst_getDirection as getDirection 
+{ alloca- `Vec3' peekVec3*} -> `()'  #}
+
diff --git a/HGamer3D/Bindings/SFML/ClassMouse.chs b/HGamer3D/Bindings/SFML/ClassMouse.chs
--- a/HGamer3D/Bindings/SFML/ClassMouse.chs
+++ b/HGamer3D/Bindings/SFML/ClassMouse.chs
@@ -1,55 +1,49 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-
--- This source file is part of HGamer3D
--- (A project to enable 3D game development in Haskell)
--- For the latest info, see http://www.althainz.de/HGamer3D.html
--- 
-
--- (c) 2011, 2012 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.
--- 
-
-
--- ClassMouse.chs
-
--- 
-
-module HGamer3D.Bindings.SFML.ClassMouse where
-
-import C2HS
-import Foreign
-import Foreign.Ptr
-import Foreign.C
-import Monad         (liftM, liftM2)
-
-import HGamer3D.Data.HG3DClass
-import HGamer3D.Data.Vector2
-import HGamer3D.Data.Vector3
-import HGamer3D.Data.Vector4
-import HGamer3D.Data.Quaternion
-import HGamer3D.Data.Colour
-import HGamer3D.Data.Angle
-
-{# import HGamer3D.Bindings.SFML.Utils #}
-{# import HGamer3D.Bindings.SFML.ClassPtr #}
-{# import HGamer3D.Bindings.SFML.StructHG3DClass #}
-import HGamer3D.Bindings.SFML.EnumMouseButton
-
-#include "ClassMouse.h"
-{- function isButtonPressed -}
-{#fun sfml_mse_isButtonPressed as isButtonPressed 
-{ cIntFromEnum `EnumMouseButton' ,
- alloca- `Bool' peekBoolUtil*} -> `()'  #}
-
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+-- This source file is part of HGamer3D, a project to enable 3D game development 
+-- in Haskell. For the latest info, see http://www.hgamer3d.org .
+-- 
+
+-- (c) 2011-2014 Peter Althainz
+-- 
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+-- 
+--     http://www.apache.org/licenses/LICENSE-2.0
+-- 
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- 
+
+
+-- ClassMouse.chs
+
+-- 
+
+module HGamer3D.Bindings.SFML.ClassMouse where
+
+import Foreign
+import Foreign.Ptr
+import Foreign.C
+
+import HGamer3D.Data.HG3DClass
+import HGamer3D.Data.Vector
+import HGamer3D.Data.Colour
+import HGamer3D.Data.Angle
+
+{# import HGamer3D.Bindings.SFML.Utils #}
+{# import HGamer3D.Bindings.SFML.ClassPtr #}
+{# import HGamer3D.Bindings.SFML.StructHG3DClass #}
+{# import HGamer3D.Bindings.SFML.EnumMouseButton #}
+
+#include "ClassMouse.h"
+{- function isButtonPressed -}
+{#fun sfml_mse_isButtonPressed as isButtonPressed 
+{ cIntFromEnum `EnumMouseButton' ,
+ alloca- `Bool' peekBoolUtil*} -> `()'  #}
+
diff --git a/HGamer3D/Bindings/SFML/ClassMouseHG3D.chs b/HGamer3D/Bindings/SFML/ClassMouseHG3D.chs
--- a/HGamer3D/Bindings/SFML/ClassMouseHG3D.chs
+++ b/HGamer3D/Bindings/SFML/ClassMouseHG3D.chs
@@ -1,54 +1,48 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-
--- This source file is part of HGamer3D
--- (A project to enable 3D game development in Haskell)
--- For the latest info, see http://www.althainz.de/HGamer3D.html
--- 
-
--- (c) 2011, 2012 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.
--- 
-
-
--- ClassMouseHG3D.chs
-
--- 
-
-module HGamer3D.Bindings.SFML.ClassMouseHG3D where
-
-import C2HS
-import Foreign
-import Foreign.Ptr
-import Foreign.C
-import Monad         (liftM, liftM2)
-
-import HGamer3D.Data.HG3DClass
-import HGamer3D.Data.Vector2
-import HGamer3D.Data.Vector3
-import HGamer3D.Data.Vector4
-import HGamer3D.Data.Quaternion
-import HGamer3D.Data.Colour
-import HGamer3D.Data.Angle
-
-{# import HGamer3D.Bindings.SFML.Utils #}
-{# import HGamer3D.Bindings.SFML.ClassPtr #}
-{# import HGamer3D.Bindings.SFML.StructHG3DClass #}
-
-#include "ClassMouseHG3D.h"
-{- function getPosition -}
-{#fun sfml_mshg_getPosition as getPosition 
-{ alloca- `Int' peekIntConv*,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+-- This source file is part of HGamer3D, a project to enable 3D game development 
+-- in Haskell. For the latest info, see http://www.hgamer3d.org .
+-- 
+
+-- (c) 2011-2014 Peter Althainz
+-- 
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+-- 
+--     http://www.apache.org/licenses/LICENSE-2.0
+-- 
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- 
+
+
+-- ClassMouseHG3D.chs
+
+-- 
+
+module HGamer3D.Bindings.SFML.ClassMouseHG3D where
+
+import Foreign
+import Foreign.Ptr
+import Foreign.C
+
+import HGamer3D.Data.HG3DClass
+import HGamer3D.Data.Vector
+import HGamer3D.Data.Colour
+import HGamer3D.Data.Angle
+
+{# import HGamer3D.Bindings.SFML.Utils #}
+{# import HGamer3D.Bindings.SFML.ClassPtr #}
+{# import HGamer3D.Bindings.SFML.StructHG3DClass #}
+
+#include "ClassMouseHG3D.h"
+{- function getPosition -}
+{#fun sfml_mshg_getPosition as getPosition 
+{ alloca- `Int' peekIntConv*,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
diff --git a/HGamer3D/Bindings/SFML/ClassMusic.chs b/HGamer3D/Bindings/SFML/ClassMusic.chs
--- a/HGamer3D/Bindings/SFML/ClassMusic.chs
+++ b/HGamer3D/Bindings/SFML/ClassMusic.chs
@@ -1,63 +1,57 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-
--- This source file is part of HGamer3D
--- (A project to enable 3D game development in Haskell)
--- For the latest info, see http://www.althainz.de/HGamer3D.html
--- 
-
--- (c) 2011, 2012 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.
--- 
-
-
--- ClassMusic.chs
-
--- 
-
-module HGamer3D.Bindings.SFML.ClassMusic where
-
-import C2HS
-import Foreign
-import Foreign.Ptr
-import Foreign.C
-import Monad         (liftM, liftM2)
-
-import HGamer3D.Data.HG3DClass
-import HGamer3D.Data.Vector2
-import HGamer3D.Data.Vector3
-import HGamer3D.Data.Vector4
-import HGamer3D.Data.Quaternion
-import HGamer3D.Data.Colour
-import HGamer3D.Data.Angle
-
-{# import HGamer3D.Bindings.SFML.Utils #}
-{# import HGamer3D.Bindings.SFML.ClassPtr #}
-{# import HGamer3D.Bindings.SFML.StructHG3DClass #}
-
-#include "ClassMusic.h"
-{- function Music -}
-{#fun sfml_msc_construct as new 
-{ alloca- `HG3DClass' peek*} -> `()'  #}
-
-{- function ~Music -}
-{#fun sfml_msc_destruct as delete 
-{ withHG3DClass* `HG3DClass' } -> `()'  #}
-
-{- function openFromFile -}
-{#fun sfml_msc_openFromFile as openFromFile 
-{ withHG3DClass* `HG3DClass' ,
- withCString* `String' ,
- alloca- `Bool' peekBoolUtil*} -> `()'  #}
-
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+-- This source file is part of HGamer3D, a project to enable 3D game development 
+-- in Haskell. For the latest info, see http://www.hgamer3d.org .
+-- 
+
+-- (c) 2011-2014 Peter Althainz
+-- 
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+-- 
+--     http://www.apache.org/licenses/LICENSE-2.0
+-- 
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- 
+
+
+-- ClassMusic.chs
+
+-- 
+
+module HGamer3D.Bindings.SFML.ClassMusic where
+
+import Foreign
+import Foreign.Ptr
+import Foreign.C
+
+import HGamer3D.Data.HG3DClass
+import HGamer3D.Data.Vector
+import HGamer3D.Data.Colour
+import HGamer3D.Data.Angle
+
+{# import HGamer3D.Bindings.SFML.Utils #}
+{# import HGamer3D.Bindings.SFML.ClassPtr #}
+{# import HGamer3D.Bindings.SFML.StructHG3DClass #}
+
+#include "ClassMusic.h"
+{- function Music -}
+{#fun sfml_msc_construct as new 
+{ alloca- `HG3DClass' peek*} -> `()'  #}
+
+{- function ~Music -}
+{#fun sfml_msc_destruct as delete 
+{ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function openFromFile -}
+{#fun sfml_msc_openFromFile as openFromFile 
+{ withHG3DClass* `HG3DClass' ,
+ withCString* `String' ,
+ alloca- `Bool' peekBoolUtil*} -> `()'  #}
+
diff --git a/HGamer3D/Bindings/SFML/ClassPtr.chs b/HGamer3D/Bindings/SFML/ClassPtr.chs
--- a/HGamer3D/Bindings/SFML/ClassPtr.chs
+++ b/HGamer3D/Bindings/SFML/ClassPtr.chs
@@ -1,12 +1,12 @@
+{-# LANGUAGE EmptyDataDecls #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
 {-# LANGUAGE TypeSynonymInstances #-}
 
--- This source file is part of HGamer3D
--- (A project to enable 3D game development in Haskell)
--- For the latest info, see http://www.althainz.de/HGamer3D.html
+-- 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, 2012 Peter Althainz
+-- (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.
@@ -28,20 +28,16 @@
 
 module HGamer3D.Bindings.SFML.ClassPtr where
 
-import C2HS
 import Foreign
 import Foreign.Ptr
 import Foreign.C
-import Monad         (liftM, liftM2)
 
 import HGamer3D.Data.HG3DClass
-import HGamer3D.Data.Vector2
-import HGamer3D.Data.Vector3
-import HGamer3D.Data.Vector4
-import HGamer3D.Data.Quaternion
+import HGamer3D.Data.Vector
 import HGamer3D.Data.Colour
 import HGamer3D.Data.Angle
 
+{# import HGamer3D.Bindings.SFML.Utils #}
 
 #include "ClassPtr.h"
 {- class ClassMouseHG3D -}
diff --git a/HGamer3D/Bindings/SFML/ClassSound.chs b/HGamer3D/Bindings/SFML/ClassSound.chs
--- a/HGamer3D/Bindings/SFML/ClassSound.chs
+++ b/HGamer3D/Bindings/SFML/ClassSound.chs
@@ -1,88 +1,82 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-
--- This source file is part of HGamer3D
--- (A project to enable 3D game development in Haskell)
--- For the latest info, see http://www.althainz.de/HGamer3D.html
--- 
-
--- (c) 2011, 2012 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.
--- 
-
-
--- ClassSound.chs
-
--- 
-
-module HGamer3D.Bindings.SFML.ClassSound where
-
-import C2HS
-import Foreign
-import Foreign.Ptr
-import Foreign.C
-import Monad         (liftM, liftM2)
-
-import HGamer3D.Data.HG3DClass
-import HGamer3D.Data.Vector2
-import HGamer3D.Data.Vector3
-import HGamer3D.Data.Vector4
-import HGamer3D.Data.Quaternion
-import HGamer3D.Data.Colour
-import HGamer3D.Data.Angle
-
-{# import HGamer3D.Bindings.SFML.Utils #}
-{# import HGamer3D.Bindings.SFML.ClassPtr #}
-{# import HGamer3D.Bindings.SFML.StructHG3DClass #}
-
-#include "ClassSound.h"
-{- function Sound -}
-{#fun sfml_snd_construct as new 
-{ alloca- `HG3DClass' peek*} -> `()'  #}
-
-{- function ~Sound -}
-{#fun sfml_snd_destruct as delete 
-{ withHG3DClass* `HG3DClass' } -> `()'  #}
-
-{- function play -}
-{#fun sfml_snd_play as play 
-{ withHG3DClass* `HG3DClass' } -> `()'  #}
-
-{- function pause -}
-{#fun sfml_snd_pause as pause 
-{ withHG3DClass* `HG3DClass' } -> `()'  #}
-
-{- function stop -}
-{#fun sfml_snd_stop as stop 
-{ withHG3DClass* `HG3DClass' } -> `()'  #}
-
-{- function setBuffer -}
-{#fun sfml_snd_setBuffer as setBuffer 
-{ withHG3DClass* `HG3DClass' ,
- withHG3DClass* `HG3DClass' } -> `()'  #}
-
-{- function setLoop -}
-{#fun sfml_snd_setLoop as setLoop 
-{ withHG3DClass* `HG3DClass' ,
- fromBool `Bool' } -> `()'  #}
-
-{- function getLoop -}
-{#fun sfml_snd_getLoop as getLoop 
-{ withHG3DClass* `HG3DClass' ,
- alloca- `Bool' peekBoolUtil*} -> `()'  #}
-
-{- function resetBuffer -}
-{#fun sfml_snd_resetBuffer as resetBuffer 
-{ withHG3DClass* `HG3DClass' } -> `()'  #}
-
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+-- This source file is part of HGamer3D, a project to enable 3D game development 
+-- in Haskell. For the latest info, see http://www.hgamer3d.org .
+-- 
+
+-- (c) 2011-2014 Peter Althainz
+-- 
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+-- 
+--     http://www.apache.org/licenses/LICENSE-2.0
+-- 
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- 
+
+
+-- ClassSound.chs
+
+-- 
+
+module HGamer3D.Bindings.SFML.ClassSound where
+
+import Foreign
+import Foreign.Ptr
+import Foreign.C
+
+import HGamer3D.Data.HG3DClass
+import HGamer3D.Data.Vector
+import HGamer3D.Data.Colour
+import HGamer3D.Data.Angle
+
+{# import HGamer3D.Bindings.SFML.Utils #}
+{# import HGamer3D.Bindings.SFML.ClassPtr #}
+{# import HGamer3D.Bindings.SFML.StructHG3DClass #}
+
+#include "ClassSound.h"
+{- function Sound -}
+{#fun sfml_snd_construct as new 
+{ alloca- `HG3DClass' peek*} -> `()'  #}
+
+{- function ~Sound -}
+{#fun sfml_snd_destruct as delete 
+{ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function play -}
+{#fun sfml_snd_play as play 
+{ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function pause -}
+{#fun sfml_snd_pause as pause 
+{ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function stop -}
+{#fun sfml_snd_stop as stop 
+{ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function setBuffer -}
+{#fun sfml_snd_setBuffer as setBuffer 
+{ withHG3DClass* `HG3DClass' ,
+ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function setLoop -}
+{#fun sfml_snd_setLoop as setLoop 
+{ withHG3DClass* `HG3DClass' ,
+ fromBool `Bool' } -> `()'  #}
+
+{- function getLoop -}
+{#fun sfml_snd_getLoop as getLoop 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `Bool' peekBoolUtil*} -> `()'  #}
+
+{- function resetBuffer -}
+{#fun sfml_snd_resetBuffer as resetBuffer 
+{ withHG3DClass* `HG3DClass' } -> `()'  #}
+
diff --git a/HGamer3D/Bindings/SFML/ClassSoundBuffer.chs b/HGamer3D/Bindings/SFML/ClassSoundBuffer.chs
--- a/HGamer3D/Bindings/SFML/ClassSoundBuffer.chs
+++ b/HGamer3D/Bindings/SFML/ClassSoundBuffer.chs
@@ -1,79 +1,73 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-
--- This source file is part of HGamer3D
--- (A project to enable 3D game development in Haskell)
--- For the latest info, see http://www.althainz.de/HGamer3D.html
--- 
-
--- (c) 2011, 2012 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.
--- 
-
-
--- ClassSoundBuffer.chs
-
--- 
-
-module HGamer3D.Bindings.SFML.ClassSoundBuffer where
-
-import C2HS
-import Foreign
-import Foreign.Ptr
-import Foreign.C
-import Monad         (liftM, liftM2)
-
-import HGamer3D.Data.HG3DClass
-import HGamer3D.Data.Vector2
-import HGamer3D.Data.Vector3
-import HGamer3D.Data.Vector4
-import HGamer3D.Data.Quaternion
-import HGamer3D.Data.Colour
-import HGamer3D.Data.Angle
-
-{# import HGamer3D.Bindings.SFML.Utils #}
-{# import HGamer3D.Bindings.SFML.ClassPtr #}
-{# import HGamer3D.Bindings.SFML.StructHG3DClass #}
-
-#include "ClassSoundBuffer.h"
-{- function SoundBuffer -}
-{#fun sfml_snbf_construct as new 
-{ alloca- `HG3DClass' peek*} -> `()'  #}
-
-{- function ~SoundBuffer -}
-{#fun sfml_snbf_destruct as delete 
-{ withHG3DClass* `HG3DClass' } -> `()'  #}
-
-{- function loadFromFile -}
-{#fun sfml_snbf_loadFromFile as loadFromFile 
-{ withHG3DClass* `HG3DClass' ,
- withCString* `String' ,
- alloca- `Bool' peekBoolUtil*} -> `()'  #}
-
-{- function saveToFile -}
-{#fun sfml_snbf_saveToFile as saveToFile 
-{ withHG3DClass* `HG3DClass' ,
- withCString* `String' ,
- alloca- `Bool' peekBoolUtil*} -> `()'  #}
-
-{- function getSampleRate -}
-{#fun sfml_snbf_getSampleRate as getSampleRate 
-{ withHG3DClass* `HG3DClass' ,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function getChannelCount -}
-{#fun sfml_snbf_getChannelCount as getChannelCount 
-{ withHG3DClass* `HG3DClass' ,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+-- This source file is part of HGamer3D, a project to enable 3D game development 
+-- in Haskell. For the latest info, see http://www.hgamer3d.org .
+-- 
+
+-- (c) 2011-2014 Peter Althainz
+-- 
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+-- 
+--     http://www.apache.org/licenses/LICENSE-2.0
+-- 
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- 
+
+
+-- ClassSoundBuffer.chs
+
+-- 
+
+module HGamer3D.Bindings.SFML.ClassSoundBuffer where
+
+import Foreign
+import Foreign.Ptr
+import Foreign.C
+
+import HGamer3D.Data.HG3DClass
+import HGamer3D.Data.Vector
+import HGamer3D.Data.Colour
+import HGamer3D.Data.Angle
+
+{# import HGamer3D.Bindings.SFML.Utils #}
+{# import HGamer3D.Bindings.SFML.ClassPtr #}
+{# import HGamer3D.Bindings.SFML.StructHG3DClass #}
+
+#include "ClassSoundBuffer.h"
+{- function SoundBuffer -}
+{#fun sfml_snbf_construct as new 
+{ alloca- `HG3DClass' peek*} -> `()'  #}
+
+{- function ~SoundBuffer -}
+{#fun sfml_snbf_destruct as delete 
+{ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function loadFromFile -}
+{#fun sfml_snbf_loadFromFile as loadFromFile 
+{ withHG3DClass* `HG3DClass' ,
+ withCString* `String' ,
+ alloca- `Bool' peekBoolUtil*} -> `()'  #}
+
+{- function saveToFile -}
+{#fun sfml_snbf_saveToFile as saveToFile 
+{ withHG3DClass* `HG3DClass' ,
+ withCString* `String' ,
+ alloca- `Bool' peekBoolUtil*} -> `()'  #}
+
+{- function getSampleRate -}
+{#fun sfml_snbf_getSampleRate as getSampleRate 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function getChannelCount -}
+{#fun sfml_snbf_getChannelCount as getChannelCount 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
diff --git a/HGamer3D/Bindings/SFML/ClassSoundSource.chs b/HGamer3D/Bindings/SFML/ClassSoundSource.chs
--- a/HGamer3D/Bindings/SFML/ClassSoundSource.chs
+++ b/HGamer3D/Bindings/SFML/ClassSoundSource.chs
@@ -1,110 +1,110 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-
--- This source file is part of HGamer3D
--- (A project to enable 3D game development in Haskell)
--- For the latest info, see http://www.althainz.de/HGamer3D.html
--- 
-
--- (c) 2011, 2012 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.
--- 
-
-
--- ClassSoundSource.chs
-
--- 
-
-module HGamer3D.Bindings.SFML.ClassSoundSource where
-
-import C2HS
-import Foreign
-import Foreign.Ptr
-import Foreign.C
-import Monad         (liftM, liftM2)
-
-import HGamer3D.Data.HG3DClass
-import HGamer3D.Data.Vector2
-import HGamer3D.Data.Vector3
-import HGamer3D.Data.Vector4
-import HGamer3D.Data.Quaternion
-import HGamer3D.Data.Colour
-import HGamer3D.Data.Angle
-
-{# import HGamer3D.Bindings.SFML.Utils #}
-{# import HGamer3D.Bindings.SFML.ClassPtr #}
-{# import HGamer3D.Bindings.SFML.StructHG3DClass #}
-
-#include "ClassSoundSource.h"
-{- function ~SoundSource -}
-{#fun sfml_snsr_destruct as delete 
-{ withHG3DClass* `HG3DClass' } -> `()'  #}
-
-{- function setPitch -}
-{#fun sfml_snsr_setPitch as setPitch 
-{ withHG3DClass* `HG3DClass' ,
- realToFrac `Float' } -> `()'  #}
-
-{- function setVolume -}
-{#fun sfml_snsr_setVolume as setVolume 
-{ withHG3DClass* `HG3DClass' ,
- realToFrac `Float' } -> `()'  #}
-
-{- function setPosition -}
-{#fun sfml_snsr_setPosition as setPosition 
-{ withHG3DClass* `HG3DClass' ,
- realToFrac `Float' ,
- realToFrac `Float' ,
- realToFrac `Float' } -> `()'  #}
-
-{- function setRelativeToListener -}
-{#fun sfml_snsr_setRelativeToListener as setRelativeToListener 
-{ withHG3DClass* `HG3DClass' ,
- fromBool `Bool' } -> `()'  #}
-
-{- function setMinDistance -}
-{#fun sfml_snsr_setMinDistance as setMinDistance 
-{ withHG3DClass* `HG3DClass' ,
- realToFrac `Float' } -> `()'  #}
-
-{- function setAttenuation -}
-{#fun sfml_snsr_setAttenuation as setAttenuation 
-{ withHG3DClass* `HG3DClass' ,
- realToFrac `Float' } -> `()'  #}
-
-{- function getPitch -}
-{#fun sfml_snsr_getPitch as getPitch 
-{ withHG3DClass* `HG3DClass' ,
- alloca- `Float' peekFloatConv*} -> `()'  #}
-
-{- function getVolume -}
-{#fun sfml_snsr_getVolume as getVolume 
-{ withHG3DClass* `HG3DClass' ,
- alloca- `Float' peekFloatConv*} -> `()'  #}
-
-{- function isRelativeToListener -}
-{#fun sfml_snsr_isRelativeToListener as isRelativeToListener 
-{ withHG3DClass* `HG3DClass' ,
- alloca- `Bool' peekBoolUtil*} -> `()'  #}
-
-{- function getMinDistance -}
-{#fun sfml_snsr_getMinDistance as getMinDistance 
-{ withHG3DClass* `HG3DClass' ,
- alloca- `Float' peekFloatConv*} -> `()'  #}
-
-{- function getAttenuation -}
-{#fun sfml_snsr_getAttenuation as getAttenuation 
-{ withHG3DClass* `HG3DClass' ,
- alloca- `Float' peekFloatConv*} -> `()'  #}
-
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+-- This source file is part of HGamer3D, a project to enable 3D game development 
+-- in Haskell. For the latest info, see http://www.hgamer3d.org .
+-- 
+
+-- (c) 2011-2014 Peter Althainz
+-- 
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+-- 
+--     http://www.apache.org/licenses/LICENSE-2.0
+-- 
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- 
+
+
+-- ClassSoundSource.chs
+
+-- 
+
+module HGamer3D.Bindings.SFML.ClassSoundSource where
+
+import Foreign
+import Foreign.Ptr
+import Foreign.C
+
+import HGamer3D.Data.HG3DClass
+import HGamer3D.Data.Vector
+import HGamer3D.Data.Colour
+import HGamer3D.Data.Angle
+
+{# import HGamer3D.Bindings.SFML.Utils #}
+{# import HGamer3D.Bindings.SFML.ClassPtr #}
+{# import HGamer3D.Bindings.SFML.StructHG3DClass #}
+{# import HGamer3D.Bindings.SFML.StructVec3 #}
+
+#include "ClassSoundSource.h"
+{- function ~SoundSource -}
+{#fun sfml_snsr_destruct as delete 
+{ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function setPitch -}
+{#fun sfml_snsr_setPitch as setPitch 
+{ withHG3DClass* `HG3DClass' ,
+ realToFrac `Float' } -> `()'  #}
+
+{- function setVolume -}
+{#fun sfml_snsr_setVolume as setVolume 
+{ withHG3DClass* `HG3DClass' ,
+ realToFrac `Float' } -> `()'  #}
+
+{- function setPosition -}
+{#fun sfml_snsr_setPosition as setPosition 
+{ withHG3DClass* `HG3DClass' ,
+ realToFrac `Float' ,
+ realToFrac `Float' ,
+ realToFrac `Float' } -> `()'  #}
+
+{- function setRelativeToListener -}
+{#fun sfml_snsr_setRelativeToListener as setRelativeToListener 
+{ withHG3DClass* `HG3DClass' ,
+ fromBool `Bool' } -> `()'  #}
+
+{- function setMinDistance -}
+{#fun sfml_snsr_setMinDistance as setMinDistance 
+{ withHG3DClass* `HG3DClass' ,
+ realToFrac `Float' } -> `()'  #}
+
+{- function setAttenuation -}
+{#fun sfml_snsr_setAttenuation as setAttenuation 
+{ withHG3DClass* `HG3DClass' ,
+ realToFrac `Float' } -> `()'  #}
+
+{- function getPitch -}
+{#fun sfml_snsr_getPitch as getPitch 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `Float' peekFloatConv*} -> `()'  #}
+
+{- function getVolume -}
+{#fun sfml_snsr_getVolume as getVolume 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `Float' peekFloatConv*} -> `()'  #}
+
+{- function getPosition -}
+{#fun sfml_snsr_getPosition as getPosition 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `Vec3' peekVec3*} -> `()'  #}
+
+{- function isRelativeToListener -}
+{#fun sfml_snsr_isRelativeToListener as isRelativeToListener 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `Bool' peekBoolUtil*} -> `()'  #}
+
+{- function getMinDistance -}
+{#fun sfml_snsr_getMinDistance as getMinDistance 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `Float' peekFloatConv*} -> `()'  #}
+
+{- function getAttenuation -}
+{#fun sfml_snsr_getAttenuation as getAttenuation 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `Float' peekFloatConv*} -> `()'  #}
+
diff --git a/HGamer3D/Bindings/SFML/ClassSoundStream.chs b/HGamer3D/Bindings/SFML/ClassSoundStream.chs
--- a/HGamer3D/Bindings/SFML/ClassSoundStream.chs
+++ b/HGamer3D/Bindings/SFML/ClassSoundStream.chs
@@ -1,85 +1,79 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-
--- This source file is part of HGamer3D
--- (A project to enable 3D game development in Haskell)
--- For the latest info, see http://www.althainz.de/HGamer3D.html
--- 
-
--- (c) 2011, 2012 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.
--- 
-
-
--- ClassSoundStream.chs
-
--- 
-
-module HGamer3D.Bindings.SFML.ClassSoundStream where
-
-import C2HS
-import Foreign
-import Foreign.Ptr
-import Foreign.C
-import Monad         (liftM, liftM2)
-
-import HGamer3D.Data.HG3DClass
-import HGamer3D.Data.Vector2
-import HGamer3D.Data.Vector3
-import HGamer3D.Data.Vector4
-import HGamer3D.Data.Quaternion
-import HGamer3D.Data.Colour
-import HGamer3D.Data.Angle
-
-{# import HGamer3D.Bindings.SFML.Utils #}
-{# import HGamer3D.Bindings.SFML.ClassPtr #}
-{# import HGamer3D.Bindings.SFML.StructHG3DClass #}
-
-#include "ClassSoundStream.h"
-{- function ~SoundStream -}
-{#fun sfml_snst_destruct as delete 
-{ withHG3DClass* `HG3DClass' } -> `()'  #}
-
-{- function play -}
-{#fun sfml_snst_play as play 
-{ withHG3DClass* `HG3DClass' } -> `()'  #}
-
-{- function pause -}
-{#fun sfml_snst_pause as pause 
-{ withHG3DClass* `HG3DClass' } -> `()'  #}
-
-{- function stop -}
-{#fun sfml_snst_stop as stop 
-{ withHG3DClass* `HG3DClass' } -> `()'  #}
-
-{- function getChannelCount -}
-{#fun sfml_snst_getChannelCount as getChannelCount 
-{ withHG3DClass* `HG3DClass' ,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function getSampleRate -}
-{#fun sfml_snst_getSampleRate as getSampleRate 
-{ withHG3DClass* `HG3DClass' ,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function setLoop -}
-{#fun sfml_snst_setLoop as setLoop 
-{ withHG3DClass* `HG3DClass' ,
- fromBool `Bool' } -> `()'  #}
-
-{- function getLoop -}
-{#fun sfml_snst_getLoop as getLoop 
-{ withHG3DClass* `HG3DClass' ,
- alloca- `Bool' peekBoolUtil*} -> `()'  #}
-
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+-- This source file is part of HGamer3D, a project to enable 3D game development 
+-- in Haskell. For the latest info, see http://www.hgamer3d.org .
+-- 
+
+-- (c) 2011-2014 Peter Althainz
+-- 
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+-- 
+--     http://www.apache.org/licenses/LICENSE-2.0
+-- 
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- 
+
+
+-- ClassSoundStream.chs
+
+-- 
+
+module HGamer3D.Bindings.SFML.ClassSoundStream where
+
+import Foreign
+import Foreign.Ptr
+import Foreign.C
+
+import HGamer3D.Data.HG3DClass
+import HGamer3D.Data.Vector
+import HGamer3D.Data.Colour
+import HGamer3D.Data.Angle
+
+{# import HGamer3D.Bindings.SFML.Utils #}
+{# import HGamer3D.Bindings.SFML.ClassPtr #}
+{# import HGamer3D.Bindings.SFML.StructHG3DClass #}
+
+#include "ClassSoundStream.h"
+{- function ~SoundStream -}
+{#fun sfml_snst_destruct as delete 
+{ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function play -}
+{#fun sfml_snst_play as play 
+{ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function pause -}
+{#fun sfml_snst_pause as pause 
+{ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function stop -}
+{#fun sfml_snst_stop as stop 
+{ withHG3DClass* `HG3DClass' } -> `()'  #}
+
+{- function getChannelCount -}
+{#fun sfml_snst_getChannelCount as getChannelCount 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function getSampleRate -}
+{#fun sfml_snst_getSampleRate as getSampleRate 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function setLoop -}
+{#fun sfml_snst_setLoop as setLoop 
+{ withHG3DClass* `HG3DClass' ,
+ fromBool `Bool' } -> `()'  #}
+
+{- function getLoop -}
+{#fun sfml_snst_getLoop as getLoop 
+{ withHG3DClass* `HG3DClass' ,
+ alloca- `Bool' peekBoolUtil*} -> `()'  #}
+
diff --git a/HGamer3D/Bindings/SFML/EnumJoystickAxis.chs b/HGamer3D/Bindings/SFML/EnumJoystickAxis.chs
--- a/HGamer3D/Bindings/SFML/EnumJoystickAxis.chs
+++ b/HGamer3D/Bindings/SFML/EnumJoystickAxis.chs
@@ -1,47 +1,41 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-
--- This source file is part of HGamer3D
--- (A project to enable 3D game development in Haskell)
--- For the latest info, see http://www.althainz.de/HGamer3D.html
--- 
-
--- (c) 2011, 2012 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.
--- 
-
-
--- EnumJoystickAxis.chs
-
--- 
-
-module HGamer3D.Bindings.SFML.EnumJoystickAxis where
-
-import C2HS
-import Foreign
-import Foreign.Ptr
-import Foreign.C
-import Monad         (liftM, liftM2)
-
-import HGamer3D.Data.HG3DClass
-import HGamer3D.Data.Vector2
-import HGamer3D.Data.Vector3
-import HGamer3D.Data.Vector4
-import HGamer3D.Data.Quaternion
-import HGamer3D.Data.Colour
-import HGamer3D.Data.Angle
-
-
-#include "EnumJoystickAxis.h"
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+-- This source file is part of HGamer3D, a project to enable 3D game development 
+-- in Haskell. For the latest info, see http://www.hgamer3d.org .
+-- 
+
+-- (c) 2011-2014 Peter Althainz
+-- 
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+-- 
+--     http://www.apache.org/licenses/LICENSE-2.0
+-- 
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- 
+
+
+-- EnumJoystickAxis.chs
+
+-- 
+
+module HGamer3D.Bindings.SFML.EnumJoystickAxis where
+
+import Foreign
+import Foreign.Ptr
+import Foreign.C
+
+import HGamer3D.Data.HG3DClass
+import HGamer3D.Data.Vector
+import HGamer3D.Data.Colour
+import HGamer3D.Data.Angle
+
+
+#include "EnumJoystickAxis.h"
 {#enum EnumJoystickAxis {} deriving (Eq)#}
diff --git a/HGamer3D/Bindings/SFML/EnumKey.chs b/HGamer3D/Bindings/SFML/EnumKey.chs
--- a/HGamer3D/Bindings/SFML/EnumKey.chs
+++ b/HGamer3D/Bindings/SFML/EnumKey.chs
@@ -1,47 +1,41 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-
--- This source file is part of HGamer3D
--- (A project to enable 3D game development in Haskell)
--- For the latest info, see http://www.althainz.de/HGamer3D.html
--- 
-
--- (c) 2011, 2012 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.
--- 
-
-
--- EnumKey.chs
-
--- 
-
-module HGamer3D.Bindings.SFML.EnumKey where
-
-import C2HS
-import Foreign
-import Foreign.Ptr
-import Foreign.C
-import Monad         (liftM, liftM2)
-
-import HGamer3D.Data.HG3DClass
-import HGamer3D.Data.Vector2
-import HGamer3D.Data.Vector3
-import HGamer3D.Data.Vector4
-import HGamer3D.Data.Quaternion
-import HGamer3D.Data.Colour
-import HGamer3D.Data.Angle
-
-
-#include "EnumKey.h"
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+-- This source file is part of HGamer3D, a project to enable 3D game development 
+-- in Haskell. For the latest info, see http://www.hgamer3d.org .
+-- 
+
+-- (c) 2011-2014 Peter Althainz
+-- 
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+-- 
+--     http://www.apache.org/licenses/LICENSE-2.0
+-- 
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- 
+
+
+-- EnumKey.chs
+
+-- 
+
+module HGamer3D.Bindings.SFML.EnumKey where
+
+import Foreign
+import Foreign.Ptr
+import Foreign.C
+
+import HGamer3D.Data.HG3DClass
+import HGamer3D.Data.Vector
+import HGamer3D.Data.Colour
+import HGamer3D.Data.Angle
+
+
+#include "EnumKey.h"
 {#enum EnumKey {} deriving (Eq)#}
diff --git a/HGamer3D/Bindings/SFML/EnumMouseButton.chs b/HGamer3D/Bindings/SFML/EnumMouseButton.chs
--- a/HGamer3D/Bindings/SFML/EnumMouseButton.chs
+++ b/HGamer3D/Bindings/SFML/EnumMouseButton.chs
@@ -1,47 +1,41 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-
--- This source file is part of HGamer3D
--- (A project to enable 3D game development in Haskell)
--- For the latest info, see http://www.althainz.de/HGamer3D.html
--- 
-
--- (c) 2011, 2012 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.chs
-
--- 
-
-module HGamer3D.Bindings.SFML.EnumMouseButton where
-
-import C2HS
-import Foreign
-import Foreign.Ptr
-import Foreign.C
-import Monad         (liftM, liftM2)
-
-import HGamer3D.Data.HG3DClass
-import HGamer3D.Data.Vector2
-import HGamer3D.Data.Vector3
-import HGamer3D.Data.Vector4
-import HGamer3D.Data.Quaternion
-import HGamer3D.Data.Colour
-import HGamer3D.Data.Angle
-
-
-#include "EnumMouseButton.h"
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+-- This source file is part of HGamer3D, a project to enable 3D game development 
+-- in Haskell. For the latest info, see http://www.hgamer3d.org .
+-- 
+
+-- (c) 2011-2014 Peter Althainz
+-- 
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+-- 
+--     http://www.apache.org/licenses/LICENSE-2.0
+-- 
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- 
+
+
+-- EnumMouseButton.chs
+
+-- 
+
+module HGamer3D.Bindings.SFML.EnumMouseButton where
+
+import Foreign
+import Foreign.Ptr
+import Foreign.C
+
+import HGamer3D.Data.HG3DClass
+import HGamer3D.Data.Vector
+import HGamer3D.Data.Colour
+import HGamer3D.Data.Angle
+
+
+#include "EnumMouseButton.h"
 {#enum EnumMouseButton {} deriving (Eq)#}
diff --git a/HGamer3D/Bindings/SFML/EnumSoundSourceStatus.chs b/HGamer3D/Bindings/SFML/EnumSoundSourceStatus.chs
--- a/HGamer3D/Bindings/SFML/EnumSoundSourceStatus.chs
+++ b/HGamer3D/Bindings/SFML/EnumSoundSourceStatus.chs
@@ -1,47 +1,41 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-
--- This source file is part of HGamer3D
--- (A project to enable 3D game development in Haskell)
--- For the latest info, see http://www.althainz.de/HGamer3D.html
--- 
-
--- (c) 2011, 2012 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.
--- 
-
-
--- EnumSoundSourceStatus.chs
-
--- 
-
-module HGamer3D.Bindings.SFML.EnumSoundSourceStatus where
-
-import C2HS
-import Foreign
-import Foreign.Ptr
-import Foreign.C
-import Monad         (liftM, liftM2)
-
-import HGamer3D.Data.HG3DClass
-import HGamer3D.Data.Vector2
-import HGamer3D.Data.Vector3
-import HGamer3D.Data.Vector4
-import HGamer3D.Data.Quaternion
-import HGamer3D.Data.Colour
-import HGamer3D.Data.Angle
-
-
-#include "EnumSoundSourceStatus.h"
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+-- This source file is part of HGamer3D, a project to enable 3D game development 
+-- in Haskell. For the latest info, see http://www.hgamer3d.org .
+-- 
+
+-- (c) 2011-2014 Peter Althainz
+-- 
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+-- 
+--     http://www.apache.org/licenses/LICENSE-2.0
+-- 
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- 
+
+
+-- EnumSoundSourceStatus.chs
+
+-- 
+
+module HGamer3D.Bindings.SFML.EnumSoundSourceStatus where
+
+import Foreign
+import Foreign.Ptr
+import Foreign.C
+
+import HGamer3D.Data.HG3DClass
+import HGamer3D.Data.Vector
+import HGamer3D.Data.Colour
+import HGamer3D.Data.Angle
+
+
+#include "EnumSoundSourceStatus.h"
 {#enum EnumSoundSourceStatus {} deriving (Eq)#}
diff --git a/HGamer3D/Bindings/SFML/StructHG3DClass.chs b/HGamer3D/Bindings/SFML/StructHG3DClass.chs
--- a/HGamer3D/Bindings/SFML/StructHG3DClass.chs
+++ b/HGamer3D/Bindings/SFML/StructHG3DClass.chs
@@ -1,55 +1,52 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-
--- This source file is part of HGamer3D
--- (A project to enable 3D game development in Haskell)
--- For the latest info, see http://www.althainz.de/HGamer3D.html
--- 
-
--- (c) 2011, 2012 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.chs
-
--- 
-
-module HGamer3D.Bindings.SFML.StructHG3DClass where
-
-import C2HS
-import Foreign
-import Foreign.Ptr
-import Foreign.C
-import Monad         (liftM, liftM2)
-
-import HGamer3D.Data.HG3DClass
-import HGamer3D.Data.Vector2
-import HGamer3D.Data.Vector3
-import HGamer3D.Data.Vector4
-import HGamer3D.Data.Quaternion
-import HGamer3D.Data.Colour
-import HGamer3D.Data.Angle
-
-
-#include "StructHG3DClass.h"
-
-import Data.Bits
-import HGamer3D.Data.HG3DClass
-
-
-{#pointer *hg3dclass_struct as HG3DClassPtr -> HG3DClass #}
-
-withHG3DClass :: HG3DClass -> (HG3DClassPtr -> IO b) -> IO b
-withHG3DClass = with
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+-- This source file is part of HGamer3D, a project to enable 3D game development 
+-- in Haskell. For the latest info, see http://www.hgamer3d.org .
+-- 
+
+-- (c) 2011-2014 Peter Althainz
+-- 
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+-- 
+--     http://www.apache.org/licenses/LICENSE-2.0
+-- 
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- 
+
+
+-- StructHG3DClass.chs
+
+-- 
+
+module HGamer3D.Bindings.SFML.StructHG3DClass where
+
+import Foreign
+import Foreign.Ptr
+import Foreign.C
+
+import HGamer3D.Data.HG3DClass
+import HGamer3D.Data.Vector
+import HGamer3D.Data.Colour
+import HGamer3D.Data.Angle
+
+
+#include "StructHG3DClass.h"
+
+import Data.Bits
+import HGamer3D.Data.HG3DClass
+
+{#pointer *hg3dclass_struct as HG3DClassPtr -> HG3DClass #}
+
+withHG3DClass :: HG3DClass -> (HG3DClassPtr -> IO b) -> IO b
+withHG3DClass = with
+
+peekHG3DClass :: HG3DClassPtr -> IO HG3DClass
+peekHG3DClass = peek
+
diff --git a/HGamer3D/Bindings/SFML/StructVec3.chs b/HGamer3D/Bindings/SFML/StructVec3.chs
new file mode 100644
--- /dev/null
+++ b/HGamer3D/Bindings/SFML/StructVec3.chs
@@ -0,0 +1,72 @@
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+-- This source file is part of HGamer3D, a project to enable 3D game development 
+-- in Haskell. For the latest info, see http://www.hgamer3d.org .
+-- 
+
+-- (c) 2011-2014 Peter Althainz
+-- 
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+-- 
+--     http://www.apache.org/licenses/LICENSE-2.0
+-- 
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- 
+
+
+-- StructVec3.chs
+
+-- 
+
+module HGamer3D.Bindings.SFML.StructVec3 where
+
+import Foreign
+import Foreign.Ptr
+import Foreign.C
+
+import HGamer3D.Data.HG3DClass
+import HGamer3D.Data.Vector
+import HGamer3D.Data.Colour
+import HGamer3D.Data.Angle
+
+
+#include "StructVec3.h"
+
+import Data.Bits
+import HGamer3D.Data.Vector
+
+newtype Vector3f = Vector3f Vec3
+
+instance Storable Vector3f where
+  alignment _ = alignment (undefined :: CDouble)
+  sizeOf _ = {#sizeof vector3f_struct#}
+  peek p = do
+	x <- {#get vector3f_struct.x #} p
+	y <- {#get vector3f_struct.y #} p
+	z <- {#get vector3f_struct.z #} p
+	let v = Vector3f (Vec3 (realToFrac x) (realToFrac y) (realToFrac z))
+	return v
+  poke p (Vector3f (Vec3 x y z)) = do
+    {#set vector3f_struct.x #} p (realToFrac x)
+    {#set vector3f_struct.y #} p (realToFrac  y)
+    {#set vector3f_struct.z #} p (realToFrac  z)
+    
+type Vector3fPtr = Ptr (Vector3f)
+
+{#pointer *vector3f_struct as Vec3Ptr -> Vec3 #}
+
+withVec3 :: Vec3 -> (Vec3Ptr -> IO b) -> IO b
+withVec3 v f = with v' f' where
+     v' = Vector3f v
+     f' p = f (castPtr p)
+peekVec3 p = do
+   (Vector3f v3) <- peek ((castPtr p)::Vector3fPtr)
+   return v3
+
diff --git a/HGamer3D/Bindings/SFML/Utils.chs b/HGamer3D/Bindings/SFML/Utils.chs
--- a/HGamer3D/Bindings/SFML/Utils.chs
+++ b/HGamer3D/Bindings/SFML/Utils.chs
@@ -1,85 +1,132 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-
--- This source file is part of HGamer3D
--- (A project to enable 3D game development in Haskell)
--- For the latest info, see http://www.althainz.de/HGamer3D.html
--- 
-
--- (c) 2011, 2012 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.
--- 
-
-
--- Utils.hs
-
--- Marshalling Utilities
-
-module HGamer3D.Bindings.SFML.Utils where
-
-import C2HS
-import Foreign
-import Foreign.Ptr
-import Foreign.C
-import Monad         (liftM, liftM2)
-
-import HGamer3D.Data.HG3DClass
-import HGamer3D.Data.Vector2
-import HGamer3D.Data.Vector3
-import HGamer3D.Data.Vector4
-import HGamer3D.Data.Quaternion
-import HGamer3D.Data.Colour
-import HGamer3D.Data.Angle
-
-
-#include "StructHG3DClass.h"
--- String Conversion functions
---
-
-withCUString b f = withCWString b (f . castPtr)
-peekCUString = peekCWString . castPtr
-alloc64k = allocaBytes (1024 * 64)
-
--- c2hs replacements of utility functions, to get rid of annoying c2hs
--- deprecated messages
-
--- Passing Enums
-
-cIntFromEnum :: Enum a => a -> CInt
-cIntFromEnum = cIntConv . fromEnum
-
-cIntToEnum :: Enum a => CInt -> a
-cIntToEnum = toEnum . cIntConv
-
-
--- Passing Booleans by reference
---
-
-withBoolUtil :: (Integral a, Storable a) => Bool -> (Ptr a -> IO b) -> IO b
-withBoolUtil  = with . fromBool
-
-peekBoolUtil :: (Integral a, Storable a) => Ptr a -> IO Bool
-peekBoolUtil  = liftM toBool . peek
-
-
--- Passing enums by reference
---
-
-withEnumUtil :: (Enum a, Integral b, Storable b) => a -> (Ptr b -> IO c) -> IO c
-withEnumUtil  = with . cFromEnum
-
-peekEnumUtil :: (Enum a, Integral b, Storable b) => Ptr b -> IO a
-peekEnumUtil  = liftM cToEnum . peek
-
-
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+-- This source file is part of HGamer3D, a project to enable 3D game development 
+-- in Haskell. For the latest info, see http://www.hgamer3d.org .
+-- 
+
+-- (c) 2011-2014 Peter Althainz
+-- 
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+-- 
+--     http://www.apache.org/licenses/LICENSE-2.0
+-- 
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- 
+
+
+-- Utils.hs
+
+-- Marshalling Utilities
+
+module HGamer3D.Bindings.SFML.Utils where
+
+import Foreign
+import Foreign.Ptr
+import Foreign.C
+
+import HGamer3D.Data.HG3DClass
+import HGamer3D.Data.Vector
+import HGamer3D.Data.Colour
+import HGamer3D.Data.Angle
+
+
+#include "StructHG3DClass.h"
+
+import Control.Monad (liftM)
+
+-- Strings with explicit length
+--
+withCStringLenIntConv :: Num n => String -> ((CString, n) -> IO a) -> IO a
+withCStringLenIntConv s f    = withCStringLen s $ \(p, n) -> f (p, fromIntegral n)
+
+peekCStringLenIntConv :: Integral n => (CString, n) -> IO String
+peekCStringLenIntConv (s, n) = peekCStringLen (s, fromIntegral n)
+
+-- Marshalling of numerals
+--
+
+withIntConv   :: (Storable b, Integral a, Integral b) 
+              => a -> (Ptr b -> IO c) -> IO c
+withIntConv    = with . fromIntegral
+
+withFloatConv :: (Storable b, RealFloat a, RealFloat b) 
+              => a -> (Ptr b -> IO c) -> IO c
+withFloatConv  = with . realToFrac
+
+peekIntConv   :: (Storable a, Integral a, Integral b) 
+              => Ptr a -> IO b
+peekIntConv    = liftM fromIntegral . peek
+
+peekFloatConv :: (Storable a, RealFloat a, RealFloat b) 
+              => Ptr a -> IO b
+peekFloatConv  = liftM realToFrac . peek
+
+
+-- String Conversion functions
+--
+
+withCUString b f = withCWString b (f . castPtr)
+peekCUString = peekCWString . castPtr
+alloc64k = allocaBytes (1024 * 64)
+
+-- c2hs replacements of utility functions, to get rid of annoying c2hs
+-- deprecated messages
+
+-- Passing Enums
+
+cIntFromEnum :: Enum a => a -> CInt
+cIntFromEnum = cIntConv . fromEnum
+
+cIntToEnum :: Enum a => CInt -> a
+cIntToEnum = toEnum . cIntConv
+
+
+-- Passing Booleans by reference
+--
+
+withBoolUtil :: (Integral a, Storable a) => Bool -> (Ptr a -> IO b) -> IO b
+withBoolUtil  = with . fromBool
+
+peekBoolUtil :: (Integral a, Storable a) => Ptr a -> IO Bool
+peekBoolUtil  = liftM toBool . peek
+
+
+-- Passing enums by reference
+--
+
+withEnumUtil :: (Enum a, Integral b, Storable b) => a -> (Ptr b -> IO c) -> IO c
+withEnumUtil  = with . cFromEnum
+
+peekEnumUtil :: (Enum a, Integral b, Storable b) => Ptr b -> IO a
+peekEnumUtil  = liftM cToEnum . peek
+
+-- Conversion routines
+-- -------------------
+
+-- |Integral conversion
+--
+cIntConv :: (Integral a, Integral b) => a -> b
+cIntConv  = fromIntegral
+
+-- |Floating conversion
+--
+cFloatConv :: (RealFloat a, RealFloat b) => a -> b
+cFloatConv  = realToFrac
+
+-- |Convert a C enumeration to Haskell.
+--
+cToEnum :: (Integral i, Enum e) => i -> e
+cToEnum  = toEnum . fromIntegral
+
+-- |Convert a Haskell enumeration to C.
+--
+cFromEnum :: (Enum e, Integral i) => e -> i
+cFromEnum  = fromIntegral . fromEnum
+
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,13 +1,13 @@
-(c) 2011, 2012 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.
+(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.
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,22 +1,21 @@
--- 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, 2012 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.
--- 
--- Setup.hs
-
-import Distribution.Simple
-main = defaultMain
+-- 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.
+-- 
+-- Setup.hs
+
+import Distribution.Simple
+main = defaultMain
diff --git a/include/ClassJoystick.h b/include/ClassJoystick.h
--- a/include/ClassJoystick.h
+++ b/include/ClassJoystick.h
@@ -1,8 +1,7 @@
-// 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
+// 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, 2012 Peter Althainz
+// (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.
@@ -22,6 +21,9 @@
 // 
 
 #include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassJoystick
+#define _DEFINED_HG3D_ClassJoystick
+
 #include "ClassPtr.h"
 #include "EnumJoystickAxis.h"
 
@@ -44,3 +46,4 @@
 // Update the states of all joysticks. 
 void sfml_jst_update();
 
+#endif 
diff --git a/include/ClassKeyboard.h b/include/ClassKeyboard.h
--- a/include/ClassKeyboard.h
+++ b/include/ClassKeyboard.h
@@ -1,8 +1,7 @@
-// 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
+// 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, 2012 Peter Althainz
+// (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.
@@ -22,6 +21,9 @@
 // 
 
 #include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassKeyboard
+#define _DEFINED_HG3D_ClassKeyboard
+
 #include "ClassPtr.h"
 #include "EnumKey.h"
 
@@ -29,3 +31,4 @@
 // Check if a key is pressed. 
 void sfml_kbd_isKeyPressed(enum EnumKey key_c, int * result_c);
 
+#endif 
diff --git a/include/ClassListener.h b/include/ClassListener.h
--- a/include/ClassListener.h
+++ b/include/ClassListener.h
@@ -1,8 +1,7 @@
-// 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
+// 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, 2012 Peter Althainz
+// (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.
@@ -22,7 +21,11 @@
 // 
 
 #include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassListener
+#define _DEFINED_HG3D_ClassListener
+
 #include "ClassPtr.h"
+#include "StructVec3.h"
 
 
 // Change the global volume of all the sounds and musics. 
@@ -34,6 +37,13 @@
 // Set the position of the listener in the scene. 
 void sfml_lst_setPosition(float x_c, float y_c, float z_c);
 
+// Get the current position of the listener in the scene. 
+void sfml_lst_getPosition(struct vector3f_struct * result_c);
+
 // Set the orientation of the listener in the scene. 
 void sfml_lst_setDirection(float x_c, float y_c, float z_c);
 
+// Get the current orientation of the listener in the scene. 
+void sfml_lst_getDirection(struct vector3f_struct * result_c);
+
+#endif 
diff --git a/include/ClassMouse.h b/include/ClassMouse.h
--- a/include/ClassMouse.h
+++ b/include/ClassMouse.h
@@ -1,8 +1,7 @@
-// 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
+// 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, 2012 Peter Althainz
+// (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.
@@ -22,6 +21,9 @@
 // 
 
 #include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassMouse
+#define _DEFINED_HG3D_ClassMouse
+
 #include "ClassPtr.h"
 #include "EnumMouseButton.h"
 
@@ -29,3 +31,4 @@
 // Check if a mouse button is pressed. 
 void sfml_mse_isButtonPressed(enum EnumMouseButton button_c, int * result_c);
 
+#endif 
diff --git a/include/ClassMouseHG3D.h b/include/ClassMouseHG3D.h
--- a/include/ClassMouseHG3D.h
+++ b/include/ClassMouseHG3D.h
@@ -1,8 +1,7 @@
-// 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
+// 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, 2012 Peter Althainz
+// (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.
@@ -22,9 +21,13 @@
 // 
 
 #include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassMouseHG3D
+#define _DEFINED_HG3D_ClassMouseHG3D
+
 #include "ClassPtr.h"
 
 
 // 
 void sfml_mshg_getPosition(int * x_c, int * y_c);
 
+#endif 
diff --git a/include/ClassMusic.h b/include/ClassMusic.h
--- a/include/ClassMusic.h
+++ b/include/ClassMusic.h
@@ -1,8 +1,7 @@
-// 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
+// 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, 2012 Peter Althainz
+// (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.
@@ -22,6 +21,9 @@
 // 
 
 #include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassMusic
+#define _DEFINED_HG3D_ClassMusic
+
 #include "ClassPtr.h"
 
 
@@ -34,3 +36,4 @@
 // Open a music from an audio file. 
 void sfml_msc_openFromFile(struct hg3dclass_struct * thisclass_c, char * filename_c, int * result_c);
 
+#endif 
diff --git a/include/ClassPtr.h b/include/ClassPtr.h
--- a/include/ClassPtr.h
+++ b/include/ClassPtr.h
@@ -1,8 +1,7 @@
-// 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
+// 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, 2012 Peter Althainz
+// (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.
diff --git a/include/ClassSound.h b/include/ClassSound.h
--- a/include/ClassSound.h
+++ b/include/ClassSound.h
@@ -1,8 +1,7 @@
-// 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
+// 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, 2012 Peter Althainz
+// (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.
@@ -22,6 +21,9 @@
 // 
 
 #include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassSound
+#define _DEFINED_HG3D_ClassSound
+
 #include "ClassPtr.h"
 #include "ClassSoundBuffer.h"
 
@@ -38,7 +40,7 @@
 // Pause the sound. 
 void sfml_snd_pause(struct hg3dclass_struct * thisclass_c);
 
-// Stop playing the sound. 
+// stop playing the sound 
 void sfml_snd_stop(struct hg3dclass_struct * thisclass_c);
 
 // Set the source buffer containing the audio data to play. 
@@ -53,3 +55,4 @@
 // Reset the internal buffer of the sound. 
 void sfml_snd_resetBuffer(struct hg3dclass_struct * thisclass_c);
 
+#endif 
diff --git a/include/ClassSoundBuffer.h b/include/ClassSoundBuffer.h
--- a/include/ClassSoundBuffer.h
+++ b/include/ClassSoundBuffer.h
@@ -1,8 +1,7 @@
-// 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
+// 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, 2012 Peter Althainz
+// (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.
@@ -22,6 +21,9 @@
 // 
 
 #include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassSoundBuffer
+#define _DEFINED_HG3D_ClassSoundBuffer
+
 #include "ClassPtr.h"
 
 
@@ -43,3 +45,4 @@
 // Get the number of channels used by the sound. 
 void sfml_snbf_getChannelCount(struct hg3dclass_struct * thisclass_c, unsigned int * result_c);
 
+#endif 
diff --git a/include/ClassSoundSource.h b/include/ClassSoundSource.h
--- a/include/ClassSoundSource.h
+++ b/include/ClassSoundSource.h
@@ -1,8 +1,7 @@
-// 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
+// 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, 2012 Peter Althainz
+// (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.
@@ -22,7 +21,11 @@
 // 
 
 #include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassSoundSource
+#define _DEFINED_HG3D_ClassSoundSource
+
 #include "ClassPtr.h"
+#include "StructVec3.h"
 
 
 // Destructor. 
@@ -52,6 +55,9 @@
 // Get the volume of the sound. 
 void sfml_snsr_getVolume(struct hg3dclass_struct * thisclass_c, float * result_c);
 
+// Get the 3D position of the sound in the audio scene. 
+void sfml_snsr_getPosition(struct hg3dclass_struct * thisclass_c, struct vector3f_struct * result_c);
+
 // Tell whether the sound's position is relative to the listener or is absolute. 
 void sfml_snsr_isRelativeToListener(struct hg3dclass_struct * thisclass_c, int * result_c);
 
@@ -61,3 +67,4 @@
 // Get the attenuation factor of the sound. 
 void sfml_snsr_getAttenuation(struct hg3dclass_struct * thisclass_c, float * result_c);
 
+#endif 
diff --git a/include/ClassSoundStream.h b/include/ClassSoundStream.h
--- a/include/ClassSoundStream.h
+++ b/include/ClassSoundStream.h
@@ -1,8 +1,7 @@
-// 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
+// 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, 2012 Peter Althainz
+// (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.
@@ -22,6 +21,9 @@
 // 
 
 #include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassSoundStream
+#define _DEFINED_HG3D_ClassSoundStream
+
 #include "ClassPtr.h"
 
 
@@ -49,3 +51,4 @@
 // Tell whether or not the stream is in loop mode. 
 void sfml_snst_getLoop(struct hg3dclass_struct * thisclass_c, int * result_c);
 
+#endif 
diff --git a/include/EnumJoystickAxis.h b/include/EnumJoystickAxis.h
--- a/include/EnumJoystickAxis.h
+++ b/include/EnumJoystickAxis.h
@@ -1,8 +1,7 @@
-// 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
+// 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, 2012 Peter Althainz
+// (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.
@@ -22,6 +21,8 @@
 // 
 
 #include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumJoystickAxis
+#define _DEFINED_HG3D_EnumJoystickAxis
 
 
 enum EnumJoystickAxis
@@ -35,3 +36,4 @@
   JoystickAxisPovX, // The X axis of the point-of-view hat. 
   JoystickAxisPovY // The Y axis of the point-of-view hat. 
 };
+#endif 
diff --git a/include/EnumKey.h b/include/EnumKey.h
--- a/include/EnumKey.h
+++ b/include/EnumKey.h
@@ -1,8 +1,7 @@
-// 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
+// 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, 2012 Peter Althainz
+// (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.
@@ -22,11 +21,14 @@
 // 
 
 #include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumKey
+#define _DEFINED_HG3D_EnumKey
 
 
 enum EnumKey
 {
-  KeyA, // The A key. 
+  KeyUnknown =  -1, // Unhandled key. 
+  KeyA =  0, // The A key. 
   KeyB, // The B key. 
   KeyC, // The C key. 
   KeyD, // The D key. 
@@ -85,7 +87,7 @@
   KeyDash, // The - key. 
   KeySpace, // The Space key. 
   KeyReturn, // The Return key. 
-  KeyBack, // The Backspace key. 
+  KeyBackSpace, // The Backspace key. 
   KeyTab, // The Tabulation key. 
   KeyPageUp, // The Page up key. 
   KeyPageDown, // The Page down key. 
@@ -93,10 +95,10 @@
   KeyHome, // The Home key. 
   KeyInsert, // The Insert key. 
   KeyDelete, // The Delete key. 
-  KeyAdd, // 
-  KeySubtract, // 
-  KeyMultiply, // 
-  KeyDivide, // / 
+  KeyAdd, // The + key. 
+  KeySubtract, // The - key. 
+  KeyMultiply, // The * key. 
+  KeyDivide, // The / key. 
   KeyLeft, // Left arrow. 
   KeyRight, // Right arrow. 
   KeyUp, // Up arrow. 
@@ -119,7 +121,7 @@
   KeyF6, // The F6 key. 
   KeyF7, // The F7 key. 
   KeyF8, // The F8 key. 
-  KeyF9, // The F8 key. 
+  KeyF9, // The F9 key. 
   KeyF10, // The F10 key. 
   KeyF11, // The F11 key. 
   KeyF12, // The F12 key. 
@@ -127,5 +129,6 @@
   KeyF14, // The F14 key. 
   KeyF15, // The F15 key. 
   KeyPause, // The Pause key. 
-  KeyKeyCount // Keep last -- the total number of keyboard keys. 
+  KeyKeyCount // Keep last 
 };
+#endif 
diff --git a/include/EnumMouseButton.h b/include/EnumMouseButton.h
--- a/include/EnumMouseButton.h
+++ b/include/EnumMouseButton.h
@@ -1,8 +1,7 @@
-// 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
+// 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, 2012 Peter Althainz
+// (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.
@@ -22,6 +21,8 @@
 // 
 
 #include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumMouseButton
+#define _DEFINED_HG3D_EnumMouseButton
 
 
 enum EnumMouseButton
@@ -31,5 +32,6 @@
   MouseButtonMiddle, // The middle (wheel) mouse button. 
   MouseButtonXButton1, // The first extra mouse button. 
   MouseButtonXButton2, // The second extra mouse button. 
-  MouseButtonButtonCount // Keep last -- the total number of mouse buttons. 
+  MouseButtonButtonCount // Keep last 
 };
+#endif 
diff --git a/include/EnumSoundSourceStatus.h b/include/EnumSoundSourceStatus.h
--- a/include/EnumSoundSourceStatus.h
+++ b/include/EnumSoundSourceStatus.h
@@ -1,8 +1,7 @@
-// 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
+// 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, 2012 Peter Althainz
+// (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.
@@ -22,6 +21,8 @@
 // 
 
 #include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSoundSourceStatus
+#define _DEFINED_HG3D_EnumSoundSourceStatus
 
 
 enum EnumSoundSourceStatus
@@ -30,3 +31,4 @@
   SoundSourceStatusPaused, // Sound
   SoundSourceStatusPlaying // Sound
 };
+#endif 
diff --git a/include/MouseHG3D.h b/include/MouseHG3D.h
new file mode 100644
--- /dev/null
+++ b/include/MouseHG3D.h
@@ -0,0 +1,18 @@
+// MouseHG3D - special mouse class to get a specialized way to obtain
+// the mouse coordinates
+
+#include <SFML/System/Vector2.hpp>
+#include <SFML/Window/Mouse.hpp>
+
+class MouseHG3D : sf::Mouse {
+	
+	public:
+		static void getPosition(int &x, int &y) {
+			sf::Vector2i vi = sf::Vector2i();
+			vi = sf::Mouse::getPosition();
+			x = vi.x;
+			y = vi.y;
+		};
+	
+};
+
diff --git a/include/SFMLDllDefines.h b/include/SFMLDllDefines.h
--- a/include/SFMLDllDefines.h
+++ b/include/SFMLDllDefines.h
@@ -1,4 +1,4 @@
-// (c) 2011, 2012 Peter Althainz
+// (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.
@@ -16,10 +16,10 @@
 
 // SFMLDllDefines.h
 
-#ifndef _HGamer3DSFML016_DLLDEFINES_H_
-#define _HGamer3DSFML016_DLLDEFINES_H_
+#ifndef _HGamer3DSFML050_DLLDEFINES_H_
+#define _HGamer3DSFML050_DLLDEFINES_H_
 
-/* Cmake will define HGamer3DSFML016_EXPORTS on Windows when it
+/* Cmake will define HGamer3DSFML050_EXPORTS on Windows when it
 configures to build a shared library. If you are going to use
 another build system on windows or create the visual studio
 projects by hand you need to define MyLibrary_EXPORTS when
@@ -29,13 +29,13 @@
 // We are using the Visual Studio Compiler and building Shared libraries
 
 #if (defined (_WIN32)) && !(defined (__GNUC__)) 
-  #if defined(HGamer3DSFML016_EXPORTS)
+  #if defined(HGamer3DSFML050_EXPORTS)
     #define  SFML_LIB_EXPORT __declspec(dllexport)
   #else
     #define  SFML_LIB_EXPORT __declspec(dllimport)
-  #endif /* HGamer3DSFML016_EXPORTS */
+  #endif /* HGamer3DSFML050_EXPORTS */
 #else /* defined (_WIN32) */
  #define SFML_LIB_EXPORT
 #endif
 
-#endif /* _HGamer3DSFML016_DLLDEFINES_H_ */
+#endif /* _HGamer3DSFML050_DLLDEFINES_H_ */
diff --git a/include/StructHG3DClass.h b/include/StructHG3DClass.h
--- a/include/StructHG3DClass.h
+++ b/include/StructHG3DClass.h
@@ -1,8 +1,7 @@
-// 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
+// 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, 2012 Peter Althainz
+// (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.
diff --git a/include/StructVec3.h b/include/StructVec3.h
new file mode 100644
--- /dev/null
+++ b/include/StructVec3.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.
+// 
+
+// StructVec3.h
+
+// 
+
+#include "wchar.h"
+
+
+#ifndef _INC_STRUCT_VECTOR3F
+#define _INC_STRUCT_VECTOR3F
+
+typedef struct vector3f_struct {
+	float x;
+	float y;
+	float z;
+} vector3f_struct;
+
+#endif
diff --git a/include/hg3dstruct.h b/include/hg3dstruct.h
new file mode 100644
--- /dev/null
+++ b/include/hg3dstruct.h
@@ -0,0 +1,4 @@
+typedef struct hg3dclass_struct {
+	void *ptr;
+	void *fptr;
+} hg3dclass_struct;
diff --git a/include/vector2fstruct.h b/include/vector2fstruct.h
new file mode 100644
--- /dev/null
+++ b/include/vector2fstruct.h
@@ -0,0 +1,4 @@
+typedef struct vector2f_struct {
+	float x;
+	float y;
+} vector2f_struct;
diff --git a/include/vector2istruct.h b/include/vector2istruct.h
new file mode 100644
--- /dev/null
+++ b/include/vector2istruct.h
@@ -0,0 +1,4 @@
+typedef struct vector2i_struct {
+	int x;
+	int y;
+} vector2i_struct;
diff --git a/include/vector3fstruct.h b/include/vector3fstruct.h
new file mode 100644
--- /dev/null
+++ b/include/vector3fstruct.h
@@ -0,0 +1,5 @@
+typedef struct vector3f_struct {
+	float x;
+	float y;
+	float z;
+} vector3f_struct;
diff --git a/include/vector3istruct.h b/include/vector3istruct.h
new file mode 100644
--- /dev/null
+++ b/include/vector3istruct.h
@@ -0,0 +1,5 @@
+typedef struct vector3i_struct {
+	int x;
+	int y;
+	int z;
+} vector3i_struct;
