diff --git a/quartz.config.ts b/quartz.config.ts
index f58bc32..58c1d9c 100644
--- a/quartz.config.ts
+++ b/quartz.config.ts
@@ -4,12 +4,7 @@ import * as Plugin from "./quartz/plugins"
 
 const sharedPageComponents = {
   head: Component.Head(),
-  header: [
-    Component.PageTitle(),
-    Component.Spacer(),
-    Component.Search(),
-    Component.Darkmode()
-  ],
+  header: [],
   footer: Component.Footer({
     authorName: "Jacky",
     links: {
@@ -25,11 +20,15 @@ const contentPageLayout: PageLayout = {
     Component.ReadingTime(),
     Component.TagList(),
   ],
-  left: [],
+  left: [
+    Component.PageTitle(),
+    Component.Search(),
+    Component.TableOfContents(),
+    Component.Darkmode()
+  ],
   right: [
     Component.Graph(),
-    Component.TableOfContents(),
-    Component.Backlinks()
+    Component.Backlinks(),
   ],
 }
 
@@ -37,7 +36,11 @@ const listPageLayout: PageLayout = {
   beforeBody: [
     Component.ArticleTitle()
   ],
-  left: [],
+  left: [
+    Component.PageTitle(),
+    Component.Search(),
+    Component.Darkmode()
+  ],
   right: [],
 }
 
@@ -46,6 +49,9 @@ const config: QuartzConfig = {
     pageTitle: "🪴 Quartz 4.0",
     enableSPA: true,
     enablePopovers: true,
+    analytics: {
+      provider: 'plausible',
+    },
     canonicalUrl: "quartz.jzhao.xyz",
     ignorePatterns: ["private", "templates"],
     theme: {
@@ -102,16 +108,16 @@ const config: QuartzConfig = {
         ...contentPageLayout,
         pageBody: Component.Content(),
       }),
-      Plugin.TagPage({
-        ...sharedPageComponents,
-        ...listPageLayout,
-        pageBody: Component.TagContent(),
-      }),
       Plugin.FolderPage({
         ...sharedPageComponents,
         ...listPageLayout,
         pageBody: Component.FolderContent(),
       }),
+      Plugin.TagPage({
+        ...sharedPageComponents,
+        ...listPageLayout,
+        pageBody: Component.TagContent(),
+      }),
       Plugin.ContentIndex({
         enableSiteMap: true,
         enableRSS: true,
diff --git a/quartz/bootstrap-cli.mjs b/quartz/bootstrap-cli.mjs
index 2824f8e..3f71b17 100755
--- a/quartz/bootstrap-cli.mjs
+++ b/quartz/bootstrap-cli.mjs
@@ -64,7 +64,7 @@ yargs(hideBin(process.argv))
       packages: "external",
       plugins: [
         sassPlugin({
-          type: 'css-text'
+          type: 'css-text',
         }),
         {
           name: 'inline-script-loader',
diff --git a/quartz/cfg.ts b/quartz/cfg.ts
index 1c9ece8..49698ab 100644
--- a/quartz/cfg.ts
+++ b/quartz/cfg.ts
@@ -2,12 +2,23 @@ import { QuartzComponent } from "./components/types"
 import { PluginTypes } from "./plugins/types"
 import { Theme } from "./theme"
 
+export type Analytics = null
+  | {
+    provider: 'plausible'
+  }
+  | {
+    provider: 'google',
+    tagId: string
+  }
+
 export interface GlobalConfiguration {
   pageTitle: string,
   /** Whether to enable single-page-app style rendering. this prevents flashes of unstyled content and improves smoothness of Quartz */
   enableSPA: boolean,
   /** Whether to display Wikipedia-style popovers when hovering over links */
   enablePopovers: boolean,
+  /** Analytics mode */
+  analytics: Analytics 
   /** Glob patterns to not search */
   ignorePatterns: string[],
   /** Base URL to use for CNAME files, sitemaps, and RSS feeds that require an absolute URL.
diff --git a/quartz/components/ArticleTitle.tsx b/quartz/components/ArticleTitle.tsx
index c25769e..b8d58c6 100644
--- a/quartz/components/ArticleTitle.tsx
+++ b/quartz/components/ArticleTitle.tsx
@@ -2,9 +2,8 @@ import { QuartzComponentConstructor, QuartzComponentProps } from "./types"
 
 function ArticleTitle({ fileData }: QuartzComponentProps) {
   const title = fileData.frontmatter?.title
-  const displayTitle = fileData.slug === "index" ? undefined : title
-  if (displayTitle) {
-    return 
{displayTitle}
+  if (title) {
+    return {title}
   } else {
     return null
   }
diff --git a/quartz/components/Footer.tsx b/quartz/components/Footer.tsx
index 4229f9d..5fc6d64 100644
--- a/quartz/components/Footer.tsx
+++ b/quartz/components/Footer.tsx
@@ -14,7 +14,7 @@ export default ((opts?: Options) => {
     return <>