diff --git a/alsa-pcm.cabal b/alsa-pcm.cabal
--- a/alsa-pcm.cabal
+++ b/alsa-pcm.cabal
@@ -1,5 +1,5 @@
 Name:          alsa-pcm
-Version:       0.6.1.1
+Version:       0.6.1.2
 Copyright:     Bjorn Bringert, Iavor S. Diatchki, Henning Thielemann
 Maintainer:    Henning Thielemann <alsa@henning-thielemann.de>
 Author:        Henning Thielemann <alsa@henning-thielemann.de>, Bjorn Bringert <bjorn@bringert.net>, Iavor S. Diatchki <iavor.diatchki@gmail.com>
@@ -28,7 +28,7 @@
 Source-Repository this
   type:     darcs
   location: http://code.haskell.org/alsa/pcm/
-  tag:      0.6.1.1
+  tag:      0.6.1.2
 
 Flag buildExamples
   description: Build example executables
@@ -85,8 +85,8 @@
     Build-Depends:
       alsa-pcm,
       alsa-seq >=0.6 && <0.7,
-      containers >=0.2 && <0.7,
-      transformers >=0.2 && <0.6,
+      containers >=0.2 && <0.8,
+      transformers >=0.2 && <0.7,
       storablevector >=0.2.7 && <0.3,
       base
   Else
diff --git a/src/Sound/ALSA/PCM/Core/Handle.hsc b/src/Sound/ALSA/PCM/Core/Handle.hsc
--- a/src/Sound/ALSA/PCM/Core/Handle.hsc
+++ b/src/Sound/ALSA/PCM/Core/Handle.hsc
@@ -67,7 +67,7 @@
 
 instance Monoid Mode where
    mempty = Mode 0
-   mappend (Mode a) (Mode b) = Mode (a .|. b)
+   mappend = (<>)
 
 modes :: [Mode] -> Mode
 modes = mconcat
diff --git a/src/Sound/ALSA/PCM/Core/HwParams.hsc b/src/Sound/ALSA/PCM/Core/HwParams.hsc
--- a/src/Sound/ALSA/PCM/Core/HwParams.hsc
+++ b/src/Sound/ALSA/PCM/Core/HwParams.hsc
@@ -45,7 +45,7 @@
    Cons f <*> Cons x = Cons $ \h p -> f h p <*> x h p
 
 instance Monad (T i y) where
-   return a = Cons $ \ _h _p -> return a
+   return = pure
    Cons x >>= k =
       Cons $ \h p -> x h p >>= \a -> case k a of Cons y -> y h p
 
diff --git a/src/Sound/ALSA/PCM/Core/Params.h b/src/Sound/ALSA/PCM/Core/Params.h
--- a/src/Sound/ALSA/PCM/Core/Params.h
+++ b/src/Sound/ALSA/PCM/Core/Params.h
@@ -1,8 +1,9 @@
 #include <stdlib.h>
 #include <stdarg.h>
+#include <alloca.h>
 
-typedef char bool;
-const bool false = 0, true = 1;
+typedef char fmt_bool;
+const fmt_bool fmt_false = 0, fmt_true = 1;
 
 enum context {pcm_params, params_only};
 
@@ -21,15 +22,15 @@
   *dst = 0;
 }
 
-void init_comma (bool *comma) {
-  *comma = false;
+void init_comma (fmt_bool *comma) {
+  *comma = fmt_false;
 }
 
-void print_comma (bool *comma) {
+void print_comma (fmt_bool *comma) {
   if (*comma) {
     printf(", ");
   }
-  *comma = true;
+  *comma = fmt_true;
 }
 
 struct type {
@@ -95,7 +96,7 @@
 void hsc_accessor (enum result res, const char *name, enum context ctx, ...) {
   va_list arg;
   struct parameter *p;
-  bool comma;
+  fmt_bool comma;
   char *camelName = alloca (strlen (name) + 1);
   make_camel_case (camelName, name);
 
diff --git a/src/Sound/ALSA/PCM/Core/SwParams.hsc b/src/Sound/ALSA/PCM/Core/SwParams.hsc
--- a/src/Sound/ALSA/PCM/Core/SwParams.hsc
+++ b/src/Sound/ALSA/PCM/Core/SwParams.hsc
@@ -39,7 +39,7 @@
    Cons f <*> Cons x = Cons $ \h p -> f h p <*> x h p
 
 instance Monad (T i y) where
-   return a = Cons $ \ _h _p -> return a
+   return = pure
    Cons x >>= k =
       Cons $ \h p -> x h p >>= \a -> case k a of Cons y -> y h p
 
