diff --git a/Foreign/CUDA/FFT.hs b/Foreign/CUDA/FFT.hs
--- a/Foreign/CUDA/FFT.hs
+++ b/Foreign/CUDA/FFT.hs
@@ -2,11 +2,14 @@
 module Foreign.CUDA.FFT (
 
   module Foreign.CUDA.FFT.Error,
-  module Foreign.CUDA.FFT.Plan,
   module Foreign.CUDA.FFT.Execute,
+  module Foreign.CUDA.FFT.Plan,
+  module Foreign.CUDA.FFT.Stream
 
 ) where
 
 import Foreign.CUDA.FFT.Error
-import Foreign.CUDA.FFT.Plan
 import Foreign.CUDA.FFT.Execute
+import Foreign.CUDA.FFT.Plan
+import Foreign.CUDA.FFT.Stream
+
diff --git a/Foreign/CUDA/FFT/Error.chs b/Foreign/CUDA/FFT/Error.chs
--- a/Foreign/CUDA/FFT/Error.chs
+++ b/Foreign/CUDA/FFT/Error.chs
@@ -22,22 +22,26 @@
 -- Describe each error code
 --
 describe :: Result -> String
-describe Success         = "success"
-describe InvalidPlan     = "invalid plan handle"
-describe AllocFailed     = "resource allocation failed"
-describe InvalidType     = "no longer used"
-describe InvalidValue    = "unsupported value or parameter passed to a function"
-describe InternalError   = "internal error"
-describe ExecFailed      = "failed to execute an FFT on the GPU"
-describe SetupFailed     = "the CUFFT library failed to initialize"
-describe InvalidSize     = "invalid transform size"
-describe UnalignedData   = "no longer used"
+describe Success                 = "success"
+describe InvalidPlan             = "invalid plan handle"
+describe AllocFailed             = "resource allocation failed"
+describe InvalidType             = "no longer used"
+describe InvalidValue            = "unsupported value or parameter passed to a function"
+describe InternalError           = "internal error"
+describe ExecFailed              = "failed to execute an FFT on the GPU"
+describe SetupFailed             = "the CUFFT library failed to initialize"
+describe InvalidSize             = "invalid transform size"
+describe UnalignedData           = "no longer used"
 #if CUDA_VERSION >= 6000
 describe IncompleteParameterList = "missing parameters in call"
-describe InvalidDevice   = "execution of a plan was on different GPU than plan creation"
-describe ParseError      = "internal plan database error"
-describe NoWorkspace     = "no workspace has been provided prior to plan execution"
+describe InvalidDevice           = "execution of a plan was on a different GPU than plan creation"
+describe ParseError              = "internal plan database error"
+describe NoWorkspace             = "no workspace has been provided prior to plan execution"
 #endif
+#if CUDA_VERSION >= 6050
+describe NotImplemented          = "not implemented"
+describe LicenseError            = "cufft license error"
+#endif
 
 
 -- Exceptions ------------------------------------------------------------------
@@ -78,3 +82,4 @@
     case status of
         Success -> return  ()
         _       -> throwIO (ExitCode status)
+
diff --git a/Foreign/CUDA/FFT/Internal/C2HS.hs b/Foreign/CUDA/FFT/Internal/C2HS.hs
--- a/Foreign/CUDA/FFT/Internal/C2HS.hs
+++ b/Foreign/CUDA/FFT/Internal/C2HS.hs
@@ -8,6 +8,7 @@
 
 -- System
 import Foreign
+import Foreign.C
 
 
 -- Conversions -----------------------------------------------------------------
@@ -15,42 +16,46 @@
 
 -- | Integral conversion
 --
