diff --git a/Dockerfile b/Dockerfile
index faa5f8f..8f8df9d 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,24 +1,19 @@
 FROM fukamachi/qlot
 
-ARG TW_VERSION=4.1.3
-ARG TW_BIN=./bin/tailwindcss
-
 WORKDIR /app
 COPY . /app
 
 RUN apt-get update && apt-get install -y --no-install-recommends build-essential curl libev-dev
 
 RUN mkdir -p ./bin \
-  && curl -sLO https://github.com/tailwindlabs/tailwindcss/releases/download/v${TW_VERSION}/tailwindcss-linux-x64 \
+  && curl -sLO https://github.com/tailwindlabs/tailwindcss/releases/latest/download/tailwindcss-linux-x64 \
   && chmod +x tailwindcss-linux-x64 \
-  && mv tailwindcss-linux-x64 ${TW_BIN}
+  && mv tailwindcss-linux-x64 ./bin/tailwindcss
 
-RUN ${TW_BIN} -i ./static/style/global.css -o ./static/style/dist.css --minify
+RUN ./bin/tailwindcss -i ./static/style/global.css -o ./static/style/dist.css --minify
 
-RUN qlot install --quiet --no-color
-
-RUN chmod +x /entrypoint.sh
+RUN qlot install --quiet
 
 EXPOSE 3000
 
-ENTRYPOINT ["/entrypoint.sh"]
+ENTRYPOINT [".qlot/bin/clackup", "--system", "hp", "--server", "woo", "--address", "0.0.0.0", "--port", "3000", "src/app.lisp"]
diff --git a/entrypoint.sh b/entrypoint.sh
deleted file mode 100644
index 8361b19..0000000
--- a/entrypoint.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash
-set -e
-
-if [[ -n "$CLOUDFLARE_ZONE_ID" && -n "$CLOUDFLARE_API_KEY" ]]; then
-  echo "Purging Cloudflare cache..."
-  curl -s -X POST "https://api.cloudflare.com/client/v4/zones/${CLOUDFLARE_ZONE_ID}/purge_cache" \
-    -H "Content-Type: application/json" \
-    -H "Authorization: Bearer ${CLOUDFLARE_API_KEY}" \
-    -d '{ "hosts": ["skyizwhite.dev"] }'
-else
-  echo "Cloudflare credentials not provided. Skipping cache purge."
-fi
-
-echo "Starting server..."
-exec .qlot/bin/clackup --system hp --server woo --address 0.0.0.0 --port 3000 src/app.lisp
diff --git a/src/renderer.lisp b/src/renderer.lisp
index 87149f4..a6d826a 100644
--- a/src/renderer.lisp
+++ b/src/renderer.lisp
@@ -13,28 +13,17 @@
                 #:~layout))
 (in-package #:hp/renderer)
 
-(defun set-cache-control (strategy)
-  (set-response-header :cache-control
-                       (if (string= (hp-env) "dev")
-                           "private, no-store"
-                           (cond 
-                             ((eq strategy :static)
-                              "public, max-age=60, s-maxage=31536000")
-                             ((eq strategy :dynamic)
-                              "public, max-age=60 s-maxage=300, stale-while-revalidate=86400, stale-if-error=86400")
-                             (t
-                              "private, no-store")))))
-
 (defmethod jingle:process-response ((app jingle:app) result)
   (set-response-header :content-type "text/html; charset=utf-8")
+  (set-response-header :cache-control (if (string= (hp-env) "dev")
+                                          "private, no-store"
+                                          "public, max-age=60 s-maxage=300, stale-while-revalidate=86400, stale-if-error=86400"))
   (call-next-method app
                     (hsx:render-to-string
                      (match result
-                       ((plist :body body
-                               :metadata metadata
-                               :cache cache)
-                        (progn
-                          (set-cache-control cache)
-                          (~layout :metadata metadata
-                            body)))
+                       ((guard (or (list page metadata)
+                                   page)
+                               (typep page 'element))
+                        (~layout :metadata metadata
+                          page))
                        (_ (error "Invalid response form"))))))
diff --git a/src/routes/bio.lisp b/src/routes/bio.lisp
index e12e000..5002a65 100644
--- a/src/routes/bio.lisp
+++ b/src/routes/bio.lisp
@@ -15,6 +15,4 @@
 
 (defun handle-get (params)
   (declare (ignore params))
-  (list :body (~page)
-        :metadata *metadata*
-        :cache :dynamic))
+  (list (~page) *metadata*))
diff --git a/src/routes/blog.lisp b/src/routes/blog.lisp
index 173a2ed..5760d3e 100644
--- a/src/routes/blog.lisp
+++ b/src/routes/blog.lisp
@@ -15,6 +15,4 @@
 
 (defun handle-get (params)
   (declare (ignore params))
-  (list :body (~page)
-        :metadata *metadata*
-        :cache :dynamic))
+  (list (~page) *metadata*))
diff --git a/src/routes/index.lisp b/src/routes/index.lisp
index 683ccc1..2c71a43 100644
--- a/src/routes/index.lisp
+++ b/src/routes/index.lisp
@@ -28,5 +28,4 @@
 
 (defun handle-get (params)
   (declare (ignore params))
-  (list :body (~page)
-        :cache :static))
+  (~page))
diff --git a/src/routes/not-found.lisp b/src/routes/not-found.lisp
index 34c3e21..b05f179 100644
--- a/src/routes/not-found.lisp
+++ b/src/routes/not-found.lisp
@@ -18,6 +18,4 @@
        "Back to TOP"))))
 
 (defun handle-not-found ()
-  (list :body (~page)
-        :metadata *metadata*
-        :cache :dynamic))
+  (list (~page) *metadata*))
diff --git a/src/routes/work.lisp b/src/routes/work.lisp
index 9345a53..b538b06 100644
--- a/src/routes/work.lisp
+++ b/src/routes/work.lisp
@@ -15,6 +15,4 @@
 
 (defun handle-get (params)
   (declare (ignore params))
-  (list :body (~page)
-        :metadata *metadata*
-        :cache :dynamic))
+  (list (~page) *metadata*))