diff --git a/apiary-cookie.cabal b/apiary-cookie.cabal
--- a/apiary-cookie.cabal
+++ b/apiary-cookie.cabal
@@ -1,5 +1,5 @@
 name:                apiary-cookie
-version:             0.17.0
+version:             1.0.0
 synopsis:            Cookie support for apiary web framework.
 description:
   example: <https://github.com/philopon/apiary/blob/master/examples/auth.hs>
@@ -19,7 +19,7 @@
 library
   exposed-modules:     Web.Apiary.Cookie
   build-depends:       base               >=4.6  && <4.8
-                     , apiary             >=0.16 && <0.18
+                     , apiary             >=1.0  && <1.1
 
                      , bytestring         >=0.10 && <0.11
                      , cookie             >=0.4  && <0.5
diff --git a/src/Web/Apiary/Cookie.hs b/src/Web/Apiary/Cookie.hs
--- a/src/Web/Apiary/Cookie.hs
+++ b/src/Web/Apiary/Cookie.hs
@@ -6,10 +6,10 @@
 {-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE ImplicitParams #-}
 {-# LANGUAGE ConstraintKinds #-}
+{-# LANGUAGE TypeFamilies #-}
 
 module Web.Apiary.Cookie 
-    ( 
-    -- * setter
+    ( -- * setter
       setCookie
     , deleteCookie
     -- * filter
@@ -25,16 +25,17 @@
 import Web.Cookie (SetCookie(..))
 import qualified Web.Cookie as Cookie
 
-import Control.Monad.Apiary.Filter.Internal
-import Control.Monad.Apiary.Filter.Internal.Strategy
+import Data.Apiary.Param
+import Control.Monad.Apiary.Filter
 
 import Data.Maybe
 import Data.Time
 import Data.Monoid
-import Data.Apiary.Document
+import Data.Apiary.Compat
 import Blaze.ByteString.Builder
 import Text.Blaze.Html
 import qualified Data.ByteString as S
+import qualified Data.ByteString.Char8 as SC
 
 cond :: (a -> Bool) -> (a -> b) -> (a -> b) -> a -> b
 cond p t f a = if p a then t a else f a
@@ -51,13 +52,13 @@
 -- cookie "baz" (pMany (pMaybe pString))  -- get zero or more baz cookies. allows cookie decrypt failure.
 -- cookie "baz" (Proxy :: Proxy (LimitSome [int|100|] ByteString)) -- get raw cookies up to 100 entries.
 -- @
-cookie :: (Strategy w, Query p, Monad actM)
-       => S.ByteString
-       -> w p
-       -> ApiaryT exts (SNext w prms p) actM m ()
+cookie :: (Strategy w, Monad actM, NotMember k prms, KnownSymbol k)
+       => proxy k
+       -> w S.ByteString
+       -> ApiaryT exts (SNext w k S.ByteString prms) actM m ()
        -> ApiaryT exts prms actM m ()
-cookie k p = function (DocPrecondition $ toHtml (show k) <> " cookie required") $ \l r ->
-    readStrategy (readQuery . Just) ((k ==) . fst) p (cookie' r) l
+cookie k p = function (DocPrecondition $ toHtml (symbolVal k) <> " cookie required") $ \l r ->
+    strategy p k (map (Just . snd) . filter ((SC.pack (symbolVal k) ==) . fst) $ cookie' r) l
 
 cookie' :: Request -> [(S.ByteString, S.ByteString)]
 cookie' = 
@@ -66,13 +67,13 @@
     requestHeaders
 
 -- | delete cookie. since 0.6.1.0.
-deleteCookie :: Monad m => S.ByteString -> ActionT exts m ()
+deleteCookie :: Monad m => S.ByteString -> ActionT exts prms m ()
 deleteCookie k = setCookie def { setCookieName    = k 
                                , setCookieExpires = Just $ UTCTime (ModifiedJulianDay 0) 0
                                , setCookieMaxAge  = Just 0
                                }
 
 -- | set raw cookie header.
-setCookie :: Monad m => SetCookie -> ActionT exts m ()
+setCookie :: Monad m => SetCookie -> ActionT exts prms m ()
 setCookie =
     addHeader "set-cookie" . toByteString . Cookie.renderSetCookie
