diff --git a/alsa-seq.cabal b/alsa-seq.cabal
--- a/alsa-seq.cabal
+++ b/alsa-seq.cabal
@@ -1,5 +1,6 @@
+Cabal-Version:  2.2
 Name:           alsa-seq
-Version:        0.6.0.7
+Version:        0.6.0.8
 Author:
   Henning Thielemann <alsa@henning-thielemann.de>,
   Dylan Simon <dylan@dylex.net>,
@@ -8,12 +9,11 @@
 Maintainer:     Henning Thielemann <alsa@henning-thielemann.de>
 Copyright:      Bjorn Bringert, Iavor S. Diatchki, Dylan Simon, Henning Thielemann
 Category:       Sound, Music
-License:        BSD3
+License:        BSD-3-Clause
 License-file:   LICENSE
 Homepage:       http://www.haskell.org/haskellwiki/ALSA
 Stability:      Experimental
 Build-Type:     Simple
-Cabal-Version:  >= 1.14
 Synopsis:       Binding to the ALSA Library API (MIDI sequencer).
 Description:
   This package provides access to ALSA sequencer (MIDI support).
@@ -31,7 +31,7 @@
   location: http://code.haskell.org/alsa/seq/
 
 Source-Repository this
-  tag:      0.6.0.7
+  tag:      0.6.0.8
   type:     darcs
   location: http://code.haskell.org/alsa/seq/
 
@@ -46,7 +46,7 @@
 Library
   Build-depends:
     alsa-core >=0.5 && <0.6,
-    enumset >=0.0.3 && <0.1,
+    enumset >=0.0.5 && <0.1,
     transformers >=0.2 && <0.6,
     array >=0.1 && <0.6,
     bytestring >=0.9 && <0.11,
diff --git a/examples/list-ports.hs b/examples/list-ports.hs
--- a/examples/list-ports.hs
+++ b/examples/list-ports.hs
@@ -3,7 +3,7 @@
 import qualified Sound.ALSA.Sequencer.Client as Client
 import qualified Sound.ALSA.Sequencer.Port as Port
 import qualified Sound.ALSA.Sequencer as SndSeq
-import qualified Data.EnumSet as EnumSet
+import qualified Data.EnumBitSet as EnumSet
 import Text.Printf (printf, )
 import Control.Monad (liftM5, join, )
 
diff --git a/src/Sound/ALSA/Sequencer/Concurrent.hs b/src/Sound/ALSA/Sequencer/Concurrent.hs
--- a/src/Sound/ALSA/Sequencer/Concurrent.hs
+++ b/src/Sound/ALSA/Sequencer/Concurrent.hs
@@ -15,7 +15,7 @@
 
 import qualified Control.Exception as Exc
 import qualified System.Posix.Poll as Poll
-import qualified Data.EnumSet as EnumSet
+import qualified Data.EnumBitSet as EnumSet
 import Control.Concurrent (yield, threadWaitRead, threadWaitWrite, forkIO, killThread, )
 import Control.Concurrent.MVar (newEmptyMVar, putMVar, takeMVar, )
 import Control.Exception (catchJust, )
diff --git a/src/Sound/ALSA/Sequencer/Event/Remove.hsc b/src/Sound/ALSA/Sequencer/Event/Remove.hsc
--- a/src/Sound/ALSA/Sequencer/Event/Remove.hsc
+++ b/src/Sound/ALSA/Sequencer/Event/Remove.hsc
@@ -49,7 +49,7 @@
 import qualified Sound.ALSA.Sequencer.Area as Area
 import qualified Sound.ALSA.Exception as Exc
 
-import qualified Data.EnumSet as EnumSet
+import qualified Data.EnumBitSet as EnumSet
 import qualified Foreign.C.Types as C
 import Foreign.Ptr (Ptr, )
 
diff --git a/src/Sound/ALSA/Sequencer/Event/RemoveMonad.hs b/src/Sound/ALSA/Sequencer/Event/RemoveMonad.hs
--- a/src/Sound/ALSA/Sequencer/Event/RemoveMonad.hs
+++ b/src/Sound/ALSA/Sequencer/Event/RemoveMonad.hs
@@ -44,8 +44,8 @@
 import qualified Control.Monad.Trans.Class as MT
 import Control.Applicative (Applicative, )
 
-import qualified Data.EnumSet as EnumSet
-import Data.EnumSet ((.-.), (.|.), )
+import qualified Data.EnumBitSet as EnumSet
+import Data.EnumBitSet ((.-.), (.|.), )
 
 import Control.Monad (liftM2, )
 import Data.Monoid (mempty, mappend, )
