diff --git a/content/dezentrale.md b/content/dezentrale.md
index 1522e4e..1523411 100644
--- a/content/dezentrale.md
+++ b/content/dezentrale.md
@@ -12,137 +12,106 @@ showmetalinks: false
{{< full_logo >}}
-
-
-
Hardware
-
+{{< page_row >}}
+{{< page_col centered >}}
+
+## Hardware
+
Hardware kann repariert, zerlegt und wieder neu zusammen gesetzt werden.
Der Drucker muss kein Bürogerät bleiben, ein alter Bildschirm
kann Kunst werden.
-
-
-
-
Netzpolitik
-
+
+{{< /page_col >}}
+{{< page_col centered >}}
+
+## Netzpolitik
+
Die Auswirkungen der Digitalisierung auf die Gesellschaft werden immer
Umfassender. Eine kritische Auseinandersetzung mit den Potenzialen und Gefahren
der sich ausbildenden Informationsgesellschaft ist notwendig.
-
-
-
+{{< /page_col >}}
+{{< page_col centered >}}
+
+## Soziales
-
-
-
Soziales
-
Zusammen etwas zu verwirklichen ist eine gute Sache. Sich auszutauschen und
voneinander zu lernen bringt am Ende alle weiter, und sogar Minecraft macht
gemeinsam mehr Spaß.
-
-
-
-
Software
-
+
+{{< /page_col >}}
+{{< page_col centered >}}
+
+## Software
+
Wenn die Programme unser Umfeld strukturieren, sollten wir diejenigen sein,
die sie schreiben.
-
-
-
+{{< /page_col >}}
+{{< page_col centered >}}
-
+## Projekte
+[{{< value "links" "ffle_name" >}}]({{< value "links" "ffle_href" >}})
+\
+[{{< value "links" "hw4f_name" >}}]({{< value "links" "hw4f_href" >}})
+\
+[{{< value "links" "techniksprechstunde_name" >}}]({{< value "links" "techniksprechstunde_href" >}})
-
+{{< /page_col >}}
+{{< page_col centered >}}
+## Dokumente
-
+[Satzung](/docs/dezentrale-satzung.pdf)
+\
+[Geschäftsordnung](/docs/dezentrale-geschaeftsordnung.pdf)
+\
+[Hygienekonzept](/docs/dezentrale-hygienekonzept.pdf)
+{{< /page_col >}}
+{{< page_col centered >}}
-
+]({{< value "address" "osm_href" >}})
-
-
+{{< /page_col >}}
+{{< /page_row >}}
diff --git a/layouts/shortcodes/page_col.html b/layouts/shortcodes/page_col.html
new file mode 100644
index 0000000..b58126e
--- /dev/null
+++ b/layouts/shortcodes/page_col.html
@@ -0,0 +1,8 @@
+{{- $content := .Inner }}
+{{- if not $content }}
+{{- errorf "missing content for column: %s" .Position }}
+{{- end }}
+{{- $centered := cond (default true (.Get "centered")) " centered" "" }}
+
+{{ markdownify $content }}
+
diff --git a/layouts/shortcodes/page_row.html b/layouts/shortcodes/page_row.html
new file mode 100644
index 0000000..271f971
--- /dev/null
+++ b/layouts/shortcodes/page_row.html
@@ -0,0 +1,7 @@
+{{- $content := .Inner }}
+{{- if not $content }}
+{{- errorf "missing content for row: %s" .Position }}
+{{- end }}
+
+{{ markdownify $content }}
+