diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -13,7 +13,7 @@
       disclaimer in the documentation and/or other materials provided
       with the distribution.
 
-    * Neither the name of Vincent Berthoux nor the names of other
+    * Neither the name of Michael Tolly nor the names of other
       contributors may be used to endorse or promote products derived
       from this software without specific prior written permission.
 
diff --git a/conduit-audio-lame.cabal b/conduit-audio-lame.cabal
--- a/conduit-audio-lame.cabal
+++ b/conduit-audio-lame.cabal
@@ -1,5 +1,5 @@
 name:                 conduit-audio-lame
-version:              0.1.2
+version:              0.1.2.1
 author:               Michael Tolly
 maintainer:           miketolly@gmail.com
 license:              BSD3
@@ -25,12 +25,12 @@
     Data.Conduit.Audio.LAME
     Data.Conduit.Audio.LAME.Binding
   build-depends:
-    base >= 4.6 && < 4.9
+    base >= 4.6 && < 4.11
     , bytestring
     , conduit
     , conduit-audio >= 0.1 && < 0.3
     , resourcet
-    , transformers >= 0.3 && < 0.5
+    , transformers >= 0.3 && < 0.6
     , vector
   hs-source-dirs:       src
   default-language:     Haskell2010
diff --git a/src/Data/Conduit/Audio/LAME/Binding.chs b/src/Data/Conduit/Audio/LAME/Binding.chs
--- a/src/Data/Conduit/Audio/LAME/Binding.chs
+++ b/src/Data/Conduit/Audio/LAME/Binding.chs
@@ -9,34 +9,34 @@
 
 {#context prefix="lame_"#}
 
-{#fun init as ^ {} -> `LAME' #}
+{#fun init as ^ {} -> `LAME' id #}
 
 
 
-{#fun get_num_samples as ^ { `LAME' } -> `Int'  #}
-{#fun set_num_samples as ^ { `LAME',  `Int' } -> `Int' #}
-{#fun get_in_samplerate as ^ { `LAME' } -> `Int'  #}
-{#fun set_in_samplerate as ^ { `LAME',  `Int' } -> `Int' #}
-{#fun get_num_channels as ^ { `LAME' } -> `Int'  #}
-{#fun set_num_channels as ^ { `LAME',  `Int' } -> `Int' #}
-{#fun get_scale as ^ { `LAME' } -> `Float'  #}
-{#fun set_scale as ^ { `LAME',  `Float' } -> `Int' #}
-{#fun get_scale_left as ^ { `LAME' } -> `Float'  #}
-{#fun set_scale_left as ^ { `LAME',  `Float' } -> `Int' #}
-{#fun get_scale_right as ^ { `LAME' } -> `Float'  #}
-{#fun set_scale_right as ^ { `LAME',  `Float' } -> `Int' #}
-{#fun get_out_samplerate as ^ { `LAME' } -> `Int'  #}
-{#fun set_out_samplerate as ^ { `LAME',  `Int' } -> `Int' #}
-{#fun get_analysis as ^ { `LAME' } -> `Bool'  #}
-{#fun set_analysis as ^ { `LAME',  `Bool' } -> `Int' #}
-{#fun get_bWriteVbrTag as ^ { `LAME' } -> `Bool'  #}
-{#fun set_bWriteVbrTag as ^ { `LAME',  `Bool' } -> `Int' #}
-{#fun get_decode_only as ^ { `LAME' } -> `Bool'  #}
-{#fun set_decode_only as ^ { `LAME',  `Bool' } -> `Int' #}
-{#fun get_quality as ^ { `LAME' } -> `Int'  #}
-{#fun set_quality as ^ { `LAME',  `Int' } -> `Int' #}
-{#fun get_mode as ^ { `LAME' } -> `MPEGMode' toCEnum #}
-{#fun set_mode as ^ { `LAME', fromCEnum `MPEGMode' } -> `Int' #}
+{#fun get_num_samples as ^ { id `LAME' } -> `Int'  #}
+{#fun set_num_samples as ^ { id `LAME',  `Int' } -> `Int' #}
+{#fun get_in_samplerate as ^ { id `LAME' } -> `Int'  #}
+{#fun set_in_samplerate as ^ { id `LAME',  `Int' } -> `Int' #}
+{#fun get_num_channels as ^ { id `LAME' } -> `Int'  #}
+{#fun set_num_channels as ^ { id `LAME',  `Int' } -> `Int' #}
+{#fun get_scale as ^ { id `LAME' } -> `Float'  #}
+{#fun set_scale as ^ { id `LAME',  `Float' } -> `Int' #}
+{#fun get_scale_left as ^ { id `LAME' } -> `Float'  #}
+{#fun set_scale_left as ^ { id `LAME',  `Float' } -> `Int' #}
+{#fun get_scale_right as ^ { id `LAME' } -> `Float'  #}
+{#fun set_scale_right as ^ { id `LAME',  `Float' } -> `Int' #}
+{#fun get_out_samplerate as ^ { id `LAME' } -> `Int'  #}
+{#fun set_out_samplerate as ^ { id `LAME',  `Int' } -> `Int' #}
+{#fun get_analysis as ^ { id `LAME' } -> `Bool'  #}
+{#fun set_analysis as ^ { id `LAME',  `Bool' } -> `Int' #}
+{#fun get_bWriteVbrTag as ^ { id `LAME' } -> `Bool'  #}
+{#fun set_bWriteVbrTag as ^ { id `LAME',  `Bool' } -> `Int' #}
+{#fun get_decode_only as ^ { id `LAME' } -> `Bool'  #}
+{#fun set_decode_only as ^ { id `LAME',  `Bool' } -> `Int' #}
+{#fun get_quality as ^ { id `LAME' } -> `Int'  #}
+{#fun set_quality as ^ { id `LAME',  `Int' } -> `Int' #}
+{#fun get_mode as ^ { id `LAME' } -> `MPEGMode' toCEnum #}
+{#fun set_mode as ^ { id `LAME', fromCEnum `MPEGMode' } -> `Int' #}
 
 {#enum MPEG_mode as MPEGMode {underscoreToCase}
   deriving (Eq, Ord, Show, Read, Bounded) #}
@@ -47,87 +47,87 @@
 toCEnum :: (Enum a) => CInt -> a
 toCEnum = toEnum . fromIntegral
 
-{#fun get_force_ms as ^ { `LAME' } -> `Bool'  #}
-{#fun set_force_ms as ^ { `LAME',  `Bool' } -> `Int' #}
-{#fun get_free_format as ^ { `LAME' } -> `Bool'  #}
-{#fun set_free_format as ^ { `LAME',  `Bool' } -> `Int' #}
-{#fun get_findReplayGain as ^ { `LAME' } -> `Bool'  #}
-{#fun set_findReplayGain as ^ { `LAME',  `Bool' } -> `Int' #}
-{#fun get_decode_on_the_fly as ^ { `LAME' } -> `Bool'  #}
-{#fun set_decode_on_the_fly as ^ { `LAME',  `Bool' } -> `Int' #}
-{#fun get_nogap_total as ^ { `LAME' } -> `Int'  #}
-{#fun set_nogap_total as ^ { `LAME',  `Int' } -> `Int' #}
-{#fun get_nogap_currentindex as ^ { `LAME' } -> `Int'  #}
-{#fun set_nogap_currentindex as ^ { `LAME',  `Int' } -> `Int' #}
+{#fun get_force_ms as ^ { id `LAME' } -> `Bool'  #}
+{#fun set_force_ms as ^ { id `LAME',  `Bool' } -> `Int' #}
+{#fun get_free_format as ^ { id `LAME' } -> `Bool'  #}
+{#fun set_free_format as ^ { id `LAME',  `Bool' } -> `Int' #}
+{#fun get_findReplayGain as ^ { id `LAME' } -> `Bool'  #}
+{#fun set_findReplayGain as ^ { id `LAME',  `Bool' } -> `Int' #}
+{#fun get_decode_on_the_fly as ^ { id `LAME' } -> `Bool'  #}
+{#fun set_decode_on_the_fly as ^ { id `LAME',  `Bool' } -> `Int' #}
+{#fun get_nogap_total as ^ { id `LAME' } -> `Int'  #}
+{#fun set_nogap_total as ^ { id `LAME',  `Int' } -> `Int' #}
+{#fun get_nogap_currentindex as ^ { id `LAME' } -> `Int'  #}
+{#fun set_nogap_currentindex as ^ { id `LAME',  `Int' } -> `Int' #}
 
 -- TODO: lame_set_errorf, lame_set_debugf, lame_set_msgf
 
-{#fun get_brate as ^ { `LAME' } -> `Int'  #}
-{#fun set_brate as ^ { `LAME',  `Int' } -> `Int' #}
-{#fun get_compression_ratio as ^ { `LAME' } -> `Float'  #}
-{#fun set_compression_ratio as ^ { `LAME',  `Float' } -> `Int' #}
+{#fun get_brate as ^ { id `LAME' } -> `Int'  #}
+{#fun set_brate as ^ { id `LAME',  `Int' } -> `Int' #}
+{#fun get_compression_ratio as ^ { id `LAME' } -> `Float'  #}
+{#fun set_compression_ratio as ^ { id `LAME',  `Float' } -> `Int' #}
 
 {#fun set_preset as ^ { `LAME', `Int' } -> `Int' #}
 {#fun set_asm_optimizations as ^ { `LAME', `Int', `Int' } -> `Int' #}
 
-{#fun get_copyright as ^ { `LAME' } -> `Bool'  #}
-{#fun set_copyright as ^ { `LAME',  `Bool' } -> `Int' #}
-{#fun get_original as ^ { `LAME' } -> `Bool'  #}
-{#fun set_original as ^ { `LAME',  `Bool' } -> `Int' #}
-{#fun get_error_protection as ^ { `LAME' } -> `Bool'  #}
-{#fun set_error_protection as ^ { `LAME',  `Bool' } -> `Int' #}
-{#fun get_extension as ^ { `LAME' } -> `Bool'  #}
-{#fun set_extension as ^ { `LAME',  `Bool' } -> `Int' #}
-{#fun get_strict_ISO as ^ { `LAME' } -> `Bool'  #}
-{#fun set_strict_ISO as ^ { `LAME',  `Bool' } -> `Int' #}
+{#fun get_copyright as ^ { id `LAME' } -> `Bool'  #}
+{#fun set_copyright as ^ { id `LAME',  `Bool' } -> `Int' #}
+{#fun get_original as ^ { id `LAME' } -> `Bool'  #}
+{#fun set_original as ^ { id `LAME',  `Bool' } -> `Int' #}
+{#fun get_error_protection as ^ { id `LAME' } -> `Bool'  #}
+{#fun set_error_protection as ^ { id `LAME',  `Bool' } -> `Int' #}
+{#fun get_extension as ^ { id `LAME' } -> `Bool'  #}
+{#fun set_extension as ^ { id `LAME',  `Bool' } -> `Int' #}
+{#fun get_strict_ISO as ^ { id `LAME' } -> `Bool'  #}
+{#fun set_strict_ISO as ^ { id `LAME',  `Bool' } -> `Int' #}
 
 -- TODO: quantization/noise shaping section
 
-{#fun get_VBR as ^ { `LAME' } -> `VBRMode' toCEnum #}
-{#fun set_VBR as ^ { `LAME', fromCEnum `VBRMode' } -> `Int' #}
+{#fun get_VBR as ^ { id `LAME' } -> `VBRMode' toCEnum #}
+{#fun set_VBR as ^ { id `LAME', fromCEnum `VBRMode' } -> `Int' #}
 
 {#enum vbr_mode as VBRMode {underscoreToCase}
   deriving (Eq, Ord, Show, Read, Bounded) #}
 
-{#fun get_VBR_q as ^ { `LAME' } -> `Int'  #}
-{#fun set_VBR_q as ^ { `LAME',  `Int' } -> `Int' #}
-{#fun get_VBR_quality as ^ { `LAME' } -> `Float'  #}
-{#fun set_VBR_quality as ^ { `LAME',  `Float' } -> `Int' #}
+{#fun get_VBR_q as ^ { id `LAME' } -> `Int'  #}
+{#fun set_VBR_q as ^ { id `LAME',  `Int' } -> `Int' #}
+{#fun get_VBR_quality as ^ { id `LAME' } -> `Float'  #}
+{#fun set_VBR_quality as ^ { id `LAME',  `Float' } -> `Int' #}
 
-{#fun get_VBR_mean_bitrate_kbps as ^ { `LAME' } -> `Int'  #}
-{#fun set_VBR_mean_bitrate_kbps as ^ { `LAME',  `Int' } -> `Int' #}
-{#fun get_VBR_min_bitrate_kbps as ^ { `LAME' } -> `Int'  #}
-{#fun set_VBR_min_bitrate_kbps as ^ { `LAME',  `Int' } -> `Int' #}
-{#fun get_VBR_max_bitrate_kbps as ^ { `LAME' } -> `Int'  #}
-{#fun set_VBR_max_bitrate_kbps as ^ { `LAME',  `Int' } -> `Int' #}
+{#fun get_VBR_mean_bitrate_kbps as ^ { id `LAME' } -> `Int'  #}
+{#fun set_VBR_mean_bitrate_kbps as ^ { id `LAME',  `Int' } -> `Int' #}
+{#fun get_VBR_min_bitrate_kbps as ^ { id `LAME' } -> `Int'  #}
+{#fun set_VBR_min_bitrate_kbps as ^ { id `LAME',  `Int' } -> `Int' #}
+{#fun get_VBR_max_bitrate_kbps as ^ { id `LAME' } -> `Int'  #}
+{#fun set_VBR_max_bitrate_kbps as ^ { id `LAME',  `Int' } -> `Int' #}
 
-{#fun get_VBR_hard_min as ^ { `LAME' } -> `Bool'  #}
-{#fun set_VBR_hard_min as ^ { `LAME',  `Bool' } -> `Int' #}
+{#fun get_VBR_hard_min as ^ { id `LAME' } -> `Bool'  #}
+{#fun set_VBR_hard_min as ^ { id `LAME',  `Bool' } -> `Int' #}
 
-{#fun get_lowpassfreq as ^ { `LAME' } -> `Int'  #}
-{#fun set_lowpassfreq as ^ { `LAME',  `Int' } -> `Int' #}
-{#fun get_lowpasswidth as ^ { `LAME' } -> `Int'  #}
-{#fun set_lowpasswidth as ^ { `LAME',  `Int' } -> `Int' #}
-{#fun get_highpassfreq as ^ { `LAME' } -> `Int'  #}
-{#fun set_highpassfreq as ^ { `LAME',  `Int' } -> `Int' #}
-{#fun get_highpasswidth as ^ { `LAME' } -> `Int'  #}
-{#fun set_highpasswidth as ^ { `LAME',  `Int' } -> `Int' #}
+{#fun get_lowpassfreq as ^ { id `LAME' } -> `Int'  #}
+{#fun set_lowpassfreq as ^ { id `LAME',  `Int' } -> `Int' #}
+{#fun get_lowpasswidth as ^ { id `LAME' } -> `Int'  #}
+{#fun set_lowpasswidth as ^ { id `LAME',  `Int' } -> `Int' #}
+{#fun get_highpassfreq as ^ { id `LAME' } -> `Int'  #}
+{#fun set_highpassfreq as ^ { id `LAME',  `Int' } -> `Int' #}
+{#fun get_highpasswidth as ^ { id `LAME' } -> `Int'  #}
+{#fun set_highpasswidth as ^ { id `LAME',  `Int' } -> `Int' #}
 
 -- TODO: psycho acoustics section
 
-{#fun get_version as ^ { `LAME' } -> `Int'  #}
-{#fun get_encoder_delay as ^ { `LAME' } -> `Int'  #}
-{#fun get_encoder_padding as ^ { `LAME' } -> `Int'  #}
-{#fun get_framesize as ^ { `LAME' } -> `Int'  #}
-{#fun get_mf_samples_to_encode as ^ { `LAME' } -> `Int'  #}
-{#fun get_size_mp3buffer as ^ { `LAME' } -> `Int'  #}
-{#fun get_frameNum as ^ { `LAME' } -> `Int'  #}
-{#fun get_totalframes as ^ { `LAME' } -> `Int'  #}
-{#fun get_RadioGain as ^ { `LAME' } -> `Int'  #}
-{#fun get_AudiophileGain as ^ { `LAME' } -> `Int'  #}
-{#fun get_PeakSample as ^ { `LAME' } -> `Float'  #}
-{#fun get_noclipGainChange as ^ { `LAME' } -> `Int'  #}
-{#fun get_noclipScale as ^ { `LAME' } -> `Float'  #}
+{#fun get_version as ^ { id `LAME' } -> `Int'  #}
+{#fun get_encoder_delay as ^ { id `LAME' } -> `Int'  #}
+{#fun get_encoder_padding as ^ { id `LAME' } -> `Int'  #}
+{#fun get_framesize as ^ { id `LAME' } -> `Int'  #}
+{#fun get_mf_samples_to_encode as ^ { id `LAME' } -> `Int'  #}
+{#fun get_size_mp3buffer as ^ { id `LAME' } -> `Int'  #}
+{#fun get_frameNum as ^ { id `LAME' } -> `Int'  #}
+{#fun get_totalframes as ^ { id `LAME' } -> `Int'  #}
+{#fun get_RadioGain as ^ { id `LAME' } -> `Int'  #}
+{#fun get_AudiophileGain as ^ { id `LAME' } -> `Int'  #}
+{#fun get_PeakSample as ^ { id `LAME' } -> `Float'  #}
+{#fun get_noclipGainChange as ^ { id `LAME' } -> `Int'  #}
+{#fun get_noclipScale as ^ { id `LAME' } -> `Float'  #}
 
 {#fun init_params as ^ { `LAME' } -> `Int' #}
 
@@ -156,7 +156,7 @@
 
 
 {#fun encode_buffer as ^
-  { `LAME'
+  { id `LAME'
   , id `Ptr CShort' -- ^ PCM data for left channel
   , id `Ptr CShort' -- ^ PCM data for right channel
   , `Int' -- ^ number of samples per channel
@@ -166,7 +166,7 @@
 
 
 {#fun encode_buffer_interleaved as ^
-  { `LAME'
+  { id `LAME'
   , id `Ptr CShort' -- ^ PCM data for left and right channel, interleaved
   , `Int' -- ^ number of samples per channel, /not/ number of samples overall
   , id `Ptr CUChar' -- ^ pointer to encoded MP3 stream
@@ -175,7 +175,7 @@
 
 
 {#fun encode_buffer_float as ^
-  { `LAME'
+  { id `LAME'
   , id `Ptr CFloat' -- ^ PCM data for left channel
   , id `Ptr CFloat' -- ^ PCM data for right channel
   , `Int' -- ^ number of samples per channel
@@ -185,7 +185,7 @@
 
 
 {#fun encode_buffer_ieee_float as ^
-  { `LAME'
+  { id `LAME'
   , id `Ptr CFloat' -- ^ PCM data for left channel
   , id `Ptr CFloat' -- ^ PCM data for right channel
   , `Int' -- ^ number of samples per channel
@@ -195,7 +195,7 @@
 
 
 {#fun encode_buffer_interleaved_ieee_float as ^
-  { `LAME'
+  { id `LAME'
   , id `Ptr CFloat' -- ^ PCM data for left and right channel, interleaved
   , `Int' -- ^ number of samples per channel, /not/ number of samples overall
   , id `Ptr CUChar' -- ^ pointer to encoded MP3 stream
@@ -204,7 +204,7 @@
 
 
 {#fun encode_buffer_ieee_double as ^
-  { `LAME'
+  { id `LAME'
   , id `Ptr CDouble' -- ^ PCM data for left channel
   , id `Ptr CDouble' -- ^ PCM data for right channel
   , `Int' -- ^ number of samples per channel
@@ -214,7 +214,7 @@
 
 
 {#fun encode_buffer_interleaved_ieee_double as ^
-  { `LAME'
+  { id `LAME'
   , id `Ptr CDouble' -- ^ PCM data for left and right channel, interleaved
   , `Int' -- ^ number of samples per channel, /not/ number of samples overall
   , id `Ptr CUChar' -- ^ pointer to encoded MP3 stream
@@ -223,7 +223,7 @@
 
 
 {#fun encode_buffer_long as ^
-  { `LAME'
+  { id `LAME'
   , id `Ptr CLong' -- ^ PCM data for left channel
   , id `Ptr CLong' -- ^ PCM data for right channel
   , `Int' -- ^ number of samples per channel
@@ -233,7 +233,7 @@
 
 
 {#fun encode_buffer_long2 as ^
-  { `LAME'
+  { id `LAME'
   , id `Ptr CLong' -- ^ PCM data for left channel
   , id `Ptr CLong' -- ^ PCM data for right channel
   , `Int' -- ^ number of samples per channel
@@ -243,7 +243,7 @@
 
 
 {#fun encode_buffer_int as ^
-  { `LAME'
+  { id `LAME'
   , id `Ptr CInt' -- ^ PCM data for left channel
   , id `Ptr CInt' -- ^ PCM data for right channel
   , `Int' -- ^ number of samples per channel
@@ -253,30 +253,30 @@
 
 
 {#fun encode_flush as ^
-  { `LAME'
+  { id `LAME'
   , id `Ptr CUChar' -- ^ pointer to encoded MP3 stream
   , `Int' -- number of valid octets in this stream
   } -> `Int' #}
 
 {#fun encode_flush_nogap as ^
-  { `LAME'
+  { id `LAME'
   , id `Ptr CUChar' -- ^ pointer to encoded MP3 stream
   , `Int' -- number of valid octets in this stream
   } -> `Int' #}
 
 {#fun init_bitstream as ^
-  { `LAME'
+  { id `LAME'
   } -> `Int' #}
 
 -- TODO: some simple statistics
 
 {#fun get_lametag_frame as ^
-  { `LAME'
+  { id `LAME'
   , id `Ptr CUChar'
   , fromIntegral `CSize'
   } -> `CSize' fromIntegral #}
 
-{#fun close as ^ { `LAME' } -> `Int' #}
+{#fun close as ^ { id `LAME' } -> `Int' #}
 
 {#enum lame_errorcodes_t as ErrorCode {underscoreToCase}
   deriving (Eq, Ord, Show, Read, Bounded) #}