diff --git a/src/Sound/ALSA/Sequencer/Marshal/Event.hsc b/src/Sound/ALSA/Sequencer/Marshal/Event.hsc
--- a/src/Sound/ALSA/Sequencer/Marshal/Event.hsc
+++ b/src/Sound/ALSA/Sequencer/Marshal/Event.hsc
@@ -250,7 +250,7 @@
 
 data Custom =
   Custom {
-    custom0, custom1, custom2 :: ! #{intfieldtype snd_seq_ev_raw32_t, d[0]}
+    custom0, custom1, custom2 :: !(#{intfieldtype snd_seq_ev_raw32_t, d[0]})
   } deriving (Show)
 
 instance Storable Custom where
diff --git a/src/Sound/ALSA/Sequencer/Marshal/Port.hsc b/src/Sound/ALSA/Sequencer/Marshal/Port.hsc
--- a/src/Sound/ALSA/Sequencer/Marshal/Port.hsc
+++ b/src/Sound/ALSA/Sequencer/Marshal/Port.hsc
@@ -33,7 +33,7 @@
 import Data.Ix (Ix, range, index, inRange, rangeSize, )
 import Data.Maybe (fromMaybe, )
 import qualified Data.Ix.Enum as IxEnum
-import qualified Data.EnumSet as EnumSet
+import qualified Data.EnumBitSet as EnumSet
 
 
 -- The type of client ports.
diff --git a/src/Sound/ALSA/Sequencer/Marshal/PortInfo.hsc b/src/Sound/ALSA/Sequencer/Marshal/PortInfo.hsc
--- a/src/Sound/ALSA/Sequencer/Marshal/PortInfo.hsc
+++ b/src/Sound/ALSA/Sequencer/Marshal/PortInfo.hsc
@@ -28,7 +28,7 @@
 import qualified Sound.ALSA.Sequencer.Utility as U
 import qualified Sound.ALSA.Exception as Exc
 
-import qualified Data.EnumSet as EnumSet
+import qualified Data.EnumBitSet as EnumSet
 
 import qualified Foreign.C.Types as C
 import Foreign.Ptr (Ptr, )
diff --git a/src/Sound/ALSA/Sequencer/Marshal/Queue.hsc b/src/Sound/ALSA/Sequencer/Marshal/Queue.hsc
--- a/src/Sound/ALSA/Sequencer/Marshal/Queue.hsc
+++ b/src/Sound/ALSA/Sequencer/Marshal/Queue.hsc
@@ -60,8 +60,8 @@
 
 data Skew =
    Skew {
-      skewValue :: ! #{intfieldtype snd_seq_queue_skew_t, value},
-      skewBase  :: ! #{intfieldtype snd_seq_queue_skew_t, base}
+      skewValue :: !(#{intfieldtype snd_seq_queue_skew_t, value}),
+      skewBase  :: !(#{intfieldtype snd_seq_queue_skew_t, base})
    } deriving (Show, Eq)
 
 instance Storable Skew where
diff --git a/src/Sound/ALSA/Sequencer/Marshal/RealTime.hsc b/src/Sound/ALSA/Sequencer/Marshal/RealTime.hsc
--- a/src/Sound/ALSA/Sequencer/Marshal/RealTime.hsc
+++ b/src/Sound/ALSA/Sequencer/Marshal/RealTime.hsc
@@ -11,8 +11,8 @@
 
 
 data T = Cons
-   { secs :: ! #{intfieldtype snd_seq_real_time_t, tv_sec}
-   , nano :: ! #{intfieldtype snd_seq_real_time_t, tv_nsec}
+   { secs :: !(#{intfieldtype snd_seq_real_time_t, tv_sec})
+   , nano :: !(#{intfieldtype snd_seq_real_time_t, tv_nsec})
    }
    deriving (Eq)
 
diff --git a/src/Sound/ALSA/Sequencer/Marshal/Template.h b/src/Sound/ALSA/Sequencer/Marshal/Template.h
--- a/src/Sound/ALSA/Sequencer/Marshal/Template.h
+++ b/src/Sound/ALSA/Sequencer/Marshal/Template.h
@@ -1,7 +1,10 @@
 #include <stdio.h>
 
+/* cf. FFI cookbook */
+#if __GLASGOW_HASKELL__ < 800
 #define hsc_alignment(t) \
-    printf("(%ld)", (unsigned long)offsetof(struct {char x__; t (y__); }, y__));
+    printf("(%lu)", (unsigned long)offsetof(struct {char x__; t (y__); }, y__));
+#endif
 
 #define hsc_inttype(t) \
     printf ("%s%lu",                                    \
diff --git a/src/Sound/ALSA/Sequencer/Poll.hs b/src/Sound/ALSA/Sequencer/Poll.hs
--- a/src/Sound/ALSA/Sequencer/Poll.hs
+++ b/src/Sound/ALSA/Sequencer/Poll.hs
@@ -11,7 +11,7 @@
 import Foreign.Ptr (Ptr, )
 
 -- expose EnumSet.Cons for foreign call
-import qualified Data.EnumSet as EnumSet
+import qualified Data.EnumBitSet as EnumSet
 
 _dummyEnumSet :: EnumSet.T Int Bool
 _dummyEnumSet = undefined
diff --git a/src/Sound/ALSA/Sequencer/Port.hs b/src/Sound/ALSA/Sequencer/Port.hs
--- a/src/Sound/ALSA/Sequencer/Port.hs
+++ b/src/Sound/ALSA/Sequencer/Port.hs
@@ -69,7 +69,7 @@
 import Foreign.C.String (CString, withCAString, )
 import Foreign.Ptr (Ptr, )
 
-import qualified Data.EnumSet as EnumSet -- expose EnumSet.Cons for foreign call
+import qualified Data.EnumBitSet as EnumSet -- expose EnumSet.Cons for foreign call
 
 import Control.Exception (bracket, )
 
