diff --git a/_config.yml b/_config.yml
index d3a58c0..f218fb8 100644
--- a/_config.yml
+++ b/_config.yml
@@ -41,6 +41,9 @@ collections:
   music:
     output: true
     permalink: /music/:title
+  software:
+    output: true
+    permalink: /software/:title
 
 # Force-include some files
 include:
diff --git a/content/3dprint/_index.md b/content/3dprint/_index.md
deleted file mode 100644
index c409d88..0000000
--- a/content/3dprint/_index.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: 3D Printing
----
-
-You know how people tell you not to come up with solutions in search of a problem?
-
-Well, I completely throw that advice out the window when I can get my hands on a 3D printer. It's just too much fun to design and print random little things.
-
-This page is dedicated to sharing my designs in case they some-day help someone else.
-
-## My Designs
-
-- Cable Organizers
-  - [Cable organizing clips for VIVO monitor arms](/3dprint/vivo-monitor-arm-clips/)
-  - [Cable organizing clips for Neewer microphone arms](/3dprint/neewer-mic-arm-clips/)
-- Misc
-  - [KALLAX headphone holder](/3dprint/kallax-headphone-holder/)
\ No newline at end of file
diff --git a/content/games/minecraft/_index.md b/content/games/minecraft/_index.md
deleted file mode 100644
index 5909985..0000000
--- a/content/games/minecraft/_index.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: Minecraft
----
-
-Minecraft is one of my all-time favourite video games. I've been playing since the 1.2.x days, enjoying my fair share of creative redstone tinkering, lightly modded servers *(RIP MCCTF)*, and multiplayer survival shenanigans with friends.
-
-## My Mods & Plugins
-
-I like modifying Minecraft almost as much as I enjoy playing it. The following are some of my more-recent mods:
-
-- [Client Ping](@/games/minecraft/mods/client-ping.md): Client-side Point-of-Interest marking
-- [Illuminated Shields](@/games/minecraft/resource-packs/illuminated-shields.md): Shields that emit light
-- [FrostBucket](@/games/minecraft/mods/frost-bucket.md): Apply `Frost Walker` to your buckets
-
-I also maintain a modpack that contains everything I consider "must-have" when playing. Any time I'm playing Minecraft, it can be assumed that I'm using my trusty quality-of-life pack. 
-
-Want to try my take on the game? Check out [my personal modpack](/games/minecraft/modpack) (also available for download in your favorite Modrinth-compatible Minecraft launcher).
\ No newline at end of file
diff --git a/content/games/minecraft/modpack.md b/content/games/minecraft/modpack.md
deleted file mode 100644
index adff8da..0000000
--- a/content/games/minecraft/modpack.md
+++ /dev/null
@@ -1,90 +0,0 @@
----
-title: Evan's Minecraft Modpack
----
-
-For the past handful of years, I've been maintaining a personal collection of Minecraft mods that improve upon base gameplay and optimize the game's internals.
-
-## Installation
-
-This modpack is distributed in `.mrpack` format. To use it, you'll need to install the [**Prism Launcher**](https://prismlauncher.org/).
-
-Once installed:
-
-1. Head to **Add Instance** in the top-left corner of the application
-2. Select **Import**
-3. Choose one of the files from the *Releases* section below
-
-## Releases
-
-{% note(type="note") %}
-Unless you really know what you are doing, pick the <strong>latest version</strong>.
-<br>
-All modpack versions can play on <em>any</em> server version.
-{% end %}
-
-<div style="padding:0 1em; border: 1px solid #d7dde3; border-radius: 5px;margin-bottom: 1em; background-color: #f0feff;">
-<h3>Minecraft Java Edition 1.21.1</h3>
-
-- [Evan's Pack **1.21.1r1**](https://ewpratten.com/download/minecraft-modpack/1.21.1r1) ***(latest)***
-
-</div>
-
-<details style="margin-bottom: 1em;"><summary><h3>Older Versions</h3></summary>
-<div style="padding: 1em; padding-bottom: 0;">
-
-These older modpack versions are provided if you are looking to run a specific version of Minecraft.
-
-Remember: **all modpack versions can play on any server version**. You do not need to match the modpack version with the server version like you would with a vanilla client.
-
-### Minecraft Java Edition 1.20.5
-
-- [Evan's Pack **1.20.6r1**](https://ewpratten.com/download/minecraft-modpack/1.20.6r1)
-
-### Minecraft Java Edition 1.20.4
-
-- [Evan's Pack **1.20.4r4**](https://ewpratten.com/download/minecraft-modpack/1.20.4r4)
-- [Evan's Pack **1.20.4r3**](https://ewpratten.com/download/minecraft-modpack/1.20.4r3)
-- [Evan's Pack **1.20.4r2**](https://ewpratten.com/download/minecraft-modpack/1.20.4r2)
-- [Evan's Pack **1.20.4r1**](https://ewpratten.com/download/minecraft-modpack/1.20.4r1)
-
-### Minecraft Java Edition 1.20.1
-
-- [Evan's Pack **1.20.1r4**](https://ewpratten.com/download/minecraft-modpack/1.20.1r4)
-- [Evan's Pack **1.20.1r3**](https://ewpratten.com/download/minecraft-modpack/1.20.1r3)
-- [Evan's Pack **1.20.1r2**](https://ewpratten.com/download/minecraft-modpack/1.20.1r2)
-- [Evan's Pack **1.20.1r1**](https://ewpratten.com/download/minecraft-modpack/1.20.1r1)
-
-### Minecraft Java Edition 1.20
-
-- [Evan's Pack **1.20.0r1**](https://ewpratten.com/download/minecraft-modpack/1.20.0r1) *(unstable)*
-
-### Minecraft Java Edition 1.19.4
-
-- [Evan's Pack **1.19.4r5**](https://ewpratten.com/download/minecraft-modpack/1.19.4r5)
-- [Evan's Pack **1.19.4r4**](https://ewpratten.com/download/minecraft-modpack/1.19.4r4)
-- [Evan's Pack **1.19.4r3**](https://ewpratten.com/download/minecraft-modpack/1.19.4r3)
-- [Evan's Pack **1.19.4r2**](https://ewpratten.com/download/minecraft-modpack/1.19.4r2)
-- [Evan's Pack **1.19.4r1**](https://ewpratten.com/download/minecraft-modpack/1.19.4r1)
-
-### Minecraft Java Edition 1.19.2
-
-- [Evan's Pack **1.19.2r1**](https://ewpratten.com/download/minecraft-modpack/1.19.2r1)
-
-### Minecraft Java Edition 1.19
-
-- [Evan's Pack **1.19.0r1**](https://ewpratten.com/download/minecraft-modpack/1.19.0r1)
-
-### Minecraft Java Edition 1.18.2
-
-- [Evan's Pack **1.18.2r1**](https://ewpratten.com/download/minecraft-modpack/1.18.2r1)
-
-### Minecraft Java Edition 1.18
-
-- [Evan's Pack **1.18.0r1**](https://ewpratten.com/download/minecraft-modpack/1.18.0r1)
-
-### Minecraft Java Edition 1.16.4
-
-- [Evan's Pack **1.16.4r1**](https://ewpratten.com/download/minecraft-modpack/1.16.4r1)
-
-</div>
-</details>
diff --git a/content/music/_index.md b/content/music/_index.md
deleted file mode 100644
index 6ada278..0000000
--- a/content/music/_index.md
+++ /dev/null
@@ -1,64 +0,0 @@
----
-title: My Music
-extra:
-    css_import:
-        - https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css
----
-
-I have been a musician for most of my life, starting with the piano when I was 5, and progressing to drums and double bass a few years later.
-
-I was originally in to (and performed) rock music, but found myself moving towards heavier metal, and eventually electronic dance music. Alongside this progression, I was also a part of an orchestra and a choir for a few years. Now, I find myself doing everything electronically.
-
-## Releases
-
-<div style="display: flex; justify-content: space-between; flex-wrap: wrap;">
-<a href="/music/spring-tracks" style="margin: 1em;"><img alt="Spring Tracks."       src="/assets/music/spring-tracks/cover.jpg" style="max-width: 350px"></a>
-<a href="/music/channels"      style="margin: 1em;"><img alt="Channels"             src="/assets/music/channels/cover.jpg"      style="max-width: 350px"></a>
-<a href="/music/summer-tracks" style="margin: 1em;"><img alt="Summer Tracks."       src="/assets/music/summer-tracks/cover.jpg" style="max-width: 350px"></a>
-<a href="/music/space-time-v1" style="margin: 1em;"><img alt="Space & Time, Vol. 1" src="/assets/music/space-time-v1/cover.jpg" style="max-width: 350px"></a>
-<a href="/music/scale-hop"     style="margin: 1em;"><img alt="Scale Hop"            src="/assets/music/scale-hop/cover.jpg"     style="max-width: 350px"></a>
-<a href="/music/radioactive"   style="margin: 1em;"><img alt="Radioactive"          src="/assets/music/radioactive/cover.jpg"   style="max-width: 350px"></a>
-</div>
-<br>
-
-Looking for more? I also spent a few years producing music as a member of [RetryLife](https://retrylife.ca).
-
-<!-- ## Self-released music
-
-Since 2022 I have been publishing personal music projects of all kinds under my own name.
-
-| Title                                            | Type   | Year | Featured Artists                    |
-|:-------------------------------------------------|:-------|:-----|:------------------------------------|
-| [**Spring Tracks**](/music/spring-tracks)        | Single | 2023 | Warren Pratten, Emilia Frias        |
-| [**Channels**](/music/channels)                  | Single | 2022 |                                     |
-| [**Summer Tracks**](/music/summer-tracks)        | Single | 2022 | Warren Pratten                      |
-| [**Space & Time, Vol. 1**](/music/space-time-v1) | EP     | 2022 | Warren Pratten, Nihilist Spasm Band |
-| [**Scale Hop**](/music/scale-hop)                | Single | 2022 |                                     |
-| [**Radioactive**](/music/radioactive)            | Single | 2017 |                                     |
-
-<br>
-
-I've also produced the soundtrack for the short film [**Raindrops**](https://www.youtube.com/watch?v=RqzLxaQ3abM) by Emilia Frias.
-
-## Music released as RetryLife
-
-Spanning 2015 to 2017, I was a part of an electronic music group named RetryLife. Our music was largely experimental. I was the primary producer, and also handled public facing things like website management, video production, and social media.
-
-| Title                                                            | Type       | Year | Featured Artists             |
-|------------------------------------------------------------------|------------|------|------------------------------|
-| [**X-MAS 02**](/music/retrylife/xmas-02)                         | Album      | 2017 |                              |
-| [**Sir Dankley's MLG Restaurant**](/music/retrylife/sir-dankley) | Album      | 2017 | Name Unknown, Low-key Legend |
-| [**Imagined**](/music/retrylife/imagined)                        | Soundtrack | 2017 |                              |
-| [**Lemons**](/music/retrylife/lemons)                            | Album      | 2017 |                              |
-| [**Explosive Christmas**](/music/retrylife/explosive-xmas)       | Album      | 2016 |                              |
-| [**Reborn**](/music/retrylife/reborn)                            | Single     | 2016 |                              |
-| [**Intergalactic Swirlz**](/music/retrylife/intergalactic)       | Album      | 2016 |                              |
-| [**Flare**](/music/retrylife/flare)                              | EP         | 2016 |                              |
-| [**Project 39**](/music/retrylife/project-39)                    | Album      | 2015 |                              |
-| [**Silent**](/music/retrylife/silent)                            | EP         | 2015 |                              |
-| [**Enlarging Elaphants**](/music/retrylife/enlarging-elaphants)  | EP         | 2015 |                              |
-| [**Bring the Onslaught**](/music/retrylife/bring-the-onslaught)  | EP         | 2015 | Name Unknown                 |
-| [**Insanitorium**](/music/retrylife/insanitorium)                | EP         | 2015 |                              |
-| [**Hypernova**](/music/retrylife/hypernova)                      | EP         | 2015 |                              |
-| [**Hidden Forest**](/music/retrylife/hidden-forest)              | EP         | 2015 |                              |
-| [**Death Among Us**](/music/retrylife/death-among-us)            | EP         | 2015 |                              | -->
diff --git a/content/music/retrylife/bring-the-onslaught.md b/content/music/retrylife/bring-the-onslaught.md
deleted file mode 100644
index 53a1808..0000000
--- a/content/music/retrylife/bring-the-onslaught.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: Bring the Onslaught
-date: 2015-05-24
-extra:
-    no_auto_title: true
-    og_image: https://ewpratten.com/images/music/retrylife/bring-the-onslaught/cover.jpg
-    og_description: "EP by RetryLife. Released May 24 2015"
----
-
-
-{% music_card(cover="/images/music/retrylife/bring-the-onslaught/cover.jpg") %}
-By: RetryLife<br>
-Released: May 24 2015
-{% end %}
-
-## Track List
-
-|   #   | Title               | Length |
-|:-----:|---------------------|--------|
-| **1** | Android hell        | 2:01   |
-| **2** | Birdeye             | 1:44   |
-| **3** | Bring the Onslaught | 2:05   |
-| **4** | JarVIs              | 1:39   |
-| **5** | Like a gentleman    | 2:38   |
-| **6** | Phangs              | 2:25   |
-
-## Listen
-
-*Bring the Onslaught* is available to stream on [Spotify](https://open.spotify.com/album/5hiVUR7IxKldHWZQch5B6A).
diff --git a/content/music/retrylife/death-among-us.md b/content/music/retrylife/death-among-us.md
deleted file mode 100644
index 5d4bf4d..0000000
--- a/content/music/retrylife/death-among-us.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: Death Among Us
-date: 2015-03-23
-extra:
-    no_auto_title: true
-    og_image: https://ewpratten.com/images/music/retrylife/death-among-us/cover.jpg
-    og_description: "EP by RetryLife. Released Mar 23 2015"
----
-
-
-{% music_card(cover="/images/music/retrylife/death-among-us/cover.jpg") %}
-By: RetryLife<br>
-Released: Mar 23 2015
-{% end %}
-
-## Track List
-
-|   #   | Title                             | Length |
-|:-----:|-----------------------------------|--------|
-| **1** | try again                         | 1:30   |
-| **2** | 3 eyes too many or 4 eyes too few | 2:15   |
-| **3** | foot soccer                       | 2:50   |
-| **4** | kitten in the woodchopper         | 1:52   |
-| **5** | the bloody hands                  | 0:54   |
-
-## Listen
-
-*Death Among Us* is available to stream on [Spotify](https://open.spotify.com/album/55U8dXTlIt47CaudCOZRyT).
diff --git a/content/music/retrylife/enlarging-elaphants.md b/content/music/retrylife/enlarging-elaphants.md
deleted file mode 100644
index 836832b..0000000
--- a/content/music/retrylife/enlarging-elaphants.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Enlarging Elaphants
-date: 2015-06-01
-extra:
-    no_auto_title: true
-    og_image: https://ewpratten.com/images/music/retrylife/enlarging-elaphants/cover.jpg
-    og_description: "EP by RetryLife. Released Jun 1 2015"
----
-
-
-{% music_card(cover="/images/music/retrylife/enlarging-elaphants/cover.jpg") %}
-By: RetryLife<br>
-Released: Jun 1 2015
-{% end %}
-
-## Track List
-
-|   #   | Title                                  | Length | Notes                          |
-|:-----:|----------------------------------------|--------|--------------------------------|
-| **1** | spike it! (bring it on! remix)         | 3:45   | Renamed in Spotify release     |
-| **2** | Bring it on!                           | 3:34   |                                |
-| **3** | Gent vs. Gent (like a gentleman remix) | 3:13   | Renamed in Spotify release     |
-| **4** | ghost factory                          | 2:51   |                                |
-| **5** | Rain (a memory from the past)          | 2:42   | Not present in Spotify release |
-| **6** | Scratch                                | 2:55   |                                |
-| **7** | That Song Tho                          | 3:09   |                                |
-
-## Listen
-
-*Enlarging Elaphants* is available to stream on [Spotify](https://open.spotify.com/album/48Y20F41psQbkZzqW8S6HU).
diff --git a/content/music/retrylife/explosive-xmas.md b/content/music/retrylife/explosive-xmas.md
deleted file mode 100644
index 6c5527e..0000000
--- a/content/music/retrylife/explosive-xmas.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: Explosive Christmas
-date: 2016-12-25
-extra:
-    no_auto_title: true
-    og_image: https://ewpratten.com/images/music/retrylife/explosive-xmas/cover.jpg
-    og_description: "Album by RetryLife. Released Dec 25 2016"
----
-
-
-{% music_card(cover="/images/music/retrylife/explosive-xmas/cover.jpg") %}
-By: RetryLife<br>
-Released: Dec 25 2016
-{% end %}
-
-## Track List
-
-|   #    | Title                        | Length |
-|:------:|------------------------------|--------|
-| **1**  | The Far Reaches              | 2:46   |
-| **2**  | Game Zone                    | 2:53   |
-| **3**  | Glitch                       | 2:12   |
-| **4**  | Hyper                        | 2:34   |
-| **5**  | Skeleton Dance Party         | 2:22   |
-| **6**  | On The Run                   | 1:59   |
-| **7**  | Russme Is Born               | 1:45   |
-| **8**  | Tetris' Secret               | 1:57   |
-| **9**  | Paranormal                   | 3:26   |
-| **10** | Mold                         | 2:05   |
-| **11** | Class Action                 | 2:50   |
-| **12** | Rise                         | 2:51   |
-| **13** | Stress Overload (radio edit) | 2:00   |
-| **14** | Chillin'                     | 5:42   |
-| **15** | Underworlds                  | 2:36   |
-| **16** | Dreams                       | 3:05   |
-| **17** | Thud                         | 2:57   |
-| **18** | Bass Effect                  | 2:08   |
-
-## Listen
-
-*Explosive Christmas* is available to stream on [Spotify](https://open.spotify.com/album/2skpFmpTQmTRcCoOQk76O6).
diff --git a/content/music/retrylife/flare.md b/content/music/retrylife/flare.md
deleted file mode 100644
index 31a0005..0000000
--- a/content/music/retrylife/flare.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: Flare
-date: 2016-05-10
-extra:
-    no_auto_title: true
-    og_image: https://ewpratten.com/images/music/retrylife/flare/cover.jpg
-    og_description: "EP by RetryLife. Released May 10 2016"
----
-
-
-{% music_card(cover="/images/music/retrylife/flare/cover.jpg") %}
-By: RetryLife<br>
-Released: May 10 2016
-{% end %}
-
-## Track List
-
-|   #   | Title                      | Length |
-|:-----:|----------------------------|--------|
-| **1** | Future Basses              | 2:59   |
-| **2** | Tetris Remix               | 3:13   |
-| **3** | Memries                    | 2:33   |
-| **4** | War Bot                    | 4:35   |
-| **5** | Spaceman Remix (RetryLife) | 4:03   |
-| **6** | Days Of Future Past        | 3:15   |
-
-## Listen
-
-*Flare* is available to stream on [Spotify](https://open.spotify.com/album/5B3qcjQfxOvQGBBDdnbywk).
diff --git a/content/music/retrylife/hidden-forest.md b/content/music/retrylife/hidden-forest.md
deleted file mode 100644
index 3a8719d..0000000
--- a/content/music/retrylife/hidden-forest.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: Hidden Forest
-date: 2015-03-27
-extra:
-    no_auto_title: true
-    og_image: https://ewpratten.com/images/music/retrylife/hidden-forest/cover.jpg
-    og_description: "EP by RetryLife. Released Mar 27 2015"
----
-
-
-{% music_card(cover="/images/music/retrylife/hidden-forest/cover.jpg") %}
-By: RetryLife<br>
-Released: Mar 27 2015
-{% end %}
-
-## Track List
-
-|   #   | Title                  | Length |
-|:-----:|------------------------|--------|
-| **1** | Rain                   | 2:42   |
-| **2** | Evolve                 | 2:05   |
-| **3** | First of it's kind     | 1:24   |
-| **4** | Ghetto life            | 1:49   |
-| **5** | Trap of the year (mix) | 6:01   |
-| **6** | Whupdedups             | 1:14   |
-
-## Listen
-
-*Hidden Forest* is available to stream on [Spotify](https://open.spotify.com/album/2qrNBI4HkvUhOPj9Z4Hw2N).
diff --git a/content/music/retrylife/hypernova.md b/content/music/retrylife/hypernova.md
deleted file mode 100644
index b360f62..0000000
--- a/content/music/retrylife/hypernova.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: Hypernova
-date: 2015-03-29
-extra:
-    no_auto_title: true
-    og_image: https://ewpratten.com/images/music/retrylife/hypernova/cover.jpg
-    og_description: "EP by RetryLife. Released Mar 29 2015"
----
-
-
-{% music_card(cover="/images/music/retrylife/hypernova/cover.jpg") %}
-By: RetryLife<br>
-Released: Mar 29 2015
-{% end %}
-
-## Track List
-
-|   #   | Title               | Length |
-|:-----:|---------------------|--------|
-| **1** | Better than nothing | 1:51   |
-| **2** | Sick for love       | 1:51   |
-| **3** | Skeet smasher       | 1:51   |
-| **4** | So dirty im clean   | 1:08   |
-| **5** | Static motion       | 1:17   |
-| **6** | WW3                 | 2:12   |
-
-## Listen
-
-*Hypernova* is available to stream on [Spotify](https://open.spotify.com/album/35Nq5zIyBlwLnPuGGzcQcd).
diff --git a/content/music/retrylife/imagined.md b/content/music/retrylife/imagined.md
deleted file mode 100644
index f4a50c8..0000000
--- a/content/music/retrylife/imagined.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-title: Imagined
-date: 2017-04-06
-extra:
-    no_auto_title: true
-    og_image: https://ewpratten.com/images/music/retrylife/imagined/cover.jpg
-    og_description: "Soundtrack by RetryLife. Released Apr 6 2017"
----
-
-
-{% music_card(cover="/images/music/retrylife/imagined/cover.jpg") %}
-By: RetryLife<br>
-Released: Apr 6 2017
-{% end %}
-
-## Track List
-
-|   #    | Title              | Length |
-|:------:|--------------------|--------|
-| **1**  | Intro              | 1:01   |
-| **2**  | Act 1 Scene 2      | 0:41   |
-| **3**  | Act 1 Scene 3      | 0:38   |
-| **4**  | Act 1 Scene 4      | 0:56   |
-| **5**  | Act 1 Scene 5      | 1:08   |
-| **6**  | Intermission Intro | 1:14   |
-| **7**  | Intermission Outro | 3:20   |
-| **8**  | Act 2 Scene 2      | 0:34   |
-| **9**  | Act 2 Scene 3      | 0:43   |
-| **10** | Act 2 Scene 4      | 1:00   |
-| **11** | Bows               | 4:30   |
-| **12** | Bows 2             | 4:03   |
-
-## Listen
-
-*Imagined* is available to stream on [Spotify](https://open.spotify.com/album/6do7NZe30VeSO22Bp0sXxX).
diff --git a/content/music/retrylife/insanitorium.md b/content/music/retrylife/insanitorium.md
deleted file mode 100644
index eb0fcb9..0000000
--- a/content/music/retrylife/insanitorium.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: Insanitorium
-date: 2015-04-25
-extra:
-    no_auto_title: true
-    og_image: https://ewpratten.com/images/music/retrylife/insanitorium/cover.jpg
-    og_description: "EP by RetryLife. Released Apr 25 2015"
----
-
-
-{% music_card(cover="/images/music/retrylife/insanitorium/cover.jpg") %}
-By: RetryLife<br>
-Released: Apr 25 2015
-{% end %}
-
-## Track List
-
-|   #   | Title                 | Length |
-|:-----:|-----------------------|--------|
-| **1** | Insanity              | 2:36   |
-| **2** | Minimised             | 2:16   |
-| **3** | The ultra-underground | 2:32   |
-| **4** | Weeb stalf            | 1:36   |
-| **5** | Weebul                | 2:30   |
-
-## Listen
-
-*Insanitorium* is available to stream on [Spotify](https://open.spotify.com/album/4V94dN0MecmER02pwUc092).
diff --git a/content/music/retrylife/intergalactic-swirlz.md b/content/music/retrylife/intergalactic-swirlz.md
deleted file mode 100644
index 4a591fc..0000000
--- a/content/music/retrylife/intergalactic-swirlz.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-title: Intergalactic Swirlz
-date: 2016-10-05
-extra:
-    no_auto_title: true
-    og_image: https://ewpratten.com/images/music/retrylife/intergalactic-swirlz/cover.jpg
-    og_description: "Album by RetryLife. Released Oct 5 2016"
----
-
-
-{% music_card(cover="/images/music/retrylife/intergalactic-swirlz/cover.jpg") %}
-By: RetryLife<br>
-Released: Oct 5 2016
-{% end %}
-
-## Track List
-
-|   #    | Title                    | Length |
-|:------:|--------------------------|--------|
-| **1**  | Goal                     | 4:51   |
-| **2**  | Funky Space Dance Party  | 3:00   |
-| **3**  | The Future From The Past | 4:11   |
-| **4**  | Legend                   | 2:51   |
-| **5**  | Fairytail Fire           | 4:29   |
-| **6**  | Fairytale Fire (VIP)     | 5:22   |
-| **7**  | Confusion                | 3:22   |
-| **8**  | Day 1                    | 2:44   |
-| **9**  | Pika Chase               | 1:46   |
-| **10** | Radioactive Village      | 2:31   |
-| **11** | Lazy Sunday Song         | 2:08   |
-| **12** | The Ruins                | 1:36   |
-| **13** | Phantom                  | 5:21   |
-| **14** | Electronic Music Dancing | 4:36   |
-
-## Listen
-
-*Intergalactic Swirlz* is available to stream on [Spotify](https://open.spotify.com/album/6aXnm2sZLLEVR1ob1Vbgiz).
diff --git a/content/music/retrylife/lemons.md b/content/music/retrylife/lemons.md
deleted file mode 100644
index 80b7965..0000000
--- a/content/music/retrylife/lemons.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title: Lemons
-date: 2017-03-01
-extra:
-    no_auto_title: true
-    og_image: https://ewpratten.com/images/music/retrylife/lemons/cover.jpg
-    og_description: "Album by RetryLife. Released Mar 1 2017"
----
-
-
-{% music_card(cover="/images/music/retrylife/lemons/cover.jpg") %}
-By: RetryLife<br>
-Released: Mar 1 2017
-{% end %}
-
-## Track List
-
-|   #    | Title                   | Length |
-|:------:|-------------------------|--------|
-| **1**  | Mr. Radiohead's S-EDM   | 2:49   |
-| **2**  | Starburst               | 2:03   |
-| **3**  | Fallen                  | 2:00   |
-| **4**  | Morning                 | 3:53   |
-| **5**  | Soft                    | 3:46   |
-| **6**  | Life's Lemons           | 3:25   |
-| **7**  | Crackle                 | 2:19   |
-| **8**  | The Lemons Are Coming!  | 2:25   |
-| **9**  | LoLemons                | 2:19   |
-| **10** | Difference              | 3:30   |
-| **11** | The Dark Reaches        | 3:01   |
-| **12** | The Eternal             | 2:31   |
-| **13** | The Lonely Forest Ghost | 3:10   |
-
-## Listen
-
-*Lemons* is available to stream on [Spotify](https://open.spotify.com/album/4oTrOPTDjsk0YGQ2445DUV).
diff --git a/content/music/retrylife/project-39.md b/content/music/retrylife/project-39.md
deleted file mode 100644
index e3fa82f..0000000
--- a/content/music/retrylife/project-39.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-title: Project 39
-date: 2015-12-28
-extra:
-    no_auto_title: true
-    og_image: https://ewpratten.com/images/music/retrylife/project-39/cover.jpg
-    og_description: "Album by RetryLife. Released Dec 28 2015"
----
-
-
-{% music_card(cover="/images/music/retrylife/project-39/cover.jpg") %}
-By: RetryLife<br>
-Released: Dec 28 2015
-{% end %}
-
-## Track List
-
-|   #    | Title              | Length |
-|:------:|--------------------|--------|
-| **1**  | Electro Jungle     | 2:45   |
-| **2**  | Out West           | 2:05   |
-| **3**  | Dubstep Factory    | 2:25   |
-| **4**  | Sunday Morning     | 2:24   |
-| **5**  | Mech Battle        | 1:42   |
-| **6**  | Silent Mashup      | 2:51   |
-| **7**  | Glitch             | 2:21   |
-| **8**  | Chops              | 1:51   |
-| **9**  | Enslaved           | 2:05   |
-| **10** | Funky              | 2:36   |
-| **11** | You Can(t) Make It | 2:05   |
-
-## Listen
-
-*Project 39* is available to stream on [Spotify](https://open.spotify.com/album/4loaa0nWyDaxZWlZgHaIBQ).
diff --git a/content/music/retrylife/reborn.md b/content/music/retrylife/reborn.md
deleted file mode 100644
index 779e6d7..0000000
--- a/content/music/retrylife/reborn.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-title: Reborn
-date: 2016-10-31
-extra:
-    no_auto_title: true
-    og_image: https://ewpratten.com/images/music/retrylife/reborn/cover.jpg
-    og_description: "Single by RetryLife. Released Oct 31 2016"
----
-
-
-{% music_card(cover="/images/music/retrylife/reborn/cover.jpg") %}
-By: RetryLife<br>
-Released: Oct 31 2016
-{% end %}
-
-## Track List
-
-|   #   | Title                | Length |
-|:-----:|----------------------|--------|
-| **1** | Simple               | 3:32   |
-| **2** | Snake Charmer        | 4:45   |
-| **3** | Horror Clan Official | 4:39   |
-
-## Listen
-
-*Reborn* is available to stream on [Spotify](https://open.spotify.com/album/5Nza88pbyLWeuSm2IHbVgN).
diff --git a/content/music/retrylife/silent.md b/content/music/retrylife/silent.md
deleted file mode 100644
index d0e148a..0000000
--- a/content/music/retrylife/silent.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-title: Silent
-date: 2015-08-24
-extra:
-    no_auto_title: true
-    og_image: https://ewpratten.com/images/music/retrylife/silent/cover.jpg
-    og_description: "EP by RetryLife. Released Aug 24 2015"
----
-
-
-{% music_card(cover="/images/music/retrylife/silent/cover.jpg") %}
-By: RetryLife<br>
-Released: Aug 24 2015
-{% end %}
-
-## Track List
-
-|   #   | Title                      | Length |
-|:-----:|----------------------------|--------|
-| **1** | Alone with my 1000 friends | 3:22   |
-| **2** | Echo village               | 3:41   |
-| **3** | Fear                       | 3:47   |
-| **4** | Lazy                       | 3:47   |
-
-## Listen
-
-*Silent* is available to stream on [Spotify](https://open.spotify.com/album/195fokmbfC9Hs62pOusDS3).
diff --git a/content/music/retrylife/sir-dankley.md b/content/music/retrylife/sir-dankley.md
deleted file mode 100644
index 35dfa36..0000000
--- a/content/music/retrylife/sir-dankley.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-title: Sir Dankley's MLG Restaurant
-date: 2017-08-06
-extra:
-    no_auto_title: true
-    og_image: https://ewpratten.com/images/music/retrylife/sir-dankley/cover.jpg
-    og_description: "Album by RetryLife. Released Aug 6 2017"
----
-
-
-{% music_card(cover="/images/music/retrylife/sir-dankley/cover.jpg") %}
-By: RetryLife<br>
-Released: Aug 6 2017
-{% end %}
-
-## Track List
-
-|   #    | Title                               | Length |
-|:------:|-------------------------------------|--------|
-| **1**  | The Story                           | 4:34   |
-| **2**  | Core Reboot                         | 3:32   |
-| **3**  | Trouble Maker                       | 5:38   |
-| **4**  | Into The Water                      | 4:30   |
-| **5**  | A Ray Of Sunshine                   | 3:07   |
-| **6**  | Rain Drops                          | 3:16   |
-| **7**  | Nemesis                             | 4:22   |
-| **8**  | Guardian                            | 4:03   |
-| **9**  | Flowers                             | 2:53   |
-| **10** | כיתה ה '                            | 4:17   |
-| **11** | Life                                | 4:58   |
-| **12** | Energy Drain                        | 3:14   |
-| **13** | Bass Effect                         | 2:08   |
-| **14** | Bass Effect (VIP)                   | 1:44   |
-| **15** | Pixeljump                           | 1:39   |
-| **16** | Back Home                           | 4:09   |
-| **17** | Memories                            | 3:11   |
-| **18** | The Subway Of Dreams                | 4:20   |
-| **19** | Funky Space Dance Party Remix (VIP) | 3:44   |
-| **20** | Funky Space Dance Party Remix       | 3:11   |
-| **21** | The Orchestra Gone                  | 2:31   |
-| **22** | A Ray Of Hope                       | 2:59   |
-| **23** | Old Style                           | 3:11   |
-
-## Listen
-
-*Sir Dankley's MLG Restaurant* is available to stream on [Bandcamp](https://retrylife.bandcamp.com/album/sir-dankleys-mlg-restaurant).
diff --git a/content/music/retrylife/xmas-02.md b/content/music/retrylife/xmas-02.md
deleted file mode 100644
index 042e9c7..0000000
--- a/content/music/retrylife/xmas-02.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-title: X-MAS 02
-date: 2017-12-25
-extra:
-    no_auto_title: true
-    og_image: https://ewpratten.com/images/music/retrylife/xmas-02/cover.jpg
-    og_description: "Album by RetryLife. Released Dec 25 2017"
----
-
-
-{% music_card(cover="/images/music/retrylife/xmas-02/cover.jpg") %}
-By: RetryLife<br>
-Released: Dec 25 2017
-{% end %}
-
-## Track List
-
-|   #    | Title                         | Length |
-|:------:|-------------------------------|--------|
-| **1**  | This is Music                 | 2:38   |
-| **2**  | The Story                     | 4:28   |
-| **3**  | Refresh                       | 2:26   |
-| **4**  | Memories                      | 3:14   |
-| **5**  | The Gang                      | 2:46   |
-| **6**  | The Journey                   | 4:00   |
-| **7**  | Funky Space Dance Party - VIP | 3:52   |
-| **8**  | Pixel Jump                    | 1:37   |
-| **9**  | Time Again                    | 4:07   |
-| **10** | The Temple                    | 6:05   |
-| **11** | Etherion Droplet              | 4:04   |
-
-## Listen
-
-*X-MAS 02* is available to stream on [Spotify](https://open.spotify.com/album/2iCVucaAGKEBYk8tf4DFnR).
diff --git a/content/music/tinkering/2024-02-24.md b/content/music/tinkering/2024-02-24.md
deleted file mode 100644
index 610181b..0000000
--- a/content/music/tinkering/2024-02-24.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: Tinkering session 2024-02-24
-date: 2024-02-24
-extra:
-    cover_img: /images/music/tinkering/2024-02-24-cover.png
----
-
-A fairly lean track. This session was an experiment in real-time performance inside Live.
-
-<iframe
-    src="https://www.youtube.com/embed/9fZFuSkdU7s"
-    style="width: 100%; aspect-ratio: 16 / 9;"
-    title="YouTube video player"
-    frameborder="0"
-    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
-    allowfullscreen
-></iframe>
diff --git a/content/music/tinkering/_index.md b/content/music/tinkering/_index.md
deleted file mode 100644
index 5a2b1db..0000000
--- a/content/music/tinkering/_index.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Tinkering
-sort_by: date
-template: "video-timeline.html"
----
-
-Sometimes I record myself "tinkering". The sessions that sound interesting end up here
-
-## Sessions
diff --git a/content/radio/local-repeaters.md b/content/radio/local-repeaters.md
deleted file mode 100644
index e9fe0d5..0000000
--- a/content/radio/local-repeaters.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Local Repeaters
-extra:
-    css_import:
-        - https://unpkg.com/leaflet@1.9.4/dist/leaflet.css
-    head_js_import:
-        - https://unpkg.com/leaflet@1.9.4/dist/leaflet.js
-    js_import:
-        - /js/radio/local-repeaters.js
----
-
-This page keeps track of local repeaters. See incorrect data here? Please [contact me](/contact).
-
-## Analog Repeaters
-
-<div id="analog-repeater-map" style="width:100%; aspect-ratio: 4/3; margin-bottom: 1em;"></div>
-
-<div id="analog-repeaters" style="width:max-content;max-width:100%;margin:auto;overflow:scroll;">
-
-| Callsign | Downlink | Uplink  | PL    | Coverage                                                  | Reach  | Links          |
-|----------|----------|---------|-------|-----------------------------------------------------------|--------|----------------|
-| VA3ATL   | 444.775  | 449.775 | 110.9 | <span lat="43.648" lon="-79.3860">GTA</span>              | 70 km  |                |
-| VE3WOO   | 443.900  | 448.900 | 127.3 | <span lat="43.647" lon="-79.3821">GTA</span>              | 50 km  |                |
-| VE3WOO   | 442.750  | 447.750 | 103.5 | <span lat="43.666" lon="-79.4166">GTA</span>              |        | VE3WOO         |
-| VE3WOO   | 444.175  | 449.175 | 103.5 | <span lat="43.882" lon="-79.9325">GTA</span>              | 50 km  | VE3WOO         |
-| VE3ZOE   | 443.075  | 448.075 |       | <span lat="43.249" lon="-79.8346">Golden Horseshoe</span> | 100 km |                |
-| VE3GRW   | 442.900  | 447.900 | 107.2 | <span lat="43.106" lon="-79.1126">Golden Horseshoe</span> | 200 km |                |
-| VE3YYZ   | 443.050  | 448.050 | 156.7 | <span lat="43.648" lon="-79.3821">Toronto</span>          | 35 km  | VE3RTR         |
-| VE3OKR   | 442.450  | 447.450 |       | <span lat="43.467" lon="-79.6875">Oakville</span>         | 40 km  |                |
-| VE3RSB   | 444.825  | 449.825 | 131.8 | <span lat="43.360" lon="-79.8580">Burlington</span>       | 40 km  |                |
-| VE3ADT   | 444.125  | 449.125 | 131.8 | <span lat="43.587" lon="-79.9825">Milton</span>           | 45 km  |                |
-| VE3MIS   | 145.430  | 144.830 | 103.5 | <span lat="43.593" lon="-79.6350">Mississauga</span>      | 20 km  |                |
-| VE3YRA   | 145.350  | 144.750 | 103.5 | <span lat="44.027" lon="-79.3460">GTA</span>              | 75 km  |                |
-| VE3SKY   | 146.985  | 146.385 | 103.5 | <span lat="43.665" lon="-79.4166">GTA</span>              | 70 km  |                |
-| VE3GYQ   | 145.350  | 144.750 | 114.8 | <span lat="42.983" lon="-81.2501">London</span>           | 50 km  |                |
-| VE3TTT   | 147.180  | 147.780 | 114.8 | <span lat="42.984" lon="-81.2442">London</span>           | 75 km  | VE3SUE         |
-| VE3SUE   | 444.400  | 449.400 | 114.8 | <span lat="42.983" lon="-81.2500">London</span>           | 50 km  |                |
-| VA3FEZ   | 444.100  | 449.100 | 114.8 | <span lat="42.956" lon="-81.2776">London</span>           |        | VE3MMX         |
-| VE3MMX   | 147.225  | 147.825 | 114.8 | <span lat="42.739" lon="-81.3454">St Thomas</span>        | 35 km  |                |
-| VE3MMX   | 443.750  | 448.750 | 114.8 | <span lat="42.739" lon="-81.3454">St Thomas</span>        |        |                |
-| VE3TCB   | 146.940  | 146.340 | 114.8 | <span lat="43.163" lon="-81.8570">Grand Bend</span>       | 50 km  | VE3SUE, VE3SRT |
-| VE3SRT   | 442.050  | 447.050 | 114.8 | <span lat="43.313" lon="-81.7554">Grand Bend</span>       | 50 km  | VE3SUE         |
-| VE3MCR   | 147.000  | 147.600 | 114.8 | <span lat="43.186" lon="-81.4075">Grand Bend</span>       |        | VE3SUE         |
-| VE3RGB   | 146.760  | 146.160 | 114.8 | <span lat="43.335" lon="-81.7372">Grand Bend</span>       |        | VE3SUE         |
-| VE3RTR   | 444.975  | 449.975 | 162.2 | <span lat="44.057" lon="-78.1328">Peterborough</span>     | 65 km  |                |
-</div>
-
diff --git a/content/radio/va3ujf-hub.md b/content/radio/va3ujf-hub.md
deleted file mode 100644
index 3a6de2e..0000000
--- a/content/radio/va3ujf-hub.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: VA3UJF Radio Linking System
----
-
-VA3UJF operates as a hub for facilitating interconnections between various RF links and amateur VOIP services.
-
-If you would like to dial in to the system, the following methods are available:
-
-| Service     | Node ID                                             |
-|-------------|-----------------------------------------------------|
-| AllStarLink | [542070](http://stats.allstarlink.org/stats/542070) |
-| EchoLink    | 129231                                              |
-
-
-## Current link status
-
-![VA3UJF Connection Map](http://stats.allstarlink.org/stats/542070/networkMap)
\ No newline at end of file
diff --git a/src/_data/local_amateur_radio_repeaters.csv b/src/_data/local_amateur_radio_repeaters.csv
new file mode 100644
index 0000000..949055a
--- /dev/null
+++ b/src/_data/local_amateur_radio_repeaters.csv
@@ -0,0 +1,25 @@
+callsign, uplink,  downlink, tone,  lat,   lon,       area,             range, links
+VA3ATL,   444.775, 449.775,  110.9, 43.648, -79.3860, GTA,              70,
+VE3WOO,   443.900, 448.900,  127.3, 43.647, -79.3821, GTA,              50,
+VE3WOO,   442.750, 447.750,  103.5, 43.666, -79.4166, GTA,                ,    VE3WOO
+VE3WOO,   444.175, 449.175,  103.5, 43.882, -79.9325, GTA,              50,    VE3WOO
+VE3ZOE,   443.075, 448.075,       , 43.249, -79.8346, Golden Horseshoe, 100,
+VE3GRW,   442.900, 447.900,  107.2, 43.106, -79.1126, Golden Horseshoe, 200,
+VE3YYZ,   443.050, 448.050,  156.7, 43.648, -79.3821, Toronto,          35,    VE3RTR
+VE3OKR,   442.450, 447.450,       , 43.467, -79.6875, Oakville,         40,
+VE3RSB,   444.825, 449.825,  131.8, 43.360, -79.8580, Burlington,       40,
+VE3ADT,   444.125, 449.125,  131.8, 43.587, -79.9825, Milton,           45,
+VE3MIS,   145.430, 144.830,  103.5, 43.593, -79.6350, Mississauga,      20,
+VE3YRA,   145.350, 144.750,  103.5, 44.027, -79.3460, GTA,              75,
+VE3SKY,   146.985, 146.385,  103.5, 43.665, -79.4166, GTA,              70,
+VE3GYQ,   145.350, 144.750,  114.8, 42.983, -81.2501, London,           50,
+VE3TTT,   147.180, 147.780,  114.8, 42.984, -81.2442, London,           75,    VE3SUE
+VE3SUE,   444.400, 449.400,  114.8, 42.983, -81.2500, London,           50,
+VA3FEZ,   444.100, 449.100,  114.8, 42.956, -81.2776, London,             ,    VE3MMX
+VE3MMX,   147.225, 147.825,  114.8, 42.739, -81.3454, St Thomas,        35
+VE3MMX,   443.750, 448.750,  114.8, 42.739, -81.3454, St Thomas,          ,
+VE3TCB,   146.940, 146.340,  114.8, 43.163, -81.8570, Grand Bend,       50,    VE3SUE|VE3SRT
+VE3SRT,   442.050, 447.050,  114.8, 43.313, -81.7554, Grand Bend,       50,    VE3SUE
+VE3MCR,   147.000, 147.600,  114.8, 43.186, -81.4075, Grand Bend,         ,    VE3SUE
+VE3RGB,   146.760, 146.160,  114.8, 43.335, -81.7372, Grand Bend,         ,    VE3SUE
+VE3RTR,   444.975, 449.975,  162.2, 44.057, -78.1328, Peterborough,     65,
diff --git a/src/_data/minecraft_modpack_releases.yml b/src/_data/minecraft_modpack_releases.yml
new file mode 100644
index 0000000..6f1637a
--- /dev/null
+++ b/src/_data/minecraft_modpack_releases.yml
@@ -0,0 +1,54 @@
+game_versions:
+  - version: 1.16.4
+    builds:
+      - version: 1.16.4r1
+
+  - version: 1.18
+    builds:
+      - version: 1.18.0r1
+
+  - version: 1.18.2
+    builds:
+      - version: 1.18.2r1
+      
+  - version: 1.19
+    builds:
+      - version: 1.19.0r1
+
+  - version: 1.19.2
+    builds:
+      - version: 1.19.2r1
+
+  - version: 1.19.4
+    builds:
+      - version: 1.19.4r1
+      - version: 1.19.4r2
+      - version: 1.19.4r3
+      - version: 1.19.4r4
+      - version: 1.19.4r5
+
+  - version: 1.20
+    builds:
+      - version: 1.20.0r1
+
+  - version: 1.20.1
+    builds:
+      - version: 1.20.1r1
+      - version: 1.20.1r2
+      - version: 1.20.1r3
+      - version: 1.20.1r4
+
+  - version: 1.20.4
+    builds:
+      - version: 1.20.4r1
+      - version: 1.20.4r2
+      - version: 1.20.4r3
+      - version: 1.20.4r4
+
+  - version: 1.20.6
+    builds:
+      - version: 1.20.6r1
+
+  - version: 1.21.1
+    builds:
+      - version: 1.21.1r1
diff --git a/src/_sass/default.scss b/src/_sass/default.scss
index 20757e0..dd484e1 100644
--- a/src/_sass/default.scss
+++ b/src/_sass/default.scss
@@ -139,7 +139,8 @@ body {
     }
 
     p,
-    li {
+    li,
+    a {
       & > code {
         font-size: 0.9em;
         background-color: #f0f0f0;
diff --git a/static/images/minecraft/client-ping/9a704ff99abe67ee711f5fae6008ef7e42f641a7.png b/src/assets/software/minecraft-client-ping/9a704ff99abe67ee711f5fae6008ef7e42f641a7.png
similarity index 100%
rename from static/images/minecraft/client-ping/9a704ff99abe67ee711f5fae6008ef7e42f641a7.png
rename to src/assets/software/minecraft-client-ping/9a704ff99abe67ee711f5fae6008ef7e42f641a7.png
diff --git a/static/images/minecraft/frost-bucket/e1006ab40e5cd79c1de5d0d39b565f88fd8b1082.png b/src/assets/software/minecraft-frost-bucket/e1006ab40e5cd79c1de5d0d39b565f88fd8b1082.png
similarity index 100%
rename from static/images/minecraft/frost-bucket/e1006ab40e5cd79c1de5d0d39b565f88fd8b1082.png
rename to src/assets/software/minecraft-frost-bucket/e1006ab40e5cd79c1de5d0d39b565f88fd8b1082.png
diff --git a/static/images/minecraft/illuminated-shields/9e5504fe6b6a2c2944143eeacf7e419f8c601d86.png b/src/assets/software/minecraft-illuminated-shields/9e5504fe6b6a2c2944143eeacf7e419f8c601d86.png
similarity index 100%
rename from static/images/minecraft/illuminated-shields/9e5504fe6b6a2c2944143eeacf7e419f8c601d86.png
rename to src/assets/software/minecraft-illuminated-shields/9e5504fe6b6a2c2944143eeacf7e419f8c601d86.png
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.16.4r1.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.16.4r1.mrpack
new file mode 100644
index 0000000..ef480e8
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.16.4r1.mrpack differ
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.18.0r1.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.18.0r1.mrpack
new file mode 100644
index 0000000..9318e40
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.18.0r1.mrpack differ
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.18.2r1.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.18.2r1.mrpack
new file mode 100644
index 0000000..151e59a
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.18.2r1.mrpack differ
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.0r1.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.0r1.mrpack
new file mode 100644
index 0000000..a390124
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.0r1.mrpack differ
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.2r1.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.2r1.mrpack
new file mode 100644
index 0000000..d18f159
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.2r1.mrpack differ
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.4r1.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.4r1.mrpack
new file mode 100644
index 0000000..36fd40b
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.4r1.mrpack differ
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.4r2.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.4r2.mrpack
new file mode 100644
index 0000000..74fffcc
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.4r2.mrpack differ
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.4r3.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.4r3.mrpack
new file mode 100644
index 0000000..82f66e3
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.4r3.mrpack differ
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.4r4.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.4r4.mrpack
new file mode 100644
index 0000000..c53b328
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.4r4.mrpack differ
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.4r5.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.4r5.mrpack
new file mode 100644
index 0000000..7b2bafd
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.19.4r5.mrpack differ
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.0r1.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.0r1.mrpack
new file mode 100644
index 0000000..9b7946c
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.0r1.mrpack differ
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.1r1.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.1r1.mrpack
new file mode 100644
index 0000000..5b2d4d2
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.1r1.mrpack differ
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.1r2.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.1r2.mrpack
new file mode 100644
index 0000000..29243fc
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.1r2.mrpack differ
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.1r3.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.1r3.mrpack
new file mode 100644
index 0000000..d5e532b
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.1r3.mrpack differ
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.1r4.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.1r4.mrpack
new file mode 100644
index 0000000..a8d3a38
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.1r4.mrpack differ
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.4r1.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.4r1.mrpack
new file mode 100644
index 0000000..bff0305
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.4r1.mrpack differ
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.4r2.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.4r2.mrpack
new file mode 100644
index 0000000..8dffd6b
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.4r2.mrpack differ
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.4r3.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.4r3.mrpack
new file mode 100644
index 0000000..1a584b3
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.4r3.mrpack differ
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.4r4.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.4r4.mrpack
new file mode 100644
index 0000000..39721bc
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.4r4.mrpack differ
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.6r1.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.6r1.mrpack
new file mode 100644
index 0000000..62f3bca
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.20.6r1.mrpack differ
diff --git a/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.21.1r1.mrpack b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.21.1r1.mrpack
new file mode 100644
index 0000000..9ae42c8
Binary files /dev/null and b/src/assets/software/minecraft-modpack/builds/Evan's Pack-1.21.1r1.mrpack differ
diff --git a/content/games/minecraft/mods/client-ping.md b/src/collections/_software/minecraft-client-ping.md
similarity index 84%
rename from content/games/minecraft/mods/client-ping.md
rename to src/collections/_software/minecraft-client-ping.md
index 9f1bebb..9d13ad0 100644
--- a/content/games/minecraft/mods/client-ping.md
+++ b/src/collections/_software/minecraft-client-ping.md
@@ -1,9 +1,12 @@
 ---
+layout: default
 title: Client Ping
+software_category: minecraft
 ---
+
 Client Ping is a Minecraft ([`^1.19.4`](https://jubianchi.github.io/semver-check/#/constraint/^1.19.4)) mod I wrote that implements multiplayer Point-of-Interest marking without the need for a server-side plugin/mod counterpart.
 
-![A screenshot of a ping](/images/minecraft/client-ping/9a704ff99abe67ee711f5fae6008ef7e42f641a7.png)
+![A screenshot of a ping](/assets/software/minecraft-client-ping/9a704ff99abe67ee711f5fae6008ef7e42f641a7.png)
 
 ## Usage
 
diff --git a/content/games/minecraft/mods/frost-bucket.md b/src/collections/_software/minecraft-frost-bucket.md
similarity index 79%
rename from content/games/minecraft/mods/frost-bucket.md
rename to src/collections/_software/minecraft-frost-bucket.md
index af3a8e2..759f3d0 100644
--- a/content/games/minecraft/mods/frost-bucket.md
+++ b/src/collections/_software/minecraft-frost-bucket.md
@@ -1,9 +1,12 @@
 ---
+layout: default
 title: FrostBucket
+software_category: minecraft
 ---
+
 FrostBucket is a server-side plugin I built for for Minecraft [`~1.16.0`](https://jubianchi.github.io/semver-check/#/constraint/~1.16.0) that allows players to apply the `Frost Walker` enchantment to a bucket.
 
-![](/images/minecraft/frost-bucket/e1006ab40e5cd79c1de5d0d39b565f88fd8b1082.png)
+![](/assets/software/minecraft-frost-bucket/e1006ab40e5cd79c1de5d0d39b565f88fd8b1082.png)
 
 Buckets with `Frost Walker` applied are able to pick up water like a regular bucket, but place ice instead of water when emptied.
 
diff --git a/content/games/minecraft/resource-packs/illuminated-shields.md b/src/collections/_software/minecraft-illuminated-shields.md
similarity index 84%
rename from content/games/minecraft/resource-packs/illuminated-shields.md
rename to src/collections/_software/minecraft-illuminated-shields.md
index 320459c..70b6760 100644
--- a/content/games/minecraft/resource-packs/illuminated-shields.md
+++ b/src/collections/_software/minecraft-illuminated-shields.md
@@ -1,9 +1,11 @@
 ---
+layout: default
 title: Illuminated Shields
+software_category: minecraft
 ---
 Illuminated Shields is a Minecraft resource pack that hooks in to the [LambDynamicLights](https://modrinth.com/mod/lambdynamiclights) mod to cause shields to emit light.
 
-![](/images/minecraft/illuminated-shields/9e5504fe6b6a2c2944143eeacf7e419f8c601d86.png)
+![](/assets/software/minecraft-illuminated-shields/9e5504fe6b6a2c2944143eeacf7e419f8c601d86.png)
 
 I made this resource pack by request. It was requested as a way to remove the need to carry a torch in the off-hand to see better at night. Instead, you can just carry your shield like normal, and use its light-emitting properties to find your way through the world.
 
diff --git a/src/collections/_software/minecraft-modpack.html b/src/collections/_software/minecraft-modpack.html
new file mode 100644
index 0000000..fb6e444
--- /dev/null
+++ b/src/collections/_software/minecraft-modpack.html
@@ -0,0 +1,62 @@
+---
+layout: default
+title: Evan's Minecraft Modpack
+software_category: minecraft
+---
+
+{% assign most_recent_release = site.data.minecraft_modpack_releases.game_versions | last %}
+
+<p>
+    For the past handful of years, I've been maintaining a personal collection of Minecraft mods that improve upon base
+    gameplay and optimize the game's internals.
+</p>
+
+<section>
+    <h2>Installation</h2>
+    <p>
+        This modpack is distributed in <code>.mrpack</code> format. To use it, you'll need to install the
+        <a href="https://prismlauncher.org/"><strong>Prism Launcher</strong></a>.
+    </p>
+    <p>Once installed:</p>
+    <ol>
+        <li>Head to <strong>Add Instance</strong> in the top-left corner of the application</li>
+        <li>Select <strong>Import</strong></li>
+        <li>Choose one of the files from the <em>Releases</em> section below</li>
+    </ol>
+</section>
+
+<section>
+    <h2>Releases</h2>
+    <div
+        style="padding:0 1em; border: 1px solid #d7dde3; border-radius: 5px;margin-bottom: 1em; background-color: #f0feff;">
+        <h3>Minecraft Java Edition {{ most_recent_release.version }}</h3>
+        <ul>
+            {% for build in most_recent_release.builds %}
+            <li>
+                <a
+                    href="/assets/software/minecraft-modpack/builds/Evan's Pack-{{ most_recent_release.version }}.mrpack">
+                    Evan's Pack <strong>{{ build.version }}</strong>
+                </a>
+                {% if forloop.first %}<strong><em>(latest)</em></strong>{% endif %}
+            </li>
+            {% endfor %}
+        </ul>
+    </div>
+
+    <section>
+        <h3>Archive</h3>
+        <ul>
+            {% for build in site.data.minecraft_modpack_releases.game_versions %}
+            {% if build.version == most_recent_release.version %}{% continue %}{% endif %}
+            {% for release in build.builds %}
+            <li>
+                <a href="https://software-download.ewpratten.com/minecraft-modpack-{{ build.version }}.mrpack" style="color: gray;">
+                    Evan's Pack <strong>{{ release.version }}</strong>
+                </a>
+            </li>
+            {% endfor %}
+            {% endfor %}
+        </ul>
+        </div>
+    </section>
+</section>
\ No newline at end of file
diff --git a/static/dist/icons8/antenna.png b/static/dist/icons8/antenna.png
deleted file mode 100644
index 9d8fa9d..0000000
Binary files a/static/dist/icons8/antenna.png and /dev/null differ
diff --git a/static/dist/line-awesome/envelope.svg b/static/dist/line-awesome/envelope.svg
deleted file mode 100644
index 17bd663..0000000
--- a/static/dist/line-awesome/envelope.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M 3 8 L 3 26 L 29 26 L 29 8 Z M 7.3125 10 L 24.6875 10 L 16 15.78125 Z M 5 10.875 L 15.4375 17.84375 L 16 18.1875 L 16.5625 17.84375 L 27 10.875 L 27 24 L 5 24 Z"/></svg>
\ No newline at end of file
diff --git a/static/dist/line-awesome/github.svg b/static/dist/line-awesome/github.svg
deleted file mode 100644
index 2e2eb07..0000000
--- a/static/dist/line-awesome/github.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path fill-rule="evenodd" d="M 16 4 C 9.371094 4 4 9.371094 4 16 C 4 21.300781 7.4375 25.800781 12.207031 27.386719 C 12.808594 27.496094 13.027344 27.128906 13.027344 26.808594 C 13.027344 26.523438 13.015625 25.769531 13.011719 24.769531 C 9.671875 25.492188 8.96875 23.160156 8.96875 23.160156 C 8.421875 21.773438 7.636719 21.402344 7.636719 21.402344 C 6.546875 20.660156 7.71875 20.675781 7.71875 20.675781 C 8.921875 20.761719 9.554688 21.910156 9.554688 21.910156 C 10.625 23.746094 12.363281 23.214844 13.046875 22.910156 C 13.15625 22.132813 13.46875 21.605469 13.808594 21.304688 C 11.144531 21.003906 8.34375 19.972656 8.34375 15.375 C 8.34375 14.0625 8.8125 12.992188 9.578125 12.152344 C 9.457031 11.851563 9.042969 10.628906 9.695313 8.976563 C 9.695313 8.976563 10.703125 8.65625 12.996094 10.207031 C 13.953125 9.941406 14.980469 9.808594 16 9.804688 C 17.019531 9.808594 18.046875 9.941406 19.003906 10.207031 C 21.296875 8.65625 22.300781 8.976563 22.300781 8.976563 C 22.957031 10.628906 22.546875 11.851563 22.421875 12.152344 C 23.191406 12.992188 23.652344 14.0625 23.652344 15.375 C 23.652344 19.984375 20.847656 20.996094 18.175781 21.296875 C 18.605469 21.664063 18.988281 22.398438 18.988281 23.515625 C 18.988281 25.121094 18.976563 26.414063 18.976563 26.808594 C 18.976563 27.128906 19.191406 27.503906 19.800781 27.386719 C 24.566406 25.796875 28 21.300781 28 16 C 28 9.371094 22.628906 4 16 4 Z"/></svg>
\ No newline at end of file
diff --git a/static/dist/line-awesome/hacker-news.svg b/static/dist/line-awesome/hacker-news.svg
deleted file mode 100644
index 78fba50..0000000
--- a/static/dist/line-awesome/hacker-news.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M 5 5 L 5 27 L 27 27 L 27 5 Z M 7 7 L 25 7 L 25 25 L 7 25 Z M 11.5 11 L 15 17 L 15 22 L 17 22 L 17 17 L 20.5 11 L 18.5 11 L 16 15.28125 L 13.5 11 Z"/></svg>
\ No newline at end of file
diff --git a/static/dist/line-awesome/linkedin.svg b/static/dist/line-awesome/linkedin.svg
deleted file mode 100644
index 596f003..0000000
--- a/static/dist/line-awesome/linkedin.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M 7.5 5 C 6.132813 5 5 6.132813 5 7.5 L 5 24.5 C 5 25.867188 6.132813 27 7.5 27 L 24.5 27 C 25.867188 27 27 25.867188 27 24.5 L 27 7.5 C 27 6.132813 25.867188 5 24.5 5 Z M 7.5 7 L 24.5 7 C 24.785156 7 25 7.214844 25 7.5 L 25 24.5 C 25 24.785156 24.785156 25 24.5 25 L 7.5 25 C 7.214844 25 7 24.785156 7 24.5 L 7 7.5 C 7 7.214844 7.214844 7 7.5 7 Z M 10.4375 8.71875 C 9.488281 8.71875 8.71875 9.488281 8.71875 10.4375 C 8.71875 11.386719 9.488281 12.15625 10.4375 12.15625 C 11.386719 12.15625 12.15625 11.386719 12.15625 10.4375 C 12.15625 9.488281 11.386719 8.71875 10.4375 8.71875 Z M 19.46875 13.28125 C 18.035156 13.28125 17.082031 14.066406 16.6875 14.8125 L 16.625 14.8125 L 16.625 13.5 L 13.8125 13.5 L 13.8125 23 L 16.75 23 L 16.75 18.3125 C 16.75 17.074219 16.996094 15.875 18.53125 15.875 C 20.042969 15.875 20.0625 17.273438 20.0625 18.375 L 20.0625 23 L 23 23 L 23 17.78125 C 23 15.226563 22.457031 13.28125 19.46875 13.28125 Z M 9 13.5 L 9 23 L 11.96875 23 L 11.96875 13.5 Z"/></svg>
\ No newline at end of file
diff --git a/static/dist/line-awesome/mastodon.svg b/static/dist/line-awesome/mastodon.svg
deleted file mode 100644
index 3bde68c..0000000
--- a/static/dist/line-awesome/mastodon.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M 15.9375 4.03125 C 12.917 4.0435 9.9179219 4.4269844 8.3574219 5.1464844 C 8.3574219 5.1464844 5 6.6748594 5 11.880859 C 5 18.077859 4.9955 25.860234 10.5625 27.365234 C 12.6945 27.938234 14.527953 28.061562 16.001953 27.976562 C 18.676953 27.825562 20 27.005859 20 27.005859 L 19.910156 25.029297 C 19.910156 25.029297 18.176297 25.640313 16.029297 25.570312 C 13.902297 25.495313 11.6615 25.335688 11.3125 22.679688 C 11.2805 22.432688 11.264625 22.182594 11.265625 21.933594 C 15.772625 23.052594 19.615828 22.420969 20.673828 22.292969 C 23.627828 21.933969 26.199344 20.081672 26.527344 18.388672 C 27.041344 15.720672 26.998047 11.880859 26.998047 11.880859 C 26.998047 6.6748594 23.646484 5.1464844 23.646484 5.1464844 C 22.000984 4.3779844 18.958 4.019 15.9375 4.03125 z M 12.705078 8.0019531 C 13.739953 8.0297031 14.762578 8.4927031 15.392578 9.4707031 L 16.001953 10.505859 L 16.609375 9.4707031 C 17.874375 7.5037031 20.709594 7.6264375 22.058594 9.1484375 C 23.302594 10.596438 23.025391 11.531 23.025391 18 L 23.025391 18.001953 L 20.578125 18.001953 L 20.578125 12.373047 C 20.578125 9.7380469 17.21875 9.6362812 17.21875 12.738281 L 17.21875 16 L 14.787109 16 L 14.787109 12.738281 C 14.787109 9.6362812 11.429688 9.7360938 11.429688 12.371094 L 11.429688 18 L 8.9765625 18 C 8.9765625 11.526 8.7043594 10.585438 9.9433594 9.1484375 C 10.622859 8.3824375 11.670203 7.9742031 12.705078 8.0019531 z"/></svg>
\ No newline at end of file
diff --git a/static/dist/line-awesome/reddit.svg b/static/dist/line-awesome/reddit.svg
deleted file mode 100644
index eb1b864..0000000
--- a/static/dist/line-awesome/reddit.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M 18.65625 4 C 16.558594 4 15 5.707031 15 7.65625 L 15 11.03125 C 12.242188 11.175781 9.742188 11.90625 7.71875 13.0625 C 6.945313 12.316406 5.914063 12 4.90625 12 C 3.816406 12 2.707031 12.355469 1.9375 13.21875 L 1.9375 13.25 L 1.90625 13.28125 C 1.167969 14.203125 0.867188 15.433594 1.0625 16.65625 C 1.242188 17.777344 1.898438 18.917969 3.03125 19.65625 C 3.023438 19.769531 3 19.882813 3 20 C 3 22.605469 4.574219 24.886719 6.9375 26.46875 C 9.300781 28.050781 12.488281 29 16 29 C 19.511719 29 22.699219 28.050781 25.0625 26.46875 C 27.425781 24.886719 29 22.605469 29 20 C 29 19.882813 28.976563 19.769531 28.96875 19.65625 C 30.101563 18.917969 30.757813 17.777344 30.9375 16.65625 C 31.132813 15.433594 30.832031 14.203125 30.09375 13.28125 L 30.0625 13.25 C 29.292969 12.386719 28.183594 12 27.09375 12 C 26.085938 12 25.054688 12.316406 24.28125 13.0625 C 22.257813 11.90625 19.757813 11.175781 17 11.03125 L 17 7.65625 C 17 6.675781 17.558594 6 18.65625 6 C 19.175781 6 19.820313 6.246094 20.8125 6.59375 C 21.65625 6.890625 22.75 7.21875 24.15625 7.3125 C 24.496094 8.289063 25.414063 9 26.5 9 C 27.875 9 29 7.875 29 6.5 C 29 5.125 27.875 4 26.5 4 C 25.554688 4 24.738281 4.535156 24.3125 5.3125 C 23.113281 5.242188 22.246094 4.992188 21.46875 4.71875 C 20.566406 4.402344 19.734375 4 18.65625 4 Z M 16 13 C 19.152344 13 21.964844 13.867188 23.9375 15.1875 C 25.910156 16.507813 27 18.203125 27 20 C 27 21.796875 25.910156 23.492188 23.9375 24.8125 C 21.964844 26.132813 19.152344 27 16 27 C 12.847656 27 10.035156 26.132813 8.0625 24.8125 C 6.089844 23.492188 5 21.796875 5 20 C 5 18.203125 6.089844 16.507813 8.0625 15.1875 C 10.035156 13.867188 12.847656 13 16 13 Z M 4.90625 14 C 5.285156 14 5.660156 14.09375 5.96875 14.25 C 4.882813 15.160156 4.039063 16.242188 3.53125 17.4375 C 3.277344 17.117188 3.125 16.734375 3.0625 16.34375 C 2.953125 15.671875 3.148438 14.976563 3.46875 14.5625 C 3.472656 14.554688 3.464844 14.539063 3.46875 14.53125 C 3.773438 14.210938 4.3125 14 4.90625 14 Z M 27.09375 14 C 27.6875 14 28.226563 14.210938 28.53125 14.53125 C 28.535156 14.535156 28.527344 14.558594 28.53125 14.5625 C 28.851563 14.976563 29.046875 15.671875 28.9375 16.34375 C 28.875 16.734375 28.722656 17.117188 28.46875 17.4375 C 27.960938 16.242188 27.117188 15.160156 26.03125 14.25 C 26.339844 14.09375 26.714844 14 27.09375 14 Z M 11 16 C 9.894531 16 9 16.894531 9 18 C 9 19.105469 9.894531 20 11 20 C 12.105469 20 13 19.105469 13 18 C 13 16.894531 12.105469 16 11 16 Z M 21 16 C 19.894531 16 19 16.894531 19 18 C 19 19.105469 19.894531 20 21 20 C 22.105469 20 23 19.105469 23 18 C 23 16.894531 22.105469 16 21 16 Z M 21.25 21.53125 C 20.101563 22.597656 18.171875 23.28125 16 23.28125 C 13.828125 23.28125 11.898438 22.589844 10.75 21.65625 C 11.390625 23.390625 13.445313 25 16 25 C 18.554688 25 20.609375 23.398438 21.25 21.53125 Z"/></svg>
\ No newline at end of file