diff --git a/layouts/_default/index.rss.xml b/layouts/_default/index.rss.xml
new file mode 100644
index 0000000..7e84c40
--- /dev/null
+++ b/layouts/_default/index.rss.xml
@@ -0,0 +1,47 @@
+{{- $pctx := . -}}
+{{- if .IsHome -}}{{ $pctx = .Site }}{{- end -}}
+{{- $pages := slice -}}
+{{- if or $.IsHome $.IsSection -}}
+{{- $pages = $pctx.RegularPages -}}
+{{- else -}}
+{{- $pages = $pctx.Pages -}}
+{{- end -}}
+{{- $limit := .Site.Config.Services.RSS.Limit -}}
+{{- if ge $limit 1 -}}
+{{- $pages = $pages | first $limit -}}
+{{- end -}}
+{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
+  <channel>
+    <title>{{ if eq  .Title  .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
+    <link>{{ .Permalink }}</link>
+    <description>Recent newsletters {{ if ne  .Title  .Site.Title }}{{ with .Title }}of {{.}} {{ end }}{{ end }}at {{ .Site.Title }}</description>
+    <generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
+    <language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
+    <managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
+    <webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
+    <copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
+    <lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
+    {{- with .OutputFormats.Get "RSS" -}}
+    {{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
+    {{- end -}}
+    {{ range $pages }}
+    <item>
+      <title>{{ .Title }}</title>
+      <link>{{ .Permalink }}</link>
+      <pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
+      {{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
+      <guid>{{ .Permalink }}</guid>
+      <description>{{ .Content | safeHTML }}</description>
+      {{ range ( where .Site.RegularPages ".RelPermalink" .RelPermalink | first 1 ) }}
+        {{- $images := .Resources.ByType "image" -}}
+        {{- $featured := $images.GetMatch "*feature*" -}}
+        {{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
+        {{- with $featured -}}
+        <media:content xmlns:media="http://search.yahoo.com/mrss/" url="{{ $featured.Permalink  }}" />
+        {{- end -}}
+      {{ end }}
+    </item>
+    {{ end }}
+  </channel>
+</rss>
diff --git a/layouts/partials/article-meta/basic.html b/layouts/partials/article-meta/basic.html
new file mode 100644
index 0000000..0cd6229
--- /dev/null
+++ b/layouts/partials/article-meta/basic.html
@@ -0,0 +1,93 @@
+{{/* Determine the correct context and scope */}}
+{{/* This allows for different logic depending on where the partial is called */}}
+{{ $context := . }}
+{{ $scope := default nil }}
+
+{{ if (reflect.IsMap . ) }}
+{{ $context = .context }}
+{{ $scope = cond (not .scope) nil .scope }}
+{{ end }}
+
+{{ with $context }}
+{{ $meta := newScratch }}
+
+{{/* Gather partials for this context */}}
+{{ if .Params.showDate | default (.Site.Params.article.showDate | default true) }}
+{{ $meta.Add "partials" (slice (partial "meta/date.html" .Date)) }}
+{{ end }}
+
+{{ if and (.Params.showDateUpdated | default (.Site.Params.article.showDateUpdated | default false)) (ne (partial
+"functions/date.html" .Date) (partial "functions/date.html" .Lastmod)) }}
+{{ $meta.Add "partials" (slice (partial "meta/date-updated.html" .Lastmod)) }}
+{{ end }}
+
+{{ if and (.Params.showWordCount | default (.Site.Params.article.showWordCount | default false)) (ne .WordCount 0) }}
+{{ $meta.Add "partials" (slice (partial "meta/word-count.html" .)) }}
+{{ end }}
+
+{{ if and (.Params.showReadingTime | default (.Site.Params.article.showReadingTime | default true)) (ne .ReadingTime 0)
+}}
+{{ $meta.Add "partials" (slice (partial "meta/reading-time.html" .)) }}
+{{ end }}
+
+{{ if and (not .Params.externalURL) (.Params.showViews | default (.Site.Params.article.showViews | default false)) }}
+{{ $meta.Add "partials" (slice (partial "meta/views.html" .)) }}
+{{ end }}
+
+{{ if and (not .Params.externalURL) (.Params.showLikes | default (.Site.Params.article.showLikes | default false)) }}
+{{ $meta.Add "partials" (slice (partial "meta/likes.html" .)) }}
+{{ end }}
+
+{{ if and (eq $scope "single") (not .Params.externalURL) (.Params.showLikes | default (.Site.Params.article.showLikes | default false)) }}
+{{ $meta.Add "partials" (slice (partial "meta/likes_button.html" .)) }}
+{{ end }}
+
+{{ if and (eq $scope "single") (.Params.showEdit | default (.Site.Params.article.showEdit | default false)) }}
+{{ $meta.Add "partials" (slice (partial "meta/edit.html" .)) }}
+{{ end }}
+
+
+<div class="flex flex-row flex-wrap items-center">
+  {{/* Output partials */}}
+  {{ with ($meta.Get "partials") }}
+  {{ delimit . "<span class=\"px-2 text-primary-500\">&middot;</span>" }}
+  {{ end }}
+
+  {{/* Output draft label */}}
+  {{ if and (eq $scope "single") (and .Draft .Site.Params.article.showDraftLabel) }}
+  <span class="pl-2">{{ partial "badge.html" (i18n "article.draft" | emojify) }}</span>
+  {{ end }}
+</div>
+
+{{ if .Params.showAuthorsBadges | default (.Site.Params.article.showAuthorsBadges | default false) }}
+<div class="flex flex-row flex-wrap items-center">
+  {{ range $taxonomy, $terms := .Site.Taxonomies }}
+  {{ if (eq $taxonomy "authors")}}
+  {{ if (gt (len ($context.GetTerms $taxonomy)) 0) }}
+  {{ range $i, $a := $context.GetTerms $taxonomy }}
+    {{ if not (eq $i 0) }} ,&nbsp; {{ end }} <div style="cursor: pointer;" onclick="window.open({{ $a.RelPermalink }},'_self')">{{ $a.LinkTitle }}</div>
+  {{ end }}
+  {{ end }}
+  {{ end }}
+  {{ end }}
+</div>
+{{ end }}
+
+{{/* Output taxonomies */}}
+{{ if .Params.showTaxonomies | default (.Site.Params.article.showTaxonomies | default false) }}
+<div class="flex flex-row flex-wrap items-center">
+  {{ range $taxonomy, $terms := .Site.Taxonomies }}
+  {{ if and (not (eq $taxonomy "authors")) (not (eq $taxonomy "series"))}}
+  {{ if (gt (len ($context.GetTerms $taxonomy)) 0) }}
+  {{ range $context.GetTerms $taxonomy }}
+  <span style="margin-top:0.5rem" class="mr-2" onclick="window.open({{ .RelPermalink }},'_self');">
+    {{ partial "badge.html" .LinkTitle }}
+  </span>
+  {{ end }}
+  {{ end }}
+  {{ end }}
+  {{ end }}
+</div>
+{{ end }}
+
+{{ end }}
diff --git a/layouts/partials/author-extra.html b/layouts/partials/author-extra.html
new file mode 100644
index 0000000..8f8cf04
--- /dev/null
+++ b/layouts/partials/author-extra.html
@@ -0,0 +1,34 @@
+<div class="flex mt-4">
+  {{ with .data.image }}
+  {{ $authorImage := resources.Get . }}
+  {{ if $authorImage }}
+  {{ $authorImage := $authorImage.Fill "192x192" }}
+  <img class="!mt-0 !mb-0 h-24 w-24 rounded-full ltr:mr-4 rtl:ml-4" width="96" height="96"
+    src="{{ $authorImage.RelPermalink }}" />
+  {{ end }}
+  {{ end }}
+  <div class="place-self-center">
+      {{ $link := .link}}
+      {{ with .data.name | markdownify | emojify }}
+    <div class="text-[0.6rem] uppercase leading-3 text-neutral-500 dark:text-neutral-400">
+      {{ i18n "author.byline_title" | markdownify | emojify }}
+    </div>
+    <a {{ if $link }} href="{{ $link }}" {{ end }} class="font-semibold leading-6 text-neutral-800 dark:text-neutral-300">
+      {{ . }}
+    </a>
+    {{ end }}
+    {{ with .data.bio | markdownify | emojify }}
+    <div class="text-sm text-neutral-700 dark:text-neutral-400">{{ . }}</div>
+    {{ end }}
+    <div class="text-2xl sm:text-lg">
+      <div class="flex flex-wrap text-neutral-400 dark:text-neutral-500">
+        {{ range .data.social }}
+        {{ range $name, $link := . }}
+        <a class="px-1 hover:text-primary-700 dark:hover:text-primary-400" href="{{ $link }}" target="_blank"
+          aria-label="{{ $name | title }}" rel="me noopener noreferrer"><span class="inline-block align-text-bottom">{{ partial "icon.html" $name }}</span></a>
+        {{ end }}
+        {{ end }}
+      </div>
+    </div>
+  </div>
+</div>
diff --git a/layouts/partials/functions/warnings.html b/layouts/partials/functions/warnings.html
new file mode 100644
index 0000000..7f7fc01
--- /dev/null
+++ b/layouts/partials/functions/warnings.html
@@ -0,0 +1,6 @@
+<!-- {{ if ne .Site.Params.showAppearanceSwitcher nil }}
+     {{ warnf "[BLOWFISH] Theme parameter `showAppearanceSwitcher` has been renamed to `footer.showAppearanceSwitcher`. Please update your site configuration." }}
+     {{ end }}
+     {{ if ne .Site.Params.showScrollToTop nil }}
+     {{ warnf "[BLOWFISH] Theme parameter `showScrollToTop` has been renamed to `footer.showScrollToTop`. Please update your site configuration." }}
+     {{ end }} -->