diff --git a/Graphics/UI/SDL/Mixer/General.hs b/Graphics/UI/SDL/Mixer/General.hs
deleted file mode 100644
--- a/Graphics/UI/SDL/Mixer/General.hs
+++ /dev/null
@@ -1,66 +0,0 @@
-{-# OPTIONS_GHC -optc-D__GLASGOW_HASKELL__=606 #-}
-{-# OPTIONS_GHC -optc-D_GNU_SOURCE=1 #-}
-{-# OPTIONS_GHC -optc-D_REENTRANT #-}
-{-# INCLUDE <SDL_mixer.h> #-}
-{-# LINE 1 "Graphics/UI/SDL/Mixer/General.hsc" #-}
-
-{-# LINE 2 "Graphics/UI/SDL/Mixer/General.hsc" #-}
------------------------------------------------------------------------------
--- |
--- Module      :  Graphics.UI.SDL.Mixer.General
--- Copyright   :  (c) David Himmelstrup 2005
--- License     :  BSD-like
---
--- Maintainer  :  lemmih@gmail.com
--- Stability   :  provisional
--- Portability :  portable
---
------------------------------------------------------------------------------
-module Graphics.UI.SDL.Mixer.General
-    ( AudioFormat (..)
-    , tryOpenAudio
-    , openAudio
-    , closeAudio
-    , tryQuerySpec
-    , querySpec
-    , defaultFrequency
-    ) where
-
-import Graphics.UI.SDL.General(unwrapMaybe, unwrapBool)
-import Graphics.UI.SDL.Audio(AudioFormat(..), fromAudioFormat, toAudioFormat)
-
-import Data.Word(Word16)
-import Foreign(Ptr, Storable(peek), alloca)
-
-defaultFrequency :: Int
-defaultFrequency = 22050
-
--- int Mix_OpenAudio(int frequency, Uint16 format, int channels, int chunksize)
-foreign import ccall unsafe "Mix_OpenAudio" mixOpenAudio :: Int -> Word16 -> Int -> Int -> IO Int
-tryOpenAudio :: Int -> AudioFormat -> Int -> Int -> IO Bool
-tryOpenAudio frequency format channels chunksize
-    = fmap (0==) (mixOpenAudio frequency (fromAudioFormat format) channels chunksize)
-
-openAudio :: Int -> AudioFormat -> Int -> Int -> IO ()
-openAudio frequency format channels chunksize
-    = unwrapBool "Mix_OpenAudio" (tryOpenAudio frequency format channels chunksize)
-
--- void Mix_CloseAudio()
-foreign import ccall unsafe "Mix_CloseAudio" closeAudio :: IO ()
-
--- int Mix_QuerySpec(int *frequency, Uint16 *format, int *channels)
-foreign import ccall unsafe "Mix_QuerySpec" mixQuerySpec :: Ptr Int -> Ptr Word16 -> Ptr Int -> IO Int
-tryQuerySpec :: IO (Maybe (Int,AudioFormat,Int))
-tryQuerySpec
-    = alloca $ \freq ->
-      alloca $ \format ->
-      alloca $ \channels ->
-      do ret <- mixQuerySpec freq format channels
-         case ret of
-           0 -> return Nothing
-           _ -> do [f,c] <- mapM peek [freq,channels]
-                   fm <- peek format
-                   return (Just (f,toAudioFormat fm,c))
-
-querySpec :: IO (Int,AudioFormat,Int)
-querySpec = unwrapMaybe "Mix_QuerySpec" tryQuerySpec
diff --git a/Graphics/UI/SDL/Mixer/Samples.hs b/Graphics/UI/SDL/Mixer/Samples.hs
--- a/Graphics/UI/SDL/Mixer/Samples.hs
+++ b/Graphics/UI/SDL/Mixer/Samples.hs
@@ -32,7 +32,10 @@
 mkFinalizedChunk = newForeignPtr mixFreeChunkFinal
 
 -- Mix_Chunk *Mix_LoadWAV(char *file)
-foreign import ccall unsafe "Mix_LoadWAV" mixLoadWAV :: CString -> IO (Ptr ChunkStruct)
+-- foreign import ccall unsafe "Mix_LoadWAV" mixLoadWAV :: CString -> IO (Ptr ChunkStruct)
+foreign import ccall unsafe "macros.h HS_Mix_LoadWAV"
+    mixLoadWAV :: CString -> IO (Ptr ChunkStruct)
+
 tryLoadWAV :: FilePath -> IO (Maybe Chunk)
 tryLoadWAV string
     = withCString string $ \cString ->
diff --git a/Graphics/UI/SDL/Mixer/Version.hs b/Graphics/UI/SDL/Mixer/Version.hs
deleted file mode 100644
--- a/Graphics/UI/SDL/Mixer/Version.hs
+++ /dev/null
@@ -1,45 +0,0 @@
-{-# OPTIONS_GHC -optc-D__GLASGOW_HASKELL__=606 #-}
-{-# OPTIONS_GHC -optc-D_GNU_SOURCE=1 #-}
-{-# OPTIONS_GHC -optc-D_REENTRANT #-}
-{-# INCLUDE "SDL_mixer.h" #-}
-{-# LINE 1 "Graphics/UI/SDL/Mixer/Version.hsc" #-}
-
-{-# LINE 2 "Graphics/UI/SDL/Mixer/Version.hsc" #-}
-module Graphics.UI.SDL.Mixer.Version
-    ( compiledFor
-    , linkedWith
-    ) where
-
-import Data.Version (Version(Version))
-
-import Foreign (Word8, Ptr, Storable(sizeOf, alignment, peekByteOff, peek))
-
-data SDLVersion
-    = SDLVersion Word8 Word8 Word8
-
-instance Storable SDLVersion where
-    sizeOf _ = (3)
-{-# LINE 16 "Graphics/UI/SDL/Mixer/Version.hsc" #-}
-    alignment _ = 1
-    peek ptr = do major <- (\hsc_ptr -> peekByteOff hsc_ptr 0) ptr
-{-# LINE 18 "Graphics/UI/SDL/Mixer/Version.hsc" #-}
-                  minor <- (\hsc_ptr -> peekByteOff hsc_ptr 1) ptr
-{-# LINE 19 "Graphics/UI/SDL/Mixer/Version.hsc" #-}
-                  patch <- (\hsc_ptr -> peekByteOff hsc_ptr 2) ptr
-{-# LINE 20 "Graphics/UI/SDL/Mixer/Version.hsc" #-}
-                  return (SDLVersion major minor patch)
-
-compiledFor :: Version
-compiledFor = Version [ 1
-{-# LINE 24 "Graphics/UI/SDL/Mixer/Version.hsc" #-}
-                      , 2
-{-# LINE 25 "Graphics/UI/SDL/Mixer/Version.hsc" #-}
-                      , 6
-{-# LINE 26 "Graphics/UI/SDL/Mixer/Version.hsc" #-}
-                      ] []
-
-foreign import ccall unsafe "Mix_Linked_Version" sdlLinkedVersion :: IO (Ptr SDLVersion)
-linkedWith :: IO Version
-linkedWith = do versionPtr <- sdlLinkedVersion
-                SDLVersion major minor patch <- peek versionPtr
-                return (Version (map fromIntegral [major,minor,patch]) [])
diff --git a/SDL-mixer.cabal b/SDL-mixer.cabal
--- a/SDL-mixer.cabal
+++ b/SDL-mixer.cabal
@@ -1,5 +1,5 @@
 Name: SDL-mixer
-Version: 0.5.2
+Version: 0.5.5
 Maintainer: Lemmih (lemmih@gmail.com)
 Author: Lemmih (lemmih@gmail.com)
 Copyright: 2004-2008, Lemmih
@@ -18,6 +18,10 @@
   Graphics.UI.SDL.Mixer.Types,
   Graphics.UI.SDL.Mixer.Version,
   Graphics.UI.SDL.Mixer
+c-sources:         cbits/macros.c
+include-dirs:      cbits
+includes:          macros.h
+install-includes:  macros.h
 Includes: SDL.h SDL_mixer.h
 Extra-Source-Files: SDL-mixer.buildinfo.in, configure, config.mk.in, includes/HsSDLConfig.h.in
 Data-Files: TODO, README, MACOSX
diff --git a/cbits/macros.c b/cbits/macros.c
new file mode 100644
--- /dev/null
+++ b/cbits/macros.c
@@ -0,0 +1,9 @@
+
+#include <SDL.h>
+#include <SDL_mixer.h>
+
+// Mix_LoadWAV(file) Mix_LoadWAV_RW(SDL_RWFromFile(file, "rb"), 1)
+
+Mix_Chunk * HS_Mix_LoadWAV(const char* file) {
+    Mix_LoadWAV(file);
+}
diff --git a/cbits/macros.h b/cbits/macros.h
new file mode 100644
--- /dev/null
+++ b/cbits/macros.h
@@ -0,0 +1,5 @@
+
+#include <SDL.h>
+#include <SDL_mixer.h>
+
+Mix_Chunk * HS_Mix_LoadWAV(const char* file);
