diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2015, Julian K. Arni
+Copyright (c) 2015-2016, Servant Contributors
 
 All rights reserved.
 
diff --git a/include/overlapping-compat.h b/include/overlapping-compat.h
new file mode 100644
--- /dev/null
+++ b/include/overlapping-compat.h
@@ -0,0 +1,8 @@
+#if __GLASGOW_HASKELL__ >= 710
+#define OVERLAPPABLE_ {-# OVERLAPPABLE #-}
+#define OVERLAPPING_  {-# OVERLAPPING #-}
+#else
+{-# LANGUAGE OverlappingInstances #-}
+#define OVERLAPPABLE_
+#define OVERLAPPING_
+#endif
diff --git a/servant-cassava.cabal b/servant-cassava.cabal
--- a/servant-cassava.cabal
+++ b/servant-cassava.cabal
@@ -2,18 +2,18 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                servant-cassava
-version:             0.4.4.7
+version:             0.5
 synopsis:            Servant CSV content-type for cassava
 -- description:
 homepage:            http://haskell-servant.github.io/
 license:             BSD3
 license-file:        LICENSE
-author:              Julian K. Arni
-maintainer:          jkarni@gmail.com
--- copyright:
+author:              Servant Contributors
+maintainer:          haskell-servant-maintainers@googlegroups.com
+copyright:           2015-2016 Servant Contributors
 -- category:
 build-type:          Simple
--- extra-source-files:
+extra-source-files:  include/*.h
 cabal-version:       >=1.10
 
 library
@@ -22,8 +22,9 @@
   -- other-extensions:
   build-depends:       base >=4.6 && <5
                      , cassava >0.4 && <0.5
-                     , servant == 0.4.*
+                     , servant ==0.5.*
                      , http-media
                      , vector
   hs-source-dirs:      src
   default-language:    Haskell2010
+  include-dirs: include
diff --git a/src/Servant/CSV/Cassava.hs b/src/Servant/CSV/Cassava.hs
--- a/src/Servant/CSV/Cassava.hs
+++ b/src/Servant/CSV/Cassava.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP                   #-}
 {-# LANGUAGE DeriveDataTypeable    #-}
 {-# LANGUAGE DeriveGeneric         #-}
 {-# LANGUAGE FlexibleInstances     #-}
@@ -16,10 +17,13 @@
 -- >>> type EgDefault = Get '[CSV] [(Int, String)]
 module Servant.CSV.Cassava where
 
+#if !MIN_VERSION_base(4,8,0)
+import           Control.Applicative        ((<$>))
+#endif
 import           Data.Csv
 import           Data.Proxy         (Proxy (..))
 import           Data.Typeable      (Typeable)
-import           Data.Vector        (Vector)
+import           Data.Vector        (Vector, toList)
 import           GHC.Generics       (Generic)
 import qualified Network.HTTP.Media as M
 import           Servant.API        (Accept (..), MimeRender (..),
@@ -50,7 +54,19 @@
     mimeRender _ = encodeDefaultOrderedByNameWith (encodeOpts p)
       where p = Proxy :: Proxy opt
 
+-- | Encode with 'encodeByNameWith'. The 'Header' param is used for determining
+-- the order of headers and fields.
+instance ( ToNamedRecord a, EncodeOpts opt
+         ) => MimeRender (CSV', opt) (Header, Vector a) where
+    mimeRender _ (hdr, vals) = encodeByNameWith (encodeOpts p) hdr (toList vals)
+      where p = Proxy :: Proxy opt
 
+-- | Encode with 'encodeDefaultOrderedByNameWith'
+instance ( DefaultOrdered a, ToNamedRecord a, EncodeOpts opt
+         ) => MimeRender (CSV', opt) (Vector a) where
+    mimeRender _ = encodeDefaultOrderedByNameWith (encodeOpts p) . toList
+      where p = Proxy :: Proxy opt
+
 -- ** Encode Options
 
 class EncodeOpts a where
@@ -66,6 +82,17 @@
 -- ** Instances
 
 -- | Decode with 'decodeByNameWith'
+instance ( FromNamedRecord a, DecodeOpts opt
+         ) => MimeUnrender (CSV', opt) (Header, [a]) where
+    mimeUnrender _ bs = fmap toList <$> decodeByNameWith (decodeOpts p) bs
+      where p = Proxy :: Proxy opt
+
+-- | Decode with 'decodeWith'. Assumes data has headers, which are stripped.
+instance ( FromRecord a, DecodeOpts opt
+         ) => MimeUnrender (CSV', opt) [a] where
+    mimeUnrender _ bs = toList <$> decodeWith (decodeOpts p) HasHeader bs
+      where p = Proxy :: Proxy opt
+
 instance ( FromNamedRecord a, DecodeOpts opt
          ) => MimeUnrender (CSV', opt) (Header, Vector a) where
     mimeUnrender _ = decodeByNameWith (decodeOpts p)
