diff --git a/src/lib/cache.lisp b/src/lib/cache.lisp
new file mode 100644
index 0000000..6e8393e
--- /dev/null
+++ b/src/lib/cache.lisp
@@ -0,0 +1,15 @@
+(defpackage #:website/lib/cache
+  (:use #:cl)
+  (:import-from #:function-cache
+                #:defcached
+                #:clear-cache)
+  (:export #:memorize
+           #:clear-cache))
+(in-package #:website/lib/cache)
+
+(defmacro memorize (name)
+  (let ((origin (gensym)))
+    `(progn
+       (setf (fdefinition ',origin) (fdefinition ',name))
+       (defcached ,name (&rest args)
+         (apply #',origin args)))))
diff --git a/src/lib/cms.lisp b/src/lib/cms.lisp
index f374ad9..317a095 100644
--- a/src/lib/cms.lisp
+++ b/src/lib/cms.lisp
@@ -3,11 +3,11 @@
   (:import-from #:microcms
                 #:define-list-client
                 #:define-object-client)
-  (:import-from #:function-cache
-                #:defcached)
   (:import-from #:website/lib/env
                 #:microcms-service-domain
                 #:microcms-api-key)
+  (:import-from #:website/lib/cache
+                #:memorize)
   (:export #:get-about
            #:get-works
            #:get-blog-list
@@ -17,13 +17,6 @@
 (setf microcms:*service-domain* (microcms-service-domain))
 (setf microcms:*api-key* (microcms-api-key))
 
-(defmacro memorize (name)
-  (let ((origin (gensym)))
-    `(progn
-       (setf (fdefinition ',origin) (fdefinition ',name))
-       (defcached ,name (&key query)
-         (,origin :query query)))))
-
 (define-object-client about)
 (memorize get-about)
 
diff --git a/src/routes/api/revalidate.lisp b/src/routes/api/revalidate.lisp
index 03d4a4b..d0d1491 100644
--- a/src/routes/api/revalidate.lisp
+++ b/src/routes/api/revalidate.lisp
@@ -1,8 +1,6 @@
 (defpackage #:website/routes/api/revalidate
   (:use #:cl
         #:jingle)
-  (:import-from #:function-cache
-                #:clear-cache)
   (:import-from #:website/lib/env
                 #:microcms-webhook-key)
   (:import-from #:website/helper
@@ -10,6 +8,8 @@
   (:import-from #:website/lib/cms
                 #:get-about
                 #:get-works)
+  (:import-from #:website/lib/cache
+                #:clear-cache)
   (:export #:handle-post))
 (in-package #:website/routes/api/revalidate)