-{-# INLINE cIntConv #-}
+{-# INLINE [1] cIntConv #-}
 cIntConv :: (Integral a, Integral b) => a -> b
 cIntConv  = fromIntegral
 
 -- | Floating conversion
 --
-{-# INLINE[1] cFloatConv #-}
+{-# INLINE [1] cFloatConv #-}
 cFloatConv :: (RealFloat a, RealFloat b) => a -> b
 cFloatConv  = realToFrac
 -- As this conversion by default goes via `Rational', it can be very slow...
 {-# RULES
-  "cFloatConv/Float->Float"   forall (x::Float).  cFloatConv x = x;
-  "cFloatConv/Double->Double" forall (x::Double). cFloatConv x = x
+  "cFloatConv/Float->Float"    forall (x::Float).  cFloatConv x = x;
+  "cFloatConv/Double->Double"  forall (x::Double). cFloatConv x = x;
+  "cFloatConv/Float->CFloat"   forall (x::Float).  cFloatConv x = CFloat x;
+  "cFloatConv/CFloat->Float"   forall (x::Float).  cFloatConv CFloat x = x;
+  "cFloatConv/Double->CDouble" forall (x::Double). cFloatConv x = CDouble x;
+  "cFloatConv/CDouble->Double" forall (x::Double). cFloatConv CDouble x = x
  #-}
 
 -- | Obtain C value from Haskell 'Bool'.
 --
-{-# INLINE cFromBool #-}
+{-# INLINE [1] cFromBool #-}
 cFromBool :: Num a => Bool -> a
 cFromBool  = fromBool
 
 -- | Obtain Haskell 'Bool' from C value.
 --
-{-# INLINE cToBool #-}
+{-# INLINE [1] cToBool #-}
 cToBool :: (Eq a, Num a) => a -> Bool
 cToBool  = toBool
 
 -- | Convert a C enumeration to Haskell.
 --
-{-# INLINE cToEnum #-}
+{-# INLINE [1] cToEnum #-}
 cToEnum :: (Integral i, Enum e) => i -> e
 cToEnum  = toEnum . cIntConv
 
 -- | Convert a Haskell enumeration to C.
 --
-{-# INLINE cFromEnum #-}
+{-# INLINE [1] cFromEnum #-}
 cFromEnum :: (Enum e, Integral i) => e -> i
 cFromEnum  = cIntConv . fromEnum
 
diff --git a/Foreign/CUDA/FFT/Plan.chs b/Foreign/CUDA/FFT/Plan.chs
--- a/Foreign/CUDA/FFT/Plan.chs
+++ b/Foreign/CUDA/FFT/Plan.chs
@@ -124,3 +124,4 @@
 
 {# fun unsafe cufftDestroy
   { useHandle `Handle' } -> `Result' cToEnum #}
+
diff --git a/Foreign/CUDA/FFT/Stream.chs b/Foreign/CUDA/FFT/Stream.chs
new file mode 100644
--- /dev/null
+++ b/Foreign/CUDA/FFT/Stream.chs
@@ -0,0 +1,35 @@
+{-# LANGUAGE CPP                      #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+
+module Foreign.CUDA.FFT.Stream (
+
+  -- * Streamed transforms
+  setStream,
+
+) where
+
+-- friends
+import Foreign.CUDA.Types
+import Foreign.CUDA.FFT.Plan
+import Foreign.CUDA.FFT.Error
+import Foreign.CUDA.FFT.Internal.C2HS
+
+-- system
+import Foreign
+import Foreign.C
+
+#include <cbits/wrap.h>
+{# context lib="cufft" #}
+
+-- | Associates a CUDA stream with a CUFFT plan. All kernel launches made during
+-- plan execution are now done through the associated stream, enabling overlap
+-- with activity in other streams (e.g. data copying). The association remains
+-- until the plan is destroyed or the stream is changed.
+--
+setStream :: Handle -> Stream -> IO ()
+setStream ctx st = nothingIfOk =<< cufftSetStream ctx st
+
+{# fun unsafe cufftSetStream
+  { useHandle `Handle'
+  , useStream `Stream' } -> `Result' cToEnum #}
+
diff --git a/cbits/wrap.h b/cbits/wrap.h
--- a/cbits/wrap.h
+++ b/cbits/wrap.h
@@ -13,9 +13,11 @@
 #define __AVAILABILITY__
 #define __OSX_AVAILABLE_STARTING(_mac, _iphone)
 #define __OSX_AVAILABLE_BUT_DEPRECATED(_macIntro, _macDep, _iphoneIntro, _iphoneDep)
+#define __OSX_AVAILABLE_BUT_DEPRECATED_MSG(_osxIntro, _osxDep, _iosIntro, _iosDep, _msg)
 #endif
 
 #include <cuda.h>
 #include <cufft.h>
 
 #endif
+
diff --git a/cufft.cabal b/cufft.cabal
--- a/cufft.cabal
+++ b/cufft.cabal
@@ -1,24 +1,24 @@
--- Initial cufft.cabal generated by cabal init.  For further documentation,
---  see http://haskell.org/cabal/users-guide/
+name:                   cufft
+version:                0.1.2.0
+synopsis:               Haskell bindings for the CUFFT library
+description:
+    The CUFFT library is part of the CUDA developer toolkit.
+    .
+    <http://developer.nvidia.com/cuda-downloads>
+    .
+    It contains a highly optimised, FFTW compatible, Fast-Fourier Transform
+    implementation that can execute on NVIDIA GPUs.
+    .
 
-name:                cufft
-version:             0.1.1.0
-synopsis:            Haskell bindings for the CUFFT library
-description:         The CUFFT library is part of the CUDA developer toolkit.
-                     .
-                     <http://developer.nvidia.com/cuda-downloads>
-                     .
-                     It contains a highly optimised, FFTW compatible, Fast-Fourier Transform
-                     implementation that can execute on NVIDIA GPUs.
-homepage:            http://github.com/robeverest/cufft
-license:             BSD3
-license-file:        LICENSE
-author:              Robert Clifton-Everest <robertce@cse.unsw.edu.au>
-maintainer:          Robert Clifton-Everest <robertce@cse.unsw.edu.au>
+homepage:               http://github.com/robeverest/cufft
+license:                BSD3
+license-file:           LICENSE
+author:                 Robert Clifton-Everest <robertce@cse.unsw.edu.au>
+maintainer:             Robert Clifton-Everest <robertce@cse.unsw.edu.au>
 
-category:            Foreign
-build-type:          Custom
-cabal-version:       >=1.8
+category:               Foreign
+build-type:             Custom
+cabal-version:          >=1.8
 
 Extra-tmp-files:        cufft.buildinfo config.status config.log
 Extra-source-files:     configure
@@ -33,12 +33,13 @@
   exposed-modules:      Foreign.CUDA.FFT
 
   other-modules:        Foreign.CUDA.FFT.Error
-                        Foreign.CUDA.FFT.Plan
                         Foreign.CUDA.FFT.Execute
+                        Foreign.CUDA.FFT.Plan
+                        Foreign.CUDA.FFT.Stream
                         Foreign.CUDA.FFT.Internal.C2HS
 
   build-depends:        base == 4.*,
-                        cuda >= 0.4.1
+                        cuda >= 0.6.6
 
   build-tools:          c2hs >= 0.16
   ghc-options:          -Wall -O2 -funbox-strict-fields -fwarn-tabs
