diff --git a/src/app.lisp b/src/app.lisp
index aa59dc6..ad8cdb7 100644
--- a/src/app.lisp
+++ b/src/app.lisp
@@ -1,10 +1,6 @@
 (defpackage #:website/app
-  (:use #:cl)
-  (:import-from #:jingle
-                #:make-app
-                #:install-middleware
-                #:static-path
-                #:configure)
+  (:use #:cl
+        #:jingle)
   (:import-from #:ningle-fbr
                 #:set-routes)
   (:import-from #:lack-mw
diff --git a/src/components/header.lisp b/src/components/header.lisp
index 97da0cd..9a65038 100644
--- a/src/components/header.lisp
+++ b/src/components/header.lisp
@@ -1,8 +1,7 @@
 (defpackage #:website/components/header
   (:use #:cl
-        #:hsx)
-  (:import-from #:jingle
-                #:request-uri)
+        #:hsx
+        #:jingle)
   (:export #:~header))
 (in-package #:website/components/header)
 
diff --git a/src/components/metadata.lisp b/src/components/metadata.lisp
index f95e873..63bbbd9 100644
--- a/src/components/metadata.lisp
+++ b/src/components/metadata.lisp
@@ -1,8 +1,7 @@
 (defpackage #:website/components/metadata
   (:use #:cl
-        #:hsx)
-  (:import-from #:jingle
-                #:request-uri)
+        #:hsx
+        #:jingle)
   (:import-from #:website/lib/env
                 #:website-url)
   (:export #:~metadata))
diff --git a/src/renderer.lisp b/src/renderer.lisp
index 987e99b..c153a49 100644
--- a/src/renderer.lisp
+++ b/src/renderer.lisp
@@ -1,9 +1,7 @@
 (defpackage #:website/renderer
   (:use #:cl
         #:hsx
-        #:trivia)
-  (:import-from #:jingle
-                #:set-response-header)
+        #:jingle)
   (:import-from #:hsx/element
                 #:element)
   (:import-from #:website/lib/env
@@ -21,18 +19,14 @@
   (set-response-header :cache-control (if (string= (website-env) "dev")
                                           "private, no-store"
                                           "public, max-age=60"))
-  (match result
-    ((guard (or (list body metadata)
-                body)
-            (typep body 'element))
-     (call-next-method app
-                       (hsx:render-to-string
-                        (hsx (html :lang "ja"
-                               (head
-                                 (~metadata :metadata metadata)
-                                 (~scripts))
-                               (body
-                                 :hx-ext "head-support, response-targets, preload, alpine-morph"
-                                 :hx-boost "true" :hx-target-404 "body" :hx-target-5* "body"
-                                 (~layout body)))))))
-    (_ (error "Invalid response form"))))
+  
+  (call-next-method app
+                    (hsx:render-to-string
+                     (hsx (html :lang "ja"
+                            (head
+                              (~metadata :metadata (context :metadata))
+                              (~scripts))
+                            (body
+                              :hx-ext "head-support, response-targets"
+                              :hx-boost "true" :hx-target-404 "body" :hx-target-5* "body"
+                              (~layout result)))))))
diff --git a/src/routes/about.lisp b/src/routes/about.lisp
index 933d554..6a59580 100644
--- a/src/routes/about.lisp
+++ b/src/routes/about.lisp
@@ -1,6 +1,7 @@
 (defpackage #:website/routes/about
   (:use #:cl
-        #:hsx)
+        #:hsx
+        #:jingle)
   (:import-from #:website/lib/cms
                 #:get-about)
   (:import-from #:website/lib/time
@@ -18,4 +19,5 @@
 
 (defun handle-get (params)
   (declare (ignore params))
-  (list (~page) *metadata*))
+  (setf (context :metadata) *metadata*)
+  (~page))
diff --git a/src/routes/blog.lisp b/src/routes/blog.lisp
index 94b33ca..c96bc3a 100644
--- a/src/routes/blog.lisp
+++ b/src/routes/blog.lisp
@@ -1,6 +1,7 @@
 (defpackage #:website/routes/blog
   (:use #:cl
-        #:hsx)
+        #:hsx
+        #:jingle)
   (:export #:handle-get))
 (in-package :website/routes/blog)
 
@@ -13,4 +14,5 @@
 
 (defun handle-get (params)
   (declare (ignore params))
-  (list (~page) *metadata*))
+  (setf (context :metadata) *metadata*)
+  (~page))
diff --git a/src/routes/not-found.lisp b/src/routes/not-found.lisp
index e71fb4d..9e8db35 100644
--- a/src/routes/not-found.lisp
+++ b/src/routes/not-found.lisp
@@ -1,6 +1,7 @@
 (defpackage #:website/routes/not-found
   (:use #:cl
-        #:hsx)
+        #:hsx
+        #:jingle)
   (:export #:handle-not-found))
 (in-package #:website/routes/not-found)
 
@@ -18,4 +19,5 @@
        "Back to TOP"))))
 
 (defun handle-not-found ()
-  (list (~page) *metadata*))
+  (setf (context :metadata) *metadata*)
+  (~page))
diff --git a/src/routes/work.lisp b/src/routes/work.lisp
index a2744dd..94e5453 100644
--- a/src/routes/work.lisp
+++ b/src/routes/work.lisp
@@ -1,6 +1,7 @@
 (defpackage #:website/routes/work
   (:use #:cl
-        #:hsx)
+        #:hsx
+        #:jingle)
   (:import-from #:website/lib/cms
                 #:get-work)
   (:import-from #:website/lib/time
@@ -18,4 +19,5 @@
 
 (defun handle-get (params)
   (declare (ignore params))
-  (list (~page) *metadata*))
+  (setf (context :metadata) *metadata*)
+  (~page))