« get me outta code hell

this commit is very large because i am doing work - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
diff options
context:
space:
mode:
author(quasar) nebula <towerofnix@gmail.com>2020-10-28 17:33:03 -0300
committer(quasar) nebula <towerofnix@gmail.com>2020-10-28 17:33:03 -0300
commit25798012d6a0ab3ba0c439f372bbedc5943ac47e (patch)
tree71dabc10f3283027d54c1d514ef1bf5e6d243800
parentf017dfe9c87bdf29430a26aa2b441d56e62c9195 (diff)
this commit is very large because i am doing work
and i would like to not lose progress in case i really screw those git
moves up bad

also it puts everything new into tracking which is kinda nice
-rw-r--r--album/ancestral/album.txt12
-rw-r--r--album/beforus/album.txt8
-rw-r--r--album/beyond-canon/album.txt5
-rw-r--r--album/coloUrs-and-mayhem-universe-a/album.txt43
-rw-r--r--album/coloUrs-and-mayhem-universe-b/album.txt4
-rw-r--r--album/lofam/album.txt8
-rw-r--r--album/lofam2/album.txt131
-rw-r--r--album/lofam4/album.txt4
-rw-r--r--album/one-year-older/album.txt29
-rw-r--r--album/unreleased-tracks/album.txt42
-rw-r--r--artists.txt124
-rw-r--r--common.js42
-rw-r--r--lazy-fallback.js19
-rw-r--r--lazy-loading.js25
-rw-r--r--lazy-show.js16
-rw-r--r--site.css146
-rw-r--r--upd8.js1149
17 files changed, 1259 insertions, 548 deletions
diff --git a/album/ancestral/album.txt b/album/ancestral/album.txt
index bae3c890..e7304639 100644
--- a/album/ancestral/album.txt
+++ b/album/ancestral/album.txt
@@ -189,14 +189,14 @@ Commentary:
     While working on this piece, the song wasn't difficult per-say? It was more challenging, because I had many different images on how I wanted this to look like. In the end, I chose what I drew and it was fun! I tried watercolours (though it might not be noticable) and I think it turned out alright!
 -------------------------------------------------------------------------------
 Track: ♓Greatest -Empress♓
-Artist: Matthias Ramalho
+Artist: Mathias Ramalho
 Track Art: Lou Chastain
 Duration: 5:52
 URLs:
 - https://unofficialmspafans.bandcamp.com/track/greatest-empress
 - https://youtu.be/Y_pWa2CA2x0?list=PL1fTYKSo2grBk7cJ3aIoYT2tc8eikCUKV
 Commentary:
-    <i>Matthias Ramalho:</i>
+    <i>Mathias Ramalho:</i>
     She's the one, the one and only. The one I decided to make an outstanding track. From orchestra to electronic, it ended way too cool than I would ever expect.
     <i>Lou Chastain:</i>
     This track made me think of the Condesce plotting in secret, alone in a rather small surveillance room. Here she has some screens where she can go over her fleet, ongoing sieges, targets etc.
@@ -278,14 +278,14 @@ Commentary:
     Capturing such a profound moment proved to be somewhat challenging, balancing struggle, triumph, and condescension all in one piece. The process of creating such a proud and arrogant face of victory washed over by the shadows of an unforeseeable future was very fun, eagerly claiming the crown for her own, for better of or for worse.
 -------------------------------------------------------------------------------
 Track: Rampage
-Artist: Matthias Ramalho
+Artist: Mathias Ramalho
 Track Art: Kisbys
 Duration: 1:21
 URLs:
 - https://unofficialmspafans.bandcamp.com/track/rampage
 - https://youtu.be/z7y8pJdo5bk?list=PL1fTYKSo2grBk7cJ3aIoYT2tc8eikCUKV
 Commentary:
-    <i>Matthias Ramalho:</i>
+    <i>Mathias Ramalho:</i>
     This is a track made for the Grand Highblood, a short track reflecting his own traits and personality, just to tell you how good he is at his job.
     <i>Kisbys:</i>
     Since the track was for the Grand Highblood and centered around his job and traits, I decided to try and make something that would reflect that. I drew him in a situation where he is getting ready to take care of his usual business: culling some trolls. The song sounded powerful so I wanted to try and portray the GHB that way too by drawing him much larger than the trolls in the foreground. There are some silhouettes of other trolls in the background which are the other subjuggulators. I added some of my own headcanons for what I like to imagine he dresses like and kept it relatively simple, as well as trying to add as much color to the image as I could. He's also looking outwards and the viewpoint is that of someone in the crowd of trolls that are about to be culled, so it can be taken as a "you're next" type scenario. Truly I just tried to create a piece that represented what the music made me envision and feel, and I hope I could do the lovely song some justice!
@@ -728,14 +728,14 @@ Commentary:
     The part of the Summoner's story that I regret not having the chance to see was the moment he first revealed his wings to the crowd. After all, it must take a truly impressive sight to inspire an entire army to follow one into a revolution.
 -------------------------------------------------------------------------------
 Track: Last Lovers
-Artist: Matthias Ramalho
+Artist: Mathias Ramalho
 Track Art: Melissa Peebles
 Duration: 3:30
 URLs:
 - https://unofficialmspafans.bandcamp.com/track/last-lovers
 - https://youtu.be/YTY-YLx8SH8?list=PL1fTYKSo2grBk7cJ3aIoYT2tc8eikCUKV
 Commentary:
-    <i>Matthias Ramalho:</i>
+    <i>Mathias Ramalho:</i>
     This is a track I made for the Summoner and Mindfang, about their loved and tragic relationship. Some sad feelings along with fast movements to give more emotion.
     <i>Melissa Peebles:</i>
     I wanted to capture the beautiful sad tone of the music while showing that Mindfang and Summoner were happy, despite their tragic end.
diff --git a/album/beforus/album.txt b/album/beforus/album.txt
index 44106771..8a63b68c 100644
--- a/album/beforus/album.txt
+++ b/album/beforus/album.txt
@@ -332,14 +332,14 @@ Commentary:
     When I was figuring out what th draw for the song, I did pay attention to the song's name and also alternate name. Hearing "weeaboo" made me want to put kitty ears on Rufioh, but I scrapped that idea and instea dfocussed on the bullfighting aspect of the song first and foremost. Since Rufioh is kind of a silly character, I thught that it'd be great to gie him one of those little pony riding sticks with a bull for the head. After I finished drawing the main part of the drawing, I was still trying to figure out how to incorporate "weeaboo"-ness into it. Well, weeaboo makes me think of kitties and anime, so my mind went to Nyan Cat. Perfect, I thought, I'll add some Goold Ol' Nyan Cat rainbows, haha. And then, of course, glitter becaus anime. It came out really colorful and I'm happy with it.
 -------------------------------------------------------------------------------
 Track: Life With Peace
-Artist: Matthias Ramalho
+Artist: Mathias Ramalho
 Track Art: enjistier
 Duration: 3:47
 URLs:
 - https://unofficialmspafans.bandcamp.com/track/life-with-peace
 - https://youtu.be/6wI9Eii7nBc?list=PL2E1aOkERtLVjjUEd7bl6B8ExTnf5nuLm
 Commentary:
-    <i>Matthias Ramalho:</i>
+    <i>Mathias Ramalho:</i>
     Based on my 1st piano composition I made a long time ago, called Memories. It goes very well with the Beforan trolls and with Homestuck!
     <i>enjistier:</i>
     This track is about the Beforus trolls before the game. I really wanted to focus on them and who they are, so I chose to draw their hands and what I thought they would look like based on their personalities. I had a lot of fun thinking about how to portray them. I think my favorite has to be Meenah's or Meulin's. Sometimes, it's easy to forget that they were just another bunch of kids trying to have a good time.
@@ -1048,7 +1048,7 @@ Commentary:
     This piece exploers the visual effects of a pink moon's light on a Beforian seascape and a young Meenah as she contemplates abdication. The drama and scope of the track Fuchsia Moonrise lent itself to a turbulent seascape while the quieter aspects of the track inspired something more contemplative and calm.
 -------------------------------------------------------------------------------
 Track: Burgundy Revenge
-Artist: Matthias Ramalho
+Artist: Mathias Ramalho
 Track Art: smear
 Duration: 2:05
 URLs:
@@ -1056,7 +1056,7 @@ URLs:
 - https://youtu.be/J3tLIpRbjNI?list=PL2E1aOkERtLVjjUEd7bl6B8ExTnf5nuLm
 References: English
 Commentary:
-    <i>Matthias Ramalho:</i>
+    <i>Mathias Ramalho:</i>
     A Damara Megido song, focused on her hate against her archrival and an excellent host. It took me 6 hours and is based off Meenah's and Doc Scratch's songs.
     <i>smear:</i>
     Conceding to the original track artist's commentary, this piece was made to represent a strife between Meenah and Damara. Burgundy Revenge to me was a very creepy and atmospheric track so I decided to set it in a black and smoky enviornment.
diff --git a/album/beyond-canon/album.txt b/album/beyond-canon/album.txt
index b8a040c9..cf710b3f 100644
--- a/album/beyond-canon/album.txt
+++ b/album/beyond-canon/album.txt
@@ -115,7 +115,6 @@ Duration: 5:06
 URLs:
 - https://homestuck.bandcamp.com/track/split-reality
 - https://youtu.be/XzZ7PNmcHiU?list=PLnVpmehyaOFbH-1hH663k70qBQp5jc_CU
-- https://www.youtube.com/watch?v=XzZ7PNmcHiU
 References: Alphamatic Replacement
 Commentary:
     <i>Xauric:</i>
@@ -311,7 +310,7 @@ Commentary:
     <img src="misc/adios-lost-boys-wip2.jpg">
 -------------------------------------------------------------------------------
 Track: Moving Onwards
-Artist: Matthias Ramalho
+Artist: Mathias Ramalho
 Track Art: cratmang
 Duration: 3:15
 URLs:
@@ -319,7 +318,7 @@ URLs:
 - https://youtu.be/V2rvPt0jjdE?list=PLnVpmehyaOFbH-1hH663k70qBQp5jc_CU
 - https://soundcloud.com/friendly-coy/moving-onwards
 Commentary:
-    <i>Matthias Ramalho:</i>
+    <i>Mathias Ramalho:</i>
     (<a href="https://soundcloud.com/friendly-coy/moving-onwards">SoundCloud</a>)
     My track from the album "Beyond Canon", by the Homestuck^2 Music Team. So he-hey I got to the big leagues! don't know how I got here but I gotta tell ya, it feels awesome.
     <i>cratmang:</i>
diff --git a/album/coloUrs-and-mayhem-universe-a/album.txt b/album/coloUrs-and-mayhem-universe-a/album.txt
index 440de300..a8112323 100644
--- a/album/coloUrs-and-mayhem-universe-a/album.txt
+++ b/album/coloUrs-and-mayhem-universe-a/album.txt
@@ -77,10 +77,16 @@ Contributors:
 - Andrea McNeil
 - ari
 - Pippin
+Lyrics:
+    Han bear ey all vor smarte<br>Oo en day trei striat ande glemt<br>Lee kell vell are vey til lit
+    Vor shlekt ah chilt meh bloo far guh<br>Vee har ing en sha liet ell aey deed<br>Lee kell vell are vey til lit
+    (<i>English:</i>)
+    He carries all our pain<br>And one day his strife is forgotten<br>However, we are forgiven
+    Our kin are separated by colour of blood.<br>We are without without love or virture.<br>However, we are forgiven.
 -------------------------------------------------------------------------------
 Track: Olive Scribe
 Artist: Magnum
-Track Art: Magnum
+Track Art: WP
 Duration: 2:27
 URLs:
 - https://homestuck.bandcamp.com/track/olive-scribe
@@ -134,7 +140,7 @@ Commentary:
 -------------------------------------------------------------------------------
 Track: Indigo Archer
 Artist: Rachel Rose Mitchell
-Track Art: Chelsea Thomas
+Track Art: Toguchidraws
 Duration: 4:42
 URLs:
 - https://homestuck.bandcamp.com/track/indigo-archer
@@ -146,7 +152,7 @@ Track Art: Asiul
 Duration: 3:50
 URLs:
 - https://homestuck.bandcamp.com/track/purple-tyrant
-- https://youtu.be/tcFOqqCWao8?list=PLnVpmehyaOFYiRW0x2OrqmeDZZp4rQHEV
+- https://youtu.be/DfbLS-W0V9A?list=PLnVpmehyaOFYiRW0x2OrqmeDZZp4rQHEV
 -------------------------------------------------------------------------------
 Track: Violet Mariner
 Artist: Willow Ascenzo
@@ -163,16 +169,19 @@ Commentary:
     Violet Mariner was the first song I started working on for the Homestuck music contest that eventually became the coloUrs and mayhem dual album. It’s a song about Dualscar—but it wasn’t always a song about Dualscar. No, it started out as a song about John. This explains the harp/piano section, which plays with the opening melody to Showtime, vaguely darting near it without ever actually producing the exact notes from Malcolm Brown’s original song. I intended it to be more of a hint of John’s original strife theme than a direct reference. In hindsight, keeping the references to existing Homestuck leitmotifs subtle was a smart idea. If I’d been more overt in my references and just made it a straight-up Doctor remix or an explicit arrangement of Showtime, it would have been really hard to reallocate it to a different character. And I’m happy that Violet Mariner is a Dualscar song. Dualscar needs more songs. And also it gave Radiation an excuse to almost name it “Violet Seaman”. And besides, it means I still technically haven’t used the original title, Heirstrike, yet.
 -------------------------------------------------------------------------------
 Track: Fuchsia Ruler
-Artist: Sinister Psyche
+Artist: Kezinox
 Track Art: Mel
 Duration: 4:07
 Refrences: Liquid Negrocity, twoward2 the heaven2
 URLs:
 - https://homestuck.bandcamp.com/track/fuchsia-ruler
 - https://youtu.be/AgOGQVszHbY?list=PLnVpmehyaOFYiRW0x2OrqmeDZZp4rQHEV
+- https://soundcloud.com/kezinox/witching-hour
 Commentary:
-    <i>Sinister Psyche:</i>
+    <i>Kezinox:</i>
     Obviously with a name like Witc)(ing )(our, this song is for the condesce/batterwitch/etc. I always figured a sexy psychotic space empress bent on universal domination needed an over-the-top evil, but also dance-able track. I’d actually been planning to do a song like this for her for quite a while since she’s one of—if not my favorite—characters. Every 30 seconds or so represents a time in the Condesce’s life as we know it up to now and, while the song is almost wholly original, I did pull a few minor, but very recognizable things from songs like liquid negrocity and Twoard2 the Heaven2 to help really nail the connection.
+    (<a href="https://soundcloud.com/kezinox/witching-hour">SoundCloud</a>)
+    This is my song entry for the Homestuck Music Contest--essentially a dark electro house song for the Condesce. On a technical level this song more or less represents the culmination of all the practice and knowledge I've gained from working with music up until now.
 -------------------------------------------------------------------------------
 Track: ~~SIDE 2~~
 Artist: Toby Fox
@@ -208,14 +217,26 @@ Duration: 0:57
 URLs:
 - https://homestuck.bandcamp.com/track/bronze-page
 - https://youtu.be/2ZmG8q5z1XE?list=PLnVpmehyaOFYiRW0x2OrqmeDZZp4rQHEV
+Lyrics:
+    There is a land that I know, it is real and not just make believe<br>One where friends will defend one another to the end, and you never have to leave
+    A boy with the love in his heart, 'boldened by the courage in his soul<br>He will fight for the rights of the fairies and the sprites, a hero among trolls
+    You sitting there watching troll TV, get on up and come with me!<br>Adventure lies and soon you will be, watching Fiduspawn!
 -------------------------------------------------------------------------------
 Track: Gold Mage
-Artist: repeatedScales
+Artist: Decon Theed
 Track Art: Prassio
 Duration: 3:30
 URLs:
 - https://homestuck.bandcamp.com/track/gold-mage
 - https://youtu.be/IY9mF06ZVFI?list=PLnVpmehyaOFYiRW0x2OrqmeDZZp4rQHEV
+- https://soundcloud.com/103_records/repeatedscales-gold-mage-2011
+Commentary:
+    <i>Decon Theed:</i>
+    Yes, I'm still amused by the fact that the comments on the most popular YouTube upload of this song essentially consist of nothing but "THIS REMINDS ME OF X GAME".
+    And not one of them has ever guessed Baten Kaitos, which provided the primary sources of inspiration for this track (the two Chaotic Dance songs: <a href="https://www.youtube.com/watch?v=_B64f48ewdo">link</a> - <a href="https://www.youtube.com/watch?v=6ftFQ_ToXvA">link</a>). Absolute madness.
+    So. Gold Mage. Originally known as "Playtime is Over" and written for Dirk Strider before being repurposed to Sollux. Probably my most successful song, before I wrote that remix of Amalgum from Undertale. The very first piece of music I ever made money on.
+    I shan't lie; I'm not as fond of this song as I used to be. Not because of the Homestuck connection or anything; simply because it's just too repettitive. Enough so that it lead to why the eventual remix of it turned out the way it did (too busy and cluttered in places - [[track:gold-mage-playtime-is-over-mix]]) It was so with purpose; I did intend for lyrics to go over this- I even wrote a few- but never recorded anything. But honestly, I can't quite bring myself to hate it. The chords are quite nice, what melodies there are + the basslines are pretty slick, and it was my first major musical success. Though the royalties have since slowed way, way down- it's like £10 every four months, if that- it was a major deal when it first dropped as a part of coloUrs & mayhem: Universe A. Even Toby Fox and (assuming I'm not misremembering entirely) Andrew Hussie had nice things to say about it- directly comarping it to EarthBound-type stuff and being astounded it was written, from the ground up, in a PS1 game.
+    I may not be much into Homestuck these days, and I definitely think the song is showing it's age... but, hell, it's special to me all the same. One of the most integral pieces of my early music career by a wide margin.
 -------------------------------------------------------------------------------
 Track: Iron Knight
 Artist: DJ最テー
@@ -228,7 +249,7 @@ URLs:
 Track: Olive Rogue
 Artist: Eston Schweickart
 Contributors: Alex Amlie-Wolf (bass)
-Track Art: Mingmingfurb
+Track Art: Grim Harlequin
 Duration: 4:57
 URLs:
 - https://homestuck.bandcamp.com/track/olive-rogue
@@ -244,7 +265,7 @@ URLs:
 -------------------------------------------------------------------------------
 Track: Teal Seer
 Artist: Kera Jones
-Track Art: Bloodredbites
+Track Art: Sangcoon
 Duration: 2:32
 URLs:
 - https://homestuck.bandcamp.com/track/teal-seer
@@ -260,14 +281,14 @@ URLs:
 -------------------------------------------------------------------------------
 Track: Indigo Heir
 Artist: Paul Tuttle Starr
-Track Art: Rebecca Ryberg
+Track Art: Erupan
 Duration: 5:00
 URLs:
 - https://homestuck.bandcamp.com/track/indigo-heir
 - https://youtu.be/tdzG9kkxGt8?list=PLnVpmehyaOFYiRW0x2OrqmeDZZp4rQHEV
 -------------------------------------------------------------------------------
 Track: Purple Bard
-Artist: Gec
+Artist: Eligecos
 Track Art: Brianne
 Duration: 3:08
 URLs:
@@ -325,7 +346,7 @@ Lyrics:
 -------------------------------------------------------------------------------
 Track: Superego
 Artist: Yan Rodriguez
-Track Art: Kajoi
+Track Art: Kajoinen
 Duration: 2:58
 URLs:
 - https://homestuck.bandcamp.com/track/superego
diff --git a/album/coloUrs-and-mayhem-universe-b/album.txt b/album/coloUrs-and-mayhem-universe-b/album.txt
index 5b129fc5..c21651a6 100644
--- a/album/coloUrs-and-mayhem-universe-b/album.txt
+++ b/album/coloUrs-and-mayhem-universe-b/album.txt
@@ -225,7 +225,7 @@ URLs:
 - https://youtu.be/05nEUculjxM?list=PLD729D6C2BFB4844C
 -------------------------------------------------------------------------------
 Track: Ohgodcat
-Artist: Gec
+Artist: Eligecos
 Track Art: Shelby Cragg
 Duration: 2:22
 URLs:
@@ -392,7 +392,7 @@ References:
 - Doctor
 - Lifdoff
 - Harlequin
-- Tocatta and Fugue in D minor
+- Toccata and Fugue in D minor
 Commentary:
     <i>James Roach:</i>
     As a lot of you know, my track Pipeorgankind was featured in last night's Flash! I used melodies and themes from several talented musicians to create this track, and orchestrated/arranged them for fun! I never thought it would become anything!
diff --git a/album/lofam/album.txt b/album/lofam/album.txt
index e389de65..2ab2e0ba 100644
--- a/album/lofam/album.txt
+++ b/album/lofam/album.txt
@@ -287,14 +287,14 @@ Commentary:
     My first attempt at drawing any of the carapace people in full, basically. Serenity rapidly became my favourite character ever to draw, closely followed by Citizen Beans. I kid. Mostly.
 -------------------------------------------------------------------------------
 Track: Joker Strife
-Artist: Gec
+Artist: Eligecos
 Track Art: Brad Griffin
 Duration: 3:09
 URLs:
 - https://homestuckgaiden.bandcamp.com/track/joker-strife
 - https://youtu.be/EpifLARQWZk?list=PLVrrmdafwD4-cD2-ZeRtfnzvRpl2IsrQ0
 Commentary:
-    <i>Gec:</i>
+    <i>Eligecos:</i>
     This song was originally called Ghost Aqua. I created this song for a hypothetical strife theme for Gamzee. Though the song didn't start off that way.
     I dug this composition of mine from an old MIDI and played around with it a lot. It has gone through many identities but with no real purpose. But one thing was certain that this song started off being a carnival boss sort of theme.
     After a few recent chagnes, I thought I should carry that carnival spirit back into the song and tailored it for Gamzee theme. But what really makes it a Gamzee song is the horn. Can't have a Gamzee song without it. Honk!
@@ -852,14 +852,14 @@ Commentary:
     The window outline is taken from the Christ Church cathedral in Oxford and originally depicts St Cecilia. Several million free-select clicks later, my wrist was dead and this was the result. The stark colour scheme is a result of trying to make it look suitably dramatic.
 -------------------------------------------------------------------------------
 Track: Final Stand
-Artist: Gec
+Artist: Eligecos
 Track Art: umibouzu
 Duration: 4:32
 URLs:
 - https://homestuckgaiden.bandcamp.com/track/final-stand
 - https://youtu.be/vSj-kLixKH8?list=PLVrrmdafwD4-cD2-ZeRtfnzvRpl2IsrQ0
 Commentary:
-    <i>Gec:</i>
+    <i>Eligecos:</i>
     I took the time to make this song sound like it was meant for a robust flash sequence. Really intense drum &amp; bass plus a few orchestral and electronic touches tie it all together.
     The origins of this song go back in the same manner as [[Joker Strife]]. Both of them evolved quite a bit since first compsing them in MIDI. What was really important for the changes in this version you hear is that it is made to sound like it belonged in Homestuck.
     So perhaps when we see that page with our heroes fighting Jack Noir locked in conflict, we can play this song in our heads.
diff --git a/album/lofam2/album.txt b/album/lofam2/album.txt
index cd6233e1..aca5585b 100644
--- a/album/lofam2/album.txt
+++ b/album/lofam2/album.txt
@@ -10,7 +10,7 @@ URLs:
 Commentary:
     <i>Liza Fletcher:</i>
     This album means a lot to me, for a lot of reasons. Not just because it represents literally months of planning, organization, rounds of messaging, upsets, drama, triumph and general hard work on the part of me and some very good friends of mine. Not just because we managed to get some of the top talent in the fandom to contribute not only music but track art. Not just because that talent includes music and art team members and the uniquely universally beloved superfan Dante Basco. Not just because that talent also includes many friends I love dearly, some of whom I got to know through this project.
-    No, this album is special to me because the original Land of Fans and Music holds a very dear place in my heart. It was the first album of Homestuck-related music I ever owned. I played it over and over, and read the album commentary until I damn near had it memorized. It was LoFaM which spurred me to stop lurking on the MSPA forums and dive headlong into the collective insanity we call Homestuck fandom. And right when I did so coincided with the start of the second fanmusic thread, and a guy named Underwater Basketweaving posting something he called Fighting Spirit. I downloaded it, loved it, and have been hip deep in collecting fanmusic - not just that already collected for my convenience in an album - ever since.
+    No, this album is special to me because the original [[album:lofam]] holds a very dear place in my heart. It was the first album of Homestuck-related music I ever owned. I played it over and over, and read the album commentary until I damn near had it memorized. It was LoFaM which spurred me to stop lurking on the MSPA forums and dive headlong into the collective insanity we call Homestuck fandom. And right when I did so coincided with the start of the second fanmusic thread, and a guy named Underwater Basketweaving posting something he called Fighting Spirit. I downloaded it, loved it, and have been hip deep in collecting fanmusic - not just that already collected for my convenience in an album - ever since.
     Fighting Spirit is in here, and its sequel, and many others I and my compatriots ran across in our scouring of not only the fanmusic thread but tindeck, soundcloud, tumblr and basically anywhere on the big wide internet where MSPA fans celebrate their love of this remarkable work of fiction through music.
     It's my hope that, having gathered it all here for your convenience, you too are spurred to start your own search for the best, including many pieces that for one reason or another we had to leave off. The Land of Fans and Music is not just this 2-disc set or its predecessor; they're only the tip of the vast landscape of amazing talent. Come in. Explore. Get lost in it, like I did. I haven't regretted it for a second.
     <hr>
@@ -61,7 +61,7 @@ URLs:
 - https://youtu.be/QQoiR0npnSs?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Charles Neudorf:</i>
-    Jackpot was originally "written" by me for the Homestuck music contest. I say written in quotation marks because at the time all I had was a cool basline and a title, I was in a complete musical slump on what to do with the piece, and so I turned to my friend Shadolith for help. Shadolith not only helped to come up with better ideas for the song, but actually finished most if it on her own. I'm really glad she did though, otherwise the song would have never been finished, and it wouldn't be playing in your ears right now!
+    Jackpot was originally "written" by me for the Homestuck music contest. I say written in quotation marks because at the time all I had was a cool bassline and a title, I was in a complete musical slump on what to do with the piece, and so I turned to my friend Shadolith for help. Shadolith not only helped to come up with better ideas for the song, but actually finished most if it on her own. I'm really glad she did though, otherwise the song would have never been finished, and it wouldn't be playing in your ears right now!
     <i>8bitkitten:</i>
     Here's my track art for "Jackpot"! It's a Roxy strife theme, and since we have yet to witness such an event in Homestuck, let's make believe. ;3
 -------------------------------------------------------------------------------
@@ -75,7 +75,7 @@ URLs:
 - https://youtu.be/RCPevVDN7xE?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Joe Ouellet:</i>
-    Before making this song, I had wanted to do a remix of Doctor for a while. There are so many remixes and different versions of this song that I knew there were infinite possibilities when it came to remixing the song. When it finally came time to start, I wanted to go for the <i>spacey</i>, electronic, <i>hardcore</i> sounding style that I attempted a little bit with [[Electrocumulus]]. This song actually turned out much better than I expected. When confronted for a name for this piece, I wanted ot name it something like "Planet Healer." I decided to just swap out a few synonyms and voila, Satellite Physician was done!
+    Before making this song, I had wanted to do a remix of Doctor for a while. There are so many remixes and different versions of this song that I knew there were infinite possibilities when it came to remixing the song. When it finally came time to start, I wanted to go for the <i>spacey</i>, electronic, <i>hardcore</i> sounding style that I attempted a little bit with [[Electrocumulus]]. This song actually turned out much better than I expected. When confronted for a name for this piece, I wanted to name it something like "Planet Healer." I decided to just swap out a few synonyms and voila, Satellite Physician was done!
     <i>grayscaleOdyssey:</i>
     This track and cover art was featured in the Homestuck/Zelda fan adventure, Legend of Homestuck, as John's theme.
 -------------------------------------------------------------------------------
@@ -110,7 +110,7 @@ Commentary:
     <i>Florrie Haero:</i>
     (per [[LoFaM 4 standard:jungle-3]], ive highlighted commentary from people besides the original musicians or cover artists in bold!)
     <i><b>Brad Griffin:</b></i>
-    <i>DUSK FALLS ACROSS A SAFFROWN MEADOW. A SINGLE BLADE OF CRABGRASS UNDULATES VOLUMINOUSLY AMIDST THE RAPTUROUS BREEZE, ONLY TO HALT ITS SWAY SUDDENLY AND CRUNCHINGLY AS IT IS CRASSLY CRUSHED UNDERFOOT BY AN IMMENSE FOOT (SPECIFICALLY THE UNDERNEATH PART OF THAT FOOT). THE OWNER OF THE AFOREMENTIONED FOOT LOOKS DOWNWARD WITH AN AIR OF BAFFLED ASTONISHMENT< IN A SIMILAR FASHION TO HOW A MOOSE CAUGHT IN A UFO TRACTOR BEAM MIGHT LOOK AT A BLADE OF CRABGRASS IT HAD JUST TRODDEN ON. THIS ISN'T A SIMILE.</i>
+    <i>DUSK FALLS ACROSS A SAFFROWN MEADOW. A SINGLE BLADE OF CRABGRASS UNDULATES VOLUMINOUSLY AMIDST THE RAPTUROUS BREEZE, ONLY TO HALT ITS SWAY SUDDENLY AND CRUNCHINGLY AS IT IS CRASSLY CRUSHED UNDERFOOT BY AN IMMENSE FOOT (SPECIFICALLY THE UNDERNEATH PART OF THAT FOOT). THE OWNER OF THE AFOREMENTIONED FOOT LOOKS DOWNWARD WITH AN AIR OF BAFFLED ASTONISHMENT, IN A SIMILAR FASHION TO HOW A MOOSE CAUGHT IN A UFO TRACTOR BEAM MIGHT LOOK AT A BLADE OF CRABGRASS IT HAD JUST TRODDEN ON. THIS ISN'T A SIMILE.</i>
     <i>"EUUUUUUUUNGH," GROANS THE ABDUCTEE MOOSE AS IT RISES.</i>
 -------------------------------------------------------------------------------
 Track: Rectify
@@ -135,7 +135,7 @@ URLs:
 Commentary:
     <i>Brad Griffin:</i>
     The rabbit has been an evolving background character throughout the entirety of Homestuck, and I felt the most recent iteration (mischevious-robo-Strider-bunny!!!!) warranted its own theme song.
-    I started the track seeing just how far I could get using bouncy sound effects, record scratches and beeps. The goal was something high-energy but also a bit campy. I tried to give it a similar feel to one of the Beatdown tracks. I got a lot of great feedback from my music buds, and it evolved int othe track you hear now.
+    I started the track seeing just how far I could get using bouncy sound effects, record scratches and beeps. The goal was something high-energy but also a bit campy. I tried to give it a similar feel to one of the Beatdown tracks. I got a lot of great feedback from my music buds, and it evolved into the track you hear now.
     The hardest part was deciding between RamBUNNctious and RABBunctious.
     <i>Dawn Davis:</i>
     I love Lil Seb he's my baby.<br>I'm proud of this it was really fun to do =w=
@@ -152,7 +152,7 @@ Commentary:
     <i><b>Brad Griffin:</b></i>
     NO COMMENTARY HERE!
     <i>continued from [[Cuddlefish]];</i>
-    <i>AN EERILY IRRIDESCENT INCANDESCENCE ENVELOPS THE BEHEMOTH ELK AS IT JOURNEYS HEAVENWARD, UNWILLINGLY ABANDONING THE FLATTENED DIGITARIUM STRAND IN FAVOUR OF THE CHILL EMPTINESS OF THE FRIGID EVENING ATMOSPHERE. DEER-TICKS ATTEMPT TO EVACUATE THEIR MANGY HOST, ONLY TO FIND THEMSELVES DRAWN CONGRUENTLY SKYWARD. OAK-LIKE LIMBS THRASH FLACIDLY, FLAILING FRUITLESSLY FOR A FOOTHOLD, BUT FINDING FEWER THAN FEW. AFTER A SCANT MOMENT OF MOOSE DESPAIR, THE HULKING BEAST RESIGNS ITSELF TO INEVITABILIT, AND CEASES ITS STRUGGLE.</i>
+    <i>AN EERILY IRRIDESCENT INCANDESCENCE ENVELOPS THE BEHEMOTH ELK AS IT JOURNEYS HEAVENWARD, UNWILLINGLY ABANDONING THE FLATTENED DIGITARIUM STRAND IN FAVOUR OF THE CHILL EMPTINESS OF THE FRIGID EVENING ATMOSPHERE. DEER-TICKS ATTEMPT TO EVACUATE THEIR MANGY HOST, ONLY TO FIND THEMSELVES DRAWN CONGRUENTLY SKYWARD. OAK-LIKE LIMBS THRASH FLACIDLY, FLAILING FRUITLESSLY FOR A FOOTHOLD, BUT FINDING FEWER THAN FEW. AFTER A SCANT MOMENT OF MOOSE DESPAIR, THE HULKING BEAST RESIGNS ITSELF TO INEVITABILITY, AND CEASES ITS STRUGGLE.</i>
     <i>AS IF SENSING THE CHANGE IN THE CAPTIVE CREATURE'S DEMEANOR, THE ASCENT SEEMS TO STEADY AND SWIFTEN.</i>
 -------------------------------------------------------------------------------
 Track: Good Dog (Best Friend)
@@ -168,7 +168,7 @@ Commentary:
     ~ in loving memory of becquerel ~
     He was a good dog, and the best friend anyone could ever hope to have.
     <i>Christina Lillard:</i>
-    I was inspired by the pesterlog on <a href="https://homestuck.com/story/4858">page <s>6758</s> 4858</a>. Even thuogh I had heard this track long before that update, when I listened to it again to get an idea for what kind of track art I'd like to draw for it, all I could think of was that pesterlog about alpha Jade.
+    I was inspired by the pesterlog on <a href="https://homestuck.com/story/4858">page <s>6758</s> 4858</a>. Even though I had heard this track long before that update, when I listened to it again to get an idea for what kind of track art I'd like to draw for it, all I could think of was that pesterlog about alpha Jade.
 -------------------------------------------------------------------------------
 Track: Unforgiving Terrain
 Artist: Eston Schweickart
@@ -186,7 +186,7 @@ URLs:
 - https://youtu.be/I0THAb_V18A?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Eston Schweickart:</i>
-    I wrote Unforgiving Terrain shortly after The Wanderers album came out. It was just an excuse to have fun with sound design and listen to Carapacian Dominion over and over. It's called Unforgiving Terrain because titles are hard. The project file is called <i>Frozen Ruins</i> but I guess I didn't use that name because I ended up not including Frost like I had planned.
+    I wrote Unforgiving Terrain shortly after [[album:the-wanderers]] album came out. It was just an excuse to have fun with sound design and listen to Carapacian Dominion over and over. It's called Unforgiving Terrain because titles are hard. The project file is called <i>Frozen Ruins</i> but I guess I didn't use that name because I ended up not including [[track:frost-vol6]] like I had planned.
     <i>Cap:</i>
     After the original art file crashed like a piping hot baby on a meteor, I decided to create an Egyptian hieroglyphic-ish piece for this song because you know, DESERTS and WANDERERS and WOW JUST GOSH. But I also wanted to add in some of WV's little cahlk drawings too because it's cute! I mean, come on. Look at them, being happy and carefree and unaware. Yes, I know deep in my heart that this story will have a very happy end. No doubts about it. *insert evil laughter here*
 -------------------------------------------------------------------------------
@@ -210,12 +210,12 @@ Lyrics:
     Criminal, Criminal! To the window!<br>Criminal, Criminal! It's your fault, you know.<br>Criminal, Criminal! It's your time to go.<br>I'll secure the rope and you're out with a throw.
 Commentary:
     <i>Rachel Rose Mitchell:</i>
-    L3T TH1S B3 4 L3SSON TO 4LL OF TH3 PROSP3CT1V3 CR1M1N4LS OUT TH3R3
-    1 4M 4LW4YS W4TCH1NG
-    F1GUR4T1V3LY
-    &gt;:]
-    &gt;:]
-    &gt;:]
+    <code style="color: #008282">L3T TH1S B3 4 L3SSON TO 4LL OF TH3 PROSP3CT1V3 CR1M1N4LS OUT TH3R3</code>
+    <code style="color: #008282">1 4M 4LW4YS W4TCH1NG</code>
+    <code style="color: #008282">F1GUR4T1V3LY</code>
+    <code style="color: #008282">&gt;:]</code>
+    <code style="color: #008282">&gt;:]</code>
+    <code style="color: #008282">&gt;:]</code>
 -------------------------------------------------------------------------------
 Track: Squiddles In Sunglasses
 Artist: Eston Schweickart
@@ -227,7 +227,7 @@ URLs:
 - https://youtu.be/Cf9oKcZ2nPA?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Eston Schweickart:</i>
-    Squiddles in Sunglasses was originally part of a 6-part Homestuck medley that as going tobe around 12 minutes long when finished. Halway through I realized that I didn't like anything  was writing, so I did what any good artist does when faced with self-doubt and gave up. A few months later I listened to the old project files again and liked this part enough to make it its own piece. I think inspiration for this style came from Average White Band's <i>Pick Up the Pieces</i> but I acn't remember for sure.
+    Squiddles in Sunglasses was originally part of a 6-part Homestuck medley that as going to be around 12 minutes long when finished. Halfway through I realized that I didn't like anything I was writing, so I did what any good artist does when faced with self-doubt and gave up. A few months later I listened to the old project files again and liked this part enough to make it its own piece. I think inspiration for this style came from Average White Band's <i>Pick Up the Pieces</i> but I can't remember for sure.
 -------------------------------------------------------------------------------
 Track: JackBot
 Artist: Astro Kid
@@ -241,7 +241,7 @@ Commentary:
     <i><b>Brad Griffin:</b></i>
     NO COMMENTARY HERE!
     <i>continued from [[Skaian Starstorm]]...</i>
-    <i>AS THE ANTLERED ALCES ACCELERATES ITS ASCENSION, ABJECT AWE ASSUAGES ANXIOUSNESS. IT IS DAZZLED BY THE GOLDEN TUNDRA STRETCHING BEYOND THE MOONLIT HORIZON, CUMULUS CLOUds STreAKING BY LIKE A NUDE ATTENTION SEEKER AT A SPORTS MATCH. AS IF COMPLETING THE METAPHOR, THERE IS ALSO A NUDE MAN FLOATING ALONGSIDE.</i>
+    <i>AS THE ANTLERED ALCES ACCELERATES ITS ASCENSION, ABJECT AWE ASSUAGES ANXIOUSNESS. IT IS DAZZLED BY THE GOLDEN TUNDRA STRETCHING BEYOND THE MOONLIT HORIZON, CUMULUS CLOUds STREAKING BY LIKE A NUDE ATTENTION SEEKER AT A SPORTS MATCH. AS IF COMPLETING THE METAPHOR, THERE IS ALSO A NUDE MAN FLOATING ALONGSIDE.</i>
     <i>"Well, hiya!" EXCLAIMS THE RUDELY PROTRUDING GENT, WITH UNNERVINGLY BOISTEROUS VIGOR.</i>
     <i>"MMMRNGUUUUH," RESPONDS OUR HOVED HERO, IN KIND.</i>
     <i>"Quite a view, eh?"</i>
@@ -261,7 +261,7 @@ Commentary:
     one day I found a guitar thing and messed around with crystalanthemums
     that's it
     <i>dodostad:</i>
-    I thought about drawing Vriska andAradia, but somehow this song reminded me of Jade. I don't remember seeing much art of her and Bec so I thought I'd fix that!
+    I thought about drawing Vriska and Aradia, but somehow this song reminded me of Jade. I don't remember seeing much art of her and Bec so I thought I'd fix that!
 -------------------------------------------------------------------------------
 Track: The Ballad of Maplehoof
 Artist: Ian White, Lauren Collis, Mike Anderson
@@ -291,7 +291,7 @@ Lyrics:
     <small>(hyah!)</small>
 Commentary:
     <i>Ian White:</i>
-    I wrote these lyrics around the time that Maplehoof died in-story. I didn't put it ot music though until after she had been revived as Minihoof. Kinda saps the poignancy right out of it. The lovely Lauren Collis sings vocals and the ever-punctual Mike Anderson provides the real life guitars. Sound effects provided by Mother Nature!
+    I wrote these lyrics around the time that Maplehoof died in-story. I didn't put it to music though until after she had been revived as Minihoof. Kinda saps the poignancy right out of it. The lovely Lauren Collis sings vocals and the ever-punctual Mike Anderson provides the real life guitars. Sound effects provided by Mother Nature!
 -------------------------------------------------------------------------------
 Track: Rainbow Rebirth
 Artist: David Ellis
@@ -303,7 +303,7 @@ URLs:
 - https://youtu.be/ziiK_Q23WbA?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Davlid Ellis:</i>
-    This piece was written for Kanaya and was essentially supposed to be a kind of score for the unseen scene where she wakes up as a rainbow drinker. The non-scene this is a score for follows the structure of '[S] John: Rise Up' somewhat, with the middle horn stab section hinting towards one of the themes from Savior of the Waking World/Doctor but being off somehow (shifting time signatures too) to try to show the different nature of her return. The scene for the piece ends when she goes all vampirey on Feferi.
+    This piece was written for Kanaya and was essentially supposed to be a kind of score for the unseen scene where she wakes up as a rainbow drinker. The non-scene this is a score for follows the structure of [[flash:3087]] somewhat, with the middle horn stab section hinting towards one of the themes from Savior of the Waking World/Doctor but being off somehow (shifting time signatures too) to try to show the different nature of her return. The scene for the piece ends when she goes all vampirey on Feferi.
     Rejected alternate title: 'All the colours of the rainbow (are delicious)'
     <i>Maddie Haines:</i>
     I saw the name Rainbow Rebirth and immediately wanted to do something cool with Kanaya and her fairly new rainbow drinker status, since I was pretty dang sure that was what the title was referencing. Since it was her care for the matriorb that led up to her transformation, I thought it made the most sense to include it, as well as rainbow colors, obviously, into this picture.
@@ -351,9 +351,9 @@ Lyrics:
     I wanted so much more<br>than a game we were born to lose<br>I wanted so much more<br>so much more for you
 Commentary:
     <i>horzion:</i>
-    Flare has always struck a place in my heart, for many reasons. Plazmataz has always, always impressed me, but Flare just evoked something simply rawin the depths of my mind; I knew then that I had to use that feeling as a kind of empathy towards the Beta kids. Though it was used in a specific moment in canon, I chose to write lyrics from the point of view I could most appreciate -- the pain associated with love when life hands you something you don't know how to survive.
+    Flare has always struck a place in my heart, for many reasons. Plazmataz has always, always impressed me, but Flare just evoked something simply raw in the depths of my mind; I knew then that I had to use that feeling as a kind of empathy towards the Beta kids. Though it was used in a specific moment in canon, I chose to write lyrics from the point of view I could most appreciate -- the pain associated with love when life hands you something you don't know how to survive.
     <i>PV:</i>
-    I have been listening to Horizon's renditions of Homestuck music with her lyrics for a while now, and Flare has always been my favorite one she did. I hoped I could make a picture that represents the feeling of closeness beween the four kids ingetting through the game that I feel in the words she wrote.
+    I have been listening to Horizon's renditions of Homestuck music with her lyrics for a while now, and Flare has always been my favorite one she did. I hoped I could make a picture that represents the feeling of closeness beween the four kids in getting through the game that I feel in the words she wrote.
 -------------------------------------------------------------------------------
 Track: Sports
 Artist: Jamie Paige Stanley
@@ -439,7 +439,7 @@ URLs:
 - https://youtu.be/3d0jm_sPD9A?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Charles Neudorf:</i>
-    Soulb0t was conceived after I tried writing the familiar Psych0ruins apreggio to test out a new synth I downloaded. It sounded really cool to me, so I figured "why not just write an electronic remix of Psych0ruins all together." So I did just that. It took a while to get the melody jsut right, and if it wasn't for the various friends who helped me to decide what osunded good or bad, this song wouldn't have sounded nearly as good.
+    Soulb0t was conceived after I tried writing the familiar Psych0ruins apreggio to test out a new synth I downloaded. It sounded really cool to me, so I figured "why not just write an electronic remix of Psych0ruins all together." So I did just that. It took a while to get the melody just right, and if it wasn't for the various friends who helped me to decide what sounded good or bad, this song wouldn't have sounded nearly as good.
 -------------------------------------------------------------------------------
 Track: Fighting Spirit
 Artist: Kevin Grant
@@ -481,7 +481,7 @@ URLs:
 - https://youtu.be/M_lXyhRBOhk?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Thomas Ibarra:</i>
-    Irradiated is really an identifying track for my work, I've been told before that this track is the first that came to mind when mentioning my callsign SparksD2145. Similarly to a good portion of my work Black/Liquid Negrocity's leitmotif plays a prominent feature in the composition, providing the base melody for the entire track. The idea for Irradiated spurred from Jade: Enter, as a high-velocity and energetic track with none other than Jack Noir at the center; my goal was to take Black and give it a different feel. After a short hiatus, my track Irradiated featured in my first tribute animation <a href="https://youtu.be/hnG10rk91qg">on YouTube</a> for Homestuck.
+    Irradiated is really an identifying track for my work, I've been told before that this track is the first that came to mind when mentioning my callsign SparksD2145. Similarly to a good portion of my work Black/Liquid Negrocity's leitmotif plays a prominent feature in the composition, providing the base melody for the entire track. The idea for Irradiated spurred from [[flash:2927]], as a high-velocity and energetic track with none other than Jack Noir at the center; my goal was to take Black and give it a different feel. After a short hiatus, my track Irradiated featured in my first tribute animation <a href="https://youtu.be/hnG10rk91qg">on YouTube</a> for Homestuck.
     <i>Spectrumfizz:</i>
     Irradiated is among the first Homestuck fanmusic tracks I ever heard, so I was very pleased to be able to create art to accompany it on LOFAM2. I decided to draw inspiration from AutoDevote's first HS fanimation, which to this day remains one of my favourite Homestuck videos. I'm not particularly apt at composition or shading or several other things, but I'm pretty happy with what I accomplished here.
 -------------------------------------------------------------------------------
@@ -519,11 +519,22 @@ URLs:
 Commentary:
     <i>Domble:</i>
     The original version of the track sounded nothing like this. What I want is for people who heard the first one to think, "wow, this guy really got less bad in a year." It references all the songs it originally did, whether in the same basic way (Courser, Ruins) or differently (Dawn of Man, the rose rap).
-    That one terrible LEGENDARY ENDLESS DVS SAX song I amde almost went on the album instead of this and I felt like paying tribute to it, so that's where the little sax rif came from.
+    That one terrible LEGENDARY ENDLESS DVS SAX song I made almost went on the album instead of this and I felt like paying tribute to it, so that's where the little sax rif came from.
     <i>Christina Lillard:</i>
-    I had the feeling that I had to met some pretty high expectations when I was called upon to draw this one, so I was pretty nervous about doing it. I spent a long time mulling over how I was going to go about drawing this track art after I completed the art for Stalemate. We don't know nearly as much about the denizens as we do about the kids or the trolls or even the carapacians, but I took what we do know about the beta kids' denizens and ran with it.
+    (<a href="https://hsfanmusic.skaia.net/post/39025832110/tiny-mayo-this-is-the-last-piece-of-track-art">Tumblr</a>)
+    I had the feeling that I had to meet some pretty high expectations when I was called upon to draw this one, so I was pretty nervous about doing it. I spent a long time mulling over how I was going to go about drawing this track art after I completed the art for Stalemate. We don't know nearly as much about the denizens as we do about the kids or the trolls or even the carapacians, but I took what we do know about the beta kids' denizens and ran with it.
+    There were actually a few goofs with the original composition of this drawing - Cetus’ tail was originally pointing to the left but I then decided that having it face the right would give the overall drawing more flow. Also in Hephaestus’ section of the art I had forgotten that Davesprite was injured when he went to him to get the Deringer repaired so for the longest time he had both wings at their full length. Not much to say about Typheus’ section; I had a good idea of what I was going to do with it fairly early on.
+    Echidna’s section is primarily inspired by the track art for Volume 8’s Bargaining with the Beast, as far as her design goes. I was originally going to include Jack to the right of Jade in that section, but I didn’t find anywhere to put him and I found that the composition looked just fine without him anyway! Although in this memo Jade says that Jack was with him when she was talking with Echidna and I really wanted to draw him, I just couldn’t make him fit. Perhaps I’ll try and remedy that if I ever make a high-resolution version of this!
+    I knew immediately that I wanted Echidna to be the main focus out of all the denizens because she’s really important in the story since she makes Jade promise to take all the planets, the consorts, the denizens, and everything to the alpha session even if it meant Jade had to die. Then there’s Typheus, who’s facing doomed John, and Hephaestus looking down on Davesprite and offering him <b>The Choice</b>, and Cetus swimming around in the seas of LOLAR, which is now devoid of fish.
+    I tried to make the sections flow together the best I could - the top areas where Cetus and Typheus’ sections blend into Hephaestus’ section kind of fade without any borders, but I decided to make little borders based on each kid’s aspect to separate each section from Echidna’s section. The breath and light symbols are done in an abstract manner while the time and space symbols are just the straight-up time and space symbols; the space one just overlaps the time one.
+    I think I’ve rambled enough about this piece of track art, so I’m going to let the rest speak for itself! I hope I’ve done a good enough job living up to the LOFAM2 team’s expectations, and if I’ve exceeded them, that’s great too!
+    This has been another rambling commentary from Lune.
+    (THIS TRACK ALSO CAUSED ME A LOT OF PAIN AND SUFFERING BUT IT WAS MORE LIKE “DEAR GOODNESS WHERE DO ALL THESE LAYERS KEEP COMING FROM” THAN “OH GOD HOW AM I GOING TO COLOR ALL THIS BLACK.”)
+    As another side note, the layered .lip file for this had a total of 60 layers not counting the texture layer!
+    BONUS: When I was starting work on this, instead of copying the texture layer, I accidentally copied Jack over from the layered version of the Stalemate track art. I couldn’t bear to delete him from the file, so he got to stay on the condition that his layer stayed invisible. Sometimes I’d make it visible when I was bored! Poor guy just keeps getting chased by things - first an angry PM and now an angry sea denizen!)
     <i><b>Brad Griffin:</b></i>
-    note: Lunise wrote seven paragraphs about the creative process behind this wonderful art piece. I can only fit the first one on the page.
+    <s>note: Lunise wrote seven paragraphs about the creative process behind this wonderful art piece. I can only fit the first one on the page.</s>
+    Here is the full commentary to the rise of the denizens track art. c:
 -------------------------------------------------------------------------------
 Track: Sburban Genesis
 Artist: Lark Mordancy
@@ -590,7 +601,7 @@ URLs:
 - https://youtu.be/yLL4-WYFO7Q?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Jamie Paige Stanley:</i>
-    Hello again!! Disk one is coming to a close. I hope you've enjoyed the fan land and of music so far!! This is a lullaby based mostly off of Homestuck Anthem by Clark "Plazmataz" Powell and Sburban Jungle by Michael Guy Bowman. It's really slowa nd sweet and has my favorite chord thingy ever which is the F to F minor thing going on there. It's all in all a song that you hopefully fall asleep listening to because that's what it's supposed to do!! And you might need a nap after listening to disk one. In fact, for the full Land of Fans and Musics Experience The Second™, take a nap in between the two disks. Yes. Anyways, I hope you enjoy our musical stylings and that you don't buy this album because that's illegal.
+    Hello again!! Disk one is coming to a close. I hope you've enjoyed the fan land and of music so far!! This is a lullaby based mostly off of Homestuck Anthem by Clark "Plazmataz" Powell and Sburban Jungle by Michael Guy Bowman. It's really slow and sweet and has my favorite chord thingy ever which is the F to F minor thing going on there. It's all in all a song that you hopefully fall asleep listening to because that's what it's supposed to do!! And you might need a nap after listening to disk one. In fact, for the full Land of Fans and Musics Experience The Second™, take a nap in between the two disks. Yes. Anyways, I hope you enjoy our musical stylings and that you don't buy this album because that's illegal.
     <i><b>Brad Griffin:</b></i>
     [END OF DISK 1]
 -------------------------------------------------------------------------------
@@ -626,7 +637,7 @@ Commentary:
     <i>Ian White:</i>
     This is... this is I don't know. I think Neudorf told me to do this, so I did it. It works pretty good.
     <i>doctoroftime:</i>
-    Te song was a Gamebro remix and I had just figured out that Bro Strider probably writes Gamebro so it was obvious that a <i>Professor Layton x Homestuck</i> crossover needde to happen. I looked at the covers of the Layton games and basically just went for it.
+    The song was a Gamebro remix and I had just figured out that Bro Strider probably writes Gamebro so it was obvious that a <i>Professor Layton x Homestuck</i> crossover needde to happen. I looked at the covers of the Layton games and basically just went for it.
     And because Professor Layton has tons of weird puzzle shit that no one ever questions and Homestuck is the exact same.
     Plus I wanted Bro in a nifty tophat and Dave in Lambda's snazzy sweater.
 -------------------------------------------------------------------------------
@@ -688,7 +699,7 @@ URLs:
 - https://youtu.be/13RA9z5S-MA?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Catboss:</i>
-    I've wanted to make a squel for MeGaDanceVaNia for a while, but only recently did I actually get around to it. Some songs are in here because they were in flashes; others are in here because they're my personal favorites, like Gaia Queen. And Infinity Mechanism is in there because Thomas once complained that no one remixed his songs, so THAT'S FOR YOU THOMAS.
+    I've wanted to make a sequel for MeGaDanceVaNia for a while, but only recently did I actually get around to it. Some songs are in here because they were in flashes; others are in here because they're my personal favorites, like Gaia Queen. And Infinity Mechanism is in there because Thomas once complained that no one remixed his songs, so THAT'S FOR YOU THOMAS.
     The full list of songs is <s>on the next page</s> below, so I'm just going to run over what I consider to be the hgihlights of this song:
     - Another Jungle + Let's All Rock The Heist
     - ELECTORSWING TROLLCOPS
@@ -732,7 +743,7 @@ Commentary:
     - 7:36 - [[Walk-Stab-Walk (R&E)]] &amp; [[Time on My Side]]
     - 8:57 - [[Cascade (Beta)]]
     - 9:20 - [[Flare]]
-    - 9:44 - [[Savior of the Dreaming Dead
+    - 9:44 - [[Savior of the Dreaming Dead]]
     - 10:07 - [[Black Hole / Green Sun]]
     - 10:53 - [[At The Price of Oblivion]]
 -------------------------------------------------------------------------------
@@ -745,7 +756,7 @@ URLs:
 - https://youtu.be/BzUmLUgjkdk?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Yan Rodriguez:</i>
-    Back when I had a far more depressing view on being trapped in the veil I wanted to make a short tune for it using a chrod progression I played on piano all the time and really wanted to use. Reminds me a bit of how some of the chords go in Shadow of the Colossus, but a lot less epic.
+    Back when I had a far more depressing view on being trapped in the veil I wanted to make a short tune for it using a chord progression I played on piano all the time and really wanted to use. Reminds me a bit of how some of the chords go in Shadow of the Colossus, but a lot less epic.
 -------------------------------------------------------------------------------
 Track: Til The Last Breath
 Artist: Brenden Cameron
@@ -762,10 +773,10 @@ Commentary:
     <i>Brenden Cameron:</i>
     Originally titled 'A Heroic Death', this song was my second entry into the Homestuck Fanmusic contest, as well as the second song I've ever released in general.
     My intention at the outset of the contest was to write a theme for Tavros, my patron Troll and a character who I thought would otherwise be under-represented among the competition. However, every time I sat down to work on the song, I found myself experimenting with several of John's themes instead. Eventually I relented and combined those experiments into a song for John.
-    Even though neither of my entries was selected for the contest album, I'm still immensely grateful ro the experience. The process of preparing my songs for the competition taught me a lot about music production and showed me some of the areas I might improve on in future (specifically: I need to stop quoting existing songs so much and focus on creating original melodies).
-    So again, thank you Andrew and everyone on the music team; both for that opportunity and for all your creative work which inspired me in the first place. Thanks Jit for offering some last minute advice (though I didn't get a chacne to implement half of those suggestions...). And, of course, thank you Liza and Xzaz for organizing this second Homestuck Fan Music Album; your dedication adn enthusiasm is truly an inspiration.
+    Even though neither of my entries was selected for the contest album, I'm still immensely grateful for the experience. The process of preparing my songs for the competition taught me a lot about music production and showed me some of the areas I might improve on in future (specifically: I need to stop quoting existing songs so much and focus on creating original melodies).
+    So again, thank you Andrew and everyone on the music team; both for that opportunity and for all your creative work which inspired me in the first place. Thanks Jit for offering some last minute advice (though I didn't get a chance to implement half of those suggestions...). And, of course, thank you Liza and Xzaz for organizing this second Homestuck Fan Music Album; your dedication and enthusiasm is truly an inspiration.
     <i>Racheme:</i>
-    This shows little John asking his odler self if they saved Dad from the game. I wanted to reflect some inner workings in John's mind, he still thinks about his only family rather than simply drawing him as powerful and never giving up like in most pictures.
+    This shows little John asking his older self if they saved Dad from the game. I wanted to reflect some inner workings in John's mind, he still thinks about his only family rather than simply drawing him as powerful and never giving up like in most pictures.
 -------------------------------------------------------------------------------
 Track: The Note Desolation Plays
 Artist: Max Wright
@@ -776,7 +787,7 @@ URLs:
 - https://youtu.be/-NOJYYn-V2Q?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Max Wright:</i>
-    This is quite an old piece of mine, written mid-January 2010. As the title suggests, I wanted to write something that represented the first act of Homestuck, to capture the feeling of the story as we are introduced to its darker elements - the Wind Skims the Void flash is a good example to use. That page is almost like a title screen for the webcomic as a whole, not giving away a thing, but nudging ever so slightly towards things to come; likewise, the repeating piano ostinato in here pays tribute to the Chrono Trigger title music. Little did we know at the time, though, how destructive the conductor's baton can be.
+    This is quite an old piece of mine, written mid-January 2010. As the title suggests, I wanted to write something that represented the first act of Homestuck, to capture the feeling of the story as we are introduced to its darker elements - the Wind Skims the Void flash ([[flash:82]]) is a good example to use. That page is almost like a title screen for the webcomic as a whole, not giving away a thing, but nudging ever so slightly towards things to come; likewise, the repeating piano ostinato in here pays tribute to the Chrono Trigger title music. Little did we know at the time, though, how destructive the conductor's baton can be.
     Here's hoping for a happy ending.
     <i>Fortnight:</i>
     First of all - I love this track, it sounds to me like the start of something new, with hope and high expectations thrown in. I drew this track art based off that mood and also the unnamed flash from Act 1, <a href="https://homestuck.com/story/82">page <s>1982</s> 82</a>.
@@ -856,7 +867,7 @@ URLs:
 - https://youtu.be/wXJ4nXAu2CM?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Willow Ascenzo:</i>
-    I got the idea for "Doghead" shortly after "Cascade" and Jade's incredible ascension. I set out to create something epic, fast-paced, and exciting, but once I'd finished the first part, I found it was missing something. So I approached MSPA forumite and fellow Homestuck fan musician D. Crystal to see if he could add some guitar and drum tracks. He was happy to oblige, and the endresult turned out much better than the work I could do by myself. I learned two lessons that one day: one, that two heads are better than one and collaboration is incredibly fun, and two, that electric guitars make everything better.
+    I got the idea for "Doghead" shortly after "Cascade" and Jade's incredible ascension. I set out to create something epic, fast-paced, and exciting, but once I'd finished the first part, I found it was missing something. So I approached MSPA forumite and fellow Homestuck fan musician D. Crystal to see if he could add some guitar and drum tracks. He was happy to oblige, and the end result turned out much better than the work I could do by myself. I learned two lessons that one day: one, that two heads are better than one and collaboration is incredibly fun, and two, that electric guitars make everything better.
 -------------------------------------------------------------------------------
 Track: Jane's Theme
 Artist: David Dycus
@@ -869,7 +880,7 @@ Commentary:
     <i>David Dycus:</i>
     Jane's theme was my third and final entry into the HS music contest, conceived and completed less than a day before I made my submission. It obviously didn't make the cut, and Jane ended up receiving a much more badass theme in the form of [[Cyan Beast]]. At the time when I wrote the song (around January 29, 2012), we really didn't know much about Jane beyond the fact that she was a nice girl who enjoyed baking. I tried to give her a theme that was quaint and melodic, not too energetic like my other submissions; compared to most of the other characters, Jane is very down-to-earth, which I admired. Structurally, it loosely parallels [[Fuchsia Witch]], which was originally titled "Jake's Theme."
     <i>positivelymorbid:</i>
-    When I first listened to it, I thought iwas a really calm, tranquil song, so I thought maybe Jane relaxing. The more I listened to it, the more adventurous it sounded. Then it hit me, why not Jane having a picnic in LOCAH, picnics are relaxing and adventurous. Overall, I enjoyed the song, and I really enjoyed drawing this art for it.
+    When I first listened to it, I thought it was a really calm, tranquil song, so I thought maybe Jane relaxing. The more I listened to it, the more adventurous it sounded. Then it hit me, why not Jane having a picnic in LOCAH, picnics are relaxing and adventurous. Overall, I enjoyed the song, and I really enjoyed drawing this art for it.
 -------------------------------------------------------------------------------
 Track: The Four Thrones
 Artist: Samm Neiland
@@ -891,7 +902,7 @@ Commentary:
     So this was done mostly as a self response to another fan track I did which was a minute or so long music box rendition of Showtime. While pretty, it hardly showcased my abilities as a musician or a producer. So in about the span of the week, I arranged, composed, and produced a traditional string quartet, heavily inspired by cellist and multitrack recording artist, Zoë Keating. All the recording was done with only my viola and my signature production style.
     I remember it being a week of musical hell for me, but I'm quite proud of the end results. Perhaps one day, I'll be able to rerecord it with a proper quartet. One can dream at least.
     <i>Reid Slater:</i>
-    I wanted to represent the beta kids reaching their godtier status while mixing in the royalty theme that Samm's song gave me. Samm said to me himself that he thought of the crowning scene in Narnia and the four thrones, and I thought it was suitable to represent them with crowns, holding the Skaia they influenced and looking content and almost relieved ine ach other's company. I wanted to create something happy and a little bitter-sweet, which was the feeling I got from Samm's track. And I wanted to show that sort of unity and frendship the kids hve, even after all they've been through.
+    I wanted to represent the beta kids reaching their godtier status while mixing in the royalty theme that Samm's song gave me. Samm said to me himself that he thought of the crowning scene in Narnia and the four thrones, and I thought it was suitable to represent them with crowns, holding the Skaia they influenced and looking content and almost relieved in each other's company. I wanted to create something happy and a little bitter-sweet, which was the feeling I got from Samm's track. And I wanted to show that sort of unity and friendship the kids have, even after all they've been through.
 -------------------------------------------------------------------------------
 Track: Jade Aubade
 Artist: Trent West
@@ -914,8 +925,8 @@ URLs:
 - https://youtu.be/kmnBn-BKAzg?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Rachel Rose Mitchell:</i>
-    When I amde Blood Knight, I was still pretty exhausted from putting Mechani% - now known as [[Indigo Archer]] - together. I'd never made anything as complex as Indigo Archer bfeore and on top of that I had massive anxieties about getting into the competition. I was stressed out! So Blood Knight nearly never happened.
-    About a week before the music contest ended, I was talking to my best friend and he said he thought I could make a kickass song for Karkat. I didn't really believe him at first. Karkat is one of my favourite characters and I didn't feel confident about capturing him at all. But my friend persisted and threw a few ideas at me. Eventually I found myself in Cubase making music again with my best friend to tahnk for it.
+    When I made Blood Knight, I was still pretty exhausted from putting Mechani% - now known as [[Indigo Archer]] - together. I'd never made anything as complex as Indigo Archer bfeore and on top of that I had massive anxieties about getting into the competition. I was stressed out! So Blood Knight nearly never happened.
+    About a week before the music contest ended, I was talking to my best friend and he said he thought I could make a kickass song for Karkat. I didn't really believe him at first. Karkat is one of my favourite characters and I didn't feel confident about capturing him at all. But my friend persisted and threw a few ideas at me. Eventually I found myself in Cubase making music again with my best friend to thank for it.
     Immediately, I knew it needed electric guitars. That was problematic for me as I'd never, ever gotten synthesized guitars to sound halfway decent before. Heck, I'm still not entirely sure how I managed it, but I'm super happy with how it turned out. The feel of it matches what I was going for; not quite metal, not quite a ballad, kind of melancholy but also kind of in your face. Sort of. You might be able to tell that I had an easier time making it than describing it, heh. Pretty darn proud of this piece.
 -------------------------------------------------------------------------------
 Track: In The Shadow of a Fractured Sun
@@ -927,7 +938,7 @@ URLs:
 - https://youtu.be/Mu93RembYqM?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Artisticpolo:</i>
-    Initially a [[Frost:frost-vol6]] remix but it became something else. The square-wave arpeggio that you hear is probably the only thing that is now reminiscent of that remix. It was because of the harp that this grew into something different. I actually composed this while the composition was playing. I would listen to the notes I had composed, and I would just place new notes where I think they would work while listening. Somehow, everything just seemed to fit together - the violins, the synths, the percussion - everything just worked. The structure of this composition just flowed. I'm pretty sure this is one of my bset pieces so far.
+    Initially a [[Frost:frost-vol6]] remix but it became something else. The square-wave arpeggio that you hear is probably the only thing that is now reminiscent of that remix. It was because of the harp that this grew into something different. I actually composed this while the composition was playing. I would listen to the notes I had composed, and I would just place new notes where I think they would work while listening. Somehow, everything just seemed to fit together - the violins, the synths, the percussion - everything just worked. The structure of this composition just flowed. I'm pretty sure this is one of my best pieces so far.
 -------------------------------------------------------------------------------
 Track: Red Miles
 Artist: David Dycus
@@ -953,10 +964,10 @@ URLs:
 - https://youtu.be/dod8eS9-JMc?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Willow Ascenzo:</i>
-    I wrote <i>Elegy for a Thief</i> back in August 2011, inspired by the evocative image of ghost-Vriska standing in the snow outside John's house. After re-arranging it into a solo piano piece, I sat on it for a while. Eventually I began to work on another remix, but forgot about it. Then the song was nominated for Land of Fans and Music 2, and I rushed to polish up the song now that I had better tools and more skill. But I'd lost the original file, and the only remaining part of the scrapped remix was the right-hand piano notes (luckily, those were the most important part of the song)! The new remix is exotic and a bit hypnotic, syumbolizing John and Vriska's journey through the sureal and fantastic memory-realms of the afterlife.
+    I wrote <i>Elegy for a Thief</i> back in August 2011, inspired by the evocative image of ghost-Vriska standing in the snow outside John's house. After re-arranging it into a solo piano piece, I sat on it for a while. Eventually I began to work on another remix, but forgot about it. Then the song was nominated for Land of Fans and Music 2, and I rushed to polish up the song now that I had better tools and more skill. But I'd lost the original file, and the only remaining part of the scrapped remix was the right-hand piano notes (luckily, those were the most important part of the song)! The new remix is exotic and a bit hypnotic, syumbolizing John and Vriska's journey through the surreal and fantastic memory-realms of the afterlife.
     <i>Cap:</i>
-    Originally, I planned to do a sentimental image of Vriska standing in the snow, but it turned out pretty lame. Then I figured hey, since I'm making somethin for a fantastic song for an amazing troll, why not make the piecea lmost as gr8t as her? So the snow idea melted and turned into this bizarre, dreambubble-ish creation!
-    Now imagine my surprise when I heard that Ascenzo later remixed the song and made it like 16,77,216 times cooler.
+    Originally, I planned to do a sentimental image of Vriska standing in the snow, but it turned out pretty lame. Then I figured hey, since I'm making somethin for a fantastic song for an amazing troll, why not make the piece almost as gr8t as her? So the snow idea melted and turned into this bizarre, dreambubble-ish creation!
+    Now imagine my surprise when I heard that Ascenzo later remixed the song and made it like 16,777,216 times cooler.
 -------------------------------------------------------------------------------
 Track: We Won't Wander Alone
 Artist: Land of Ships and Music
@@ -1013,7 +1024,7 @@ Commentary:
     <i>Willow Ascenzo:</i>
     I began "Finale Strife" as a long, slow-burning build-up song for the final battle with Lord English, in a similar vein to "Finale Toccata" from Castlevania: Symphony of the Night. That, however, didn't pan out, and it ended up turning into a fast-paced,  high-energy strife theme more in the vein of "The Curse of Sorrow" from Castlevania: Order of Ecclesia (the only Castlevania game I've actually come close to beating), especially the organ, electric guitar, and snappy drum kit. The main melody has some resemblance to the Black King's theme from [[Rex Duodecim Angelus]] by Malcolm Brown, but not enough to qualify as a remix or arrangement.
     <i>Ducky Senpai:</i>
-    I initially ahd no idea what I was going to do for this song. I skimmed through the tracks and noticed this one by Willow Ascenzo (who did some of my favorites on coloUrs and mayhem: Universe A like [[Teal Hunter]] and [[Violet Mariner]]), and I was instantly sold probably because of my love for pipe organs. Anyway, for a lack of better inspiration, I used the description Will left on soundcloud - "Final battle with Lord English." Tie that to Aranea's mentioning that Jake was destined to beat Lord English, and I had my inspiration. The lineart took much longer than it should have since my tablet had been freaking out and I haven't gotten the new one yet, but the coloring went quite smoothly.
+    I initially had no idea what I was going to do for this song. I skimmed through the tracks and noticed this one by Willow Ascenzo (who did some of my favorites on coloUrs and mayhem: Universe A like [[Teal Hunter]] and [[Violet Mariner]]), and I was instantly sold probably because of my love for pipe organs. Anyway, for a lack of better inspiration, I used the description left on soundcloud - "Final battle with Lord English." Tie that to Aranea's mentioning that Jake was destined to beat Lord English, and I had my inspiration. The lineart took much longer than it should have since my tablet had been freaking out and I haven't gotten the new one yet, but the coloring went quite smoothly.
 -------------------------------------------------------------------------------
 Track: Gangsta
 Artist: Dante Basco
@@ -1040,7 +1051,7 @@ URLs:
 - https://youtu.be/KlKvnXvJ5a8?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Fitzwibble:</i>
-    When I first heard this song, I got this sense of... I guess you could call it grand scale? Glrious grandscaliness? No wait that is dumb. I wanted to do something that captured that feeling, and it made me think of the panel where we see Prospit rising over the towers of the moon, and I could just imagine Jade flying around and marvelling at this amazing view. I hope I did the song justice!
+    When I first heard this song, I got this sense of... I guess you could call it grand scale? Glorious grandscaliness? No wait that is dumb. I wanted to do something that captured that feeling, and it made me think of the panel where we see Prospit rising over the towers of the moon, and I could just imagine Jade flying around and marvelling at this amazing view. I hope I did the song justice!
 -------------------------------------------------------------------------------
 Track: Guns Blazing
 Artist: Catboss
@@ -1051,8 +1062,8 @@ URLs:
 - https://youtu.be/nzXoB2hXYCw?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Catboss:</i>
-    The first song I made for the Homestuck contest, and IMO the best! It's supposed to be a Showtime for the new generaiton, a strife theme for Jake English - although the melody ended up sounding more like Dissension than Showtime. The progression is spposed to be Showtime-esque as well, starting from the piano refrain, going into a hciptune-esque portion, and finally building to a BOSS FIGHT version, using punchy drums (the punchiest!) to simulate gunshots.
-    So close your eyes and imagine Jake doing that thing where he flies through the air shooting both guns at once. Yes. So sweet. Wouldn't it be great if there were an aimated flash to go with it? That would be SUPER SWEET.
+    The first song I made for the Homestuck contest, and IMO the best! It's supposed to be a Showtime for the new generaiton, a strife theme for Jake English - although the melody ended up sounding more like Dissension than Showtime. The progression is spposed to be Showtime-esque as well, starting from the piano refrain, going into a chiptune-esque portion, and finally building to a BOSS FIGHT version, using punchy drums (the punchiest!) to simulate gunshots.
+    So close your eyes and imagine Jake doing that thing where he flies through the air shooting both guns at once. Yes. So sweet. Wouldn't it be great if there were an animated flash to go with it? That would be SUPER SWEET.
     (Bonus fun fact: the last 30 seconds of the song was actually the first part to be conceptualized!)
 -------------------------------------------------------------------------------
 Track: Showtime (Svix Mix)
@@ -1066,9 +1077,9 @@ URLs:
 Commentary:
     <i>Svix:</i>
     I created the first verison of my Showtime remix back in September 2009 shortly after I started getting into Homestuck, it seemed to go down well and a few months later I was invited to be part of the official music team.
-    Since then I feel that i have imrpoved significantly and so I've given the old remix a quick reworking. Whilst I think that structurally the track is a little too similar to the original and if I were to make another remix I would do things quite differently, this piece was the one which began to outline my chiptune style which I've since developed with my other Homestuck tracks. My main influences wit hthe chiptune are from the SID and Yamaha chips found in the C64 and Sega Mega Drive respectively, and as such many synth and percussive elements from each can be heard in my work.
+    Since then I feel that I have improved significantly and so I've given the old remix a quick reworking. Whilst I think that structurally the track is a little too similar to the original and if I were to make another remix I would do things quite differently, this piece was the one which began to outline my chiptune style which I've since developed with my other Homestuck tracks. My main influences with the chiptune are from the SID and Yamaha chips found in the C64 and Sega Mega Drive respectively, and as such many synth and percussive elements from each can be heard in my work.
     <i>PV:</i>
-    To fit a remix of one of my favorite Hoemstuck themes, I wanted to make the Strife scene between Dad and John in my own style, while still holding somewhat true to the original. A remix of the art as well as the song.
+    To fit a remix of one of my favorite Homestuck themes, I wanted to make the Strife scene between Dad and John in my own style, while still holding somewhat true to the original. A remix of the art as well as the song.
 -------------------------------------------------------------------------------
 Track: Ugly Story
 Artist: PhemieC
@@ -1095,7 +1106,7 @@ Commentary:
     <i>PhemieC:</i>
     This song chronicles Eridan's thought process and a bit of his history leading up to his death, and examines why he made the decisions he did. I think there's a lot to his character people normally forget and I just wanted to expand on his motivations a bit.
     <i>prismatic-void:</i>
-    The first time I heard the song I thought it described Eridan perfectly. It's about being left behind and distrusted by the only people he ever put faith in. He's angry and selfish and decides to forget about them in favor of his own goals. I wanted to show him essentially walking away from the ghosts of his pat and doing his best to ignore how much they've hurt him.
+    The first time I heard the song I thought it described Eridan perfectly. It's about being left behind and distrusted by the only people he ever put faith in. He's angry and selfish and decides to forget about them in favor of his own goals. I wanted to show him essentially walking away from the ghosts of his past and doing his best to ignore how much they've hurt him.
 -------------------------------------------------------------------------------
 Track: Dark Funk
 Artist: Kevin Grant
@@ -1117,7 +1128,7 @@ URLs:
 - https://youtu.be/_y_NODhJfDE?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Joe Ouellet:</i>
-    When given the chance ot make an extra track for LOFAM 2, I jumped at the opportunity. It turns out I was assigned a Felt realted track, specifically to Stitch. I wanted to stay true to the feel of the album The Felt. I used strings, light percussion, and most importantly, I messed around with teh tempo. This was a little bit of a challenge for me, but I think it turned outa lright. Fun fact; The glitchy effect was not on purpose, it was an export error I thought sounded cool so I kept it.
+    When given the chance to make an extra track for LOFAM 2, I jumped at the opportunity. It turns out I was assigned a Felt related track, specifically to Stitch. I wanted to stay true to the feel of the album [[album:the-felt]]. I used strings, light percussion, and most importantly, I messed around with the tempo. This was a little bit of a challenge for me, but I think it turned out alright. Fun fact; The glitchy effect was not on purpose, it was an export error I thought sounded cool so I kept it.
 -------------------------------------------------------------------------------
 Track: Ave Dei Novi
 Artist: Willow Ascenzo
@@ -1133,7 +1144,7 @@ URLs:
 - https://youtu.be/y3jkIF6yMkc?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Willow Ascenzo:</i>
-    When I started "Ave Dei Novi" (a song made just for Land of Fans and Music 2), I fully intended that it would be the biggest, strongest, most well-composed, best Homestuck fan composition I've workedo n tto date, a sort of capstone of Homestuck fan music. The first Land of Fans and Music had two of my early songs on it, and I felt it was appropriate that I do my best and show how far I'd come in a year for the second album. "Ave Dei Novi" takes its cue, partially, from the bombastic and incredible Gundam Unicorn soundtrack by Sawano Hiroyuki, especially in the orchestra and percussion grooves, which I worked very hard on. I think I'm most proud of the bongo groove breakdown in the middle and the "Atomyk Ebonpyre" section near the end. Those two parts ended up especially fantastic.
+    When I started "Ave Dei Novi" (a song made just for Land of Fans and Music 2), I fully intended that it would be the biggest, strongest, most well-composed, best Homestuck fan composition I've worked on to date, a sort of capstone of Homestuck fan music. The first Land of Fans and Music had two of my early songs on it, and I felt it was appropriate that I do my best and show how far I'd come in a year for the second album. "Ave Dei Novi" takes its cue, partially, from the bombastic and incredible Gundam Unicorn soundtrack by Sawano Hiroyuki, especially in the orchestra and percussion grooves, which I worked very hard on. I think I'm most proud of the bongo groove breakdown in the middle and the "Atomyk Ebonpyre" section near the end. Those two parts ended up especially fantastic.
     <i>xkoraxayomex:</i>
     Overall I feel that the artwork suits the piece in terms of relativity and presentation. I think it looks refined and somewhat detailed, but there is room for improvement. When I read the title for the piece, Ascension, I automatically thought back to Jade's god tier, as it is simply gorgeous and I just love it. It was a milestone for her becoming an even more essential character in Homestuck.
     <i><b>Lambda Bledsoe:</b></i>
@@ -1150,8 +1161,8 @@ Commentary:
     <i><b>Brad Griffin:</b></i>
     No commentary here!
     <i>continued from [[The Seer and the Tribesmen]]:</i>
-    <i>HE NAKED FELLOW INTRODUCES HISEMLF IN RETURN. OVERJOYED, BNORKEL BARKS UP A CLOUD OF PUNGENT INK. THIS STARTLES THE MOOSE, WHO PROCEEDS TO INSTINCTIVELY CHARGE THEM BOTH. A FLURRY OF ACTIVITY! ANTLERS FLASH, TENTACLES FLAIL, EXPOSED FLESH JUTS OFFENSIVELY.</i>
-    <i>AFTER A BRIEF BUT VIOLENT SCUFFLE, BNORKEL COWELS IN A MASS, LICKING HIS WOUNDED SUCKERS. AMIDST THE COMMOTION, THE FRIENDLY NUDIST WAS KNOCKED THROUGH THE AIRLOCK, BRIEFLY IHNTO THE FRIGID VACUUM OF SPACE, THEN THROUGH THE PLANET'S ATMOSPHERE AT HIGH SPEEDS.</i>
+    <i>THE NAKED FELLOW INTRODUCES HIMSELF IN RETURN. OVERJOYED, BNORKEL BARKS UP A CLOUD OF PUNGENT INK. THIS STARTLES THE MOOSE, WHO PROCEEDS TO INSTINCTIVELY CHARGE THEM BOTH. A FLURRY OF ACTIVITY! ANTLERS FLASH, TENTACLES FLAIL, EXPOSED FLESH JUTS OFFENSIVELY.</i>
+    <i>AFTER A BRIEF BUT VIOLENT SCUFFLE, BNORKEL COWELS IN A MASS, LICKING HIS WOUNDED SUCKERS. AMIDST THE COMMOTION, THE FRIENDLY NUDIST WAS KNOCKED THROUGH THE AIRLOCK, BRIEFLY INTO THE FRIGID VACUUM OF SPACE, THEN THROUGH THE PLANET'S ATMOSPHERE AT HIGH SPEEDS.</i>
     <i>THE MOOSE INADVERTENTLY TAKES CONTROL OF THE SPACESHIP (IT IS A SPACE SHIP BY THE WAY) AND ACCIDENTALLY USES IT TO DESTROY NEPTUNE. BNORKEL DIDN'T LIKE NEPTUNE ANYWAY.</i>
     <i>THE END.</i>
     The moral of the story is, people should write their own dang commentary or else this happens.
@@ -1196,10 +1207,10 @@ URLs:
 - https://youtu.be/IEI_jZ4jiOU?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Xauric:</i>
-    So... this piece was originally designed to just be... exactly that. Just another piece. It wasn't meant for Homestuck, it wasn't meant or Tumblr or anyone to see it. But a fantastic friend of mine told me about the Homestuck Music competition, so I figured why not. I sent this in after tweaking it a bit, and just for fun, threw it upon Tumblr. I then left for vacation, but still had internet access. I came back to see my song exploded on Tumblr, and was promptly getting upwards of 1,000-3,000 views a week. Needless to say, I was ecstatic. The song itself was kind of... my own personal blend? I love songs that combine organic and inorganic elements, and with Homestuck being the big thing on the block lately, I decided to try it out. As evidence by this album, it didn't make it, but it certainly was a big hit. However, what's funnier is that the version I put on Tumblr was the unmastered version, so when I put the mastered version up, it didn't get nearly as many hits as the unmastered version.
+    So... this piece was originally designed to just be... exactly that. Just another piece. It wasn't meant for Homestuck, it wasn't meant for Tumblr or anyone to see it. But a fantastic friend of mine told me about the Homestuck Music competition, so I figured why not. I sent this in after tweaking it a bit, and just for fun, threw it up on Tumblr. I then left for vacation, but still had internet access. I came back to see my song exploded on Tumblr, and was promptly getting upwards of 1,000-3,000 views a week. Needless to say, I was ecstatic. The song itself was kind of... my own personal blend? I love songs that combine organic and inorganic elements, and with Homestuck being the big thing on the block lately, I decided to try it out. As evidence by this album, it didn't make it, but it certainly was a big hit. However, what's funnier is that the version I put on Tumblr was the unmastered version, so when I put the mastered version up, it didn't get nearly as many hits as the unmastered version.
     A lot of people have asked me whether or not I'm going to make a second Homestuck track. And as much as I love the motivation from fans to do so, I don't think I could handle trying to one-up a piece like this and failing. So, here's to you, Homestuck.
     <i>dodostad:</i>
-    For me the sogn was about alpha kids, no question about it. It took me a long time to come up with a composition that I liked and that seemed to fit the song. LOOK OUT FOR THE MILES JANE
+    For me the song was about alpha kids, no question about it. It took me a long time to come up with a composition that I liked and that seemed to fit the song. LOOK OUT FOR THE MILES JANE
 -------------------------------------------------------------------------------
 Track: Planetarium
 Artist: Rachel Rose Mitchell
@@ -1210,8 +1221,8 @@ URLs:
 - https://youtu.be/0J76sysYCOE?list=PLnVpmehyaOFZuWBGTwXgaTHoEU0I81xei
 Commentary:
     <i>Rachel Rose Mitchell:</i>
-    Planetarium was the first piece of Homestuck fan music I ever made. I'd oly just caught up with the archives when I was set a composition assignment or university. Having never used Logic to compose before, I had fun playing with a bunch of the different inbuilt instruments. When I found the koto, I knew exactly what I wanted to do. I tried to make it sound somewhat ethereal and otherworldly to represent the Incipisphere in all its beautiful weirdness. To try to do that, I threw a whole lot of reverb and delay at pretty much every track. I really did not know what I was doing, but it was fun.
-    The vocal lines were an afterthought. Actually, no, they were less than an afterthought. They werent actually something I thought I should include at all, but the assignment had a requirement of at least four recorded audio tracks. I threw those lines together at home on Cubase (I don't actually have a Mac, let alone Logic!) the morning the piece was drew it, slapped them onto the piece with Logic that day and got the assignment in just in time. But in the end, I think they enhanced the feel of the piece, so I'm kind of glad I had to chuck them in there!
+    Planetarium was the first piece of Homestuck fan music I ever made. I'd only just caught up with the archives when I was set a composition assignment for university. Having never used Logic to compose before, I had fun playing with a bunch of the different inbuilt instruments. When I found the koto, I knew exactly what I wanted to do. I tried to make it sound somewhat ethereal and otherworldly to represent the Incipisphere in all its beautiful weirdness. To try to do that, I threw a whole lot of reverb and delay at pretty much every track. I really did not know what I was doing, but it was fun.
+    The vocal lines were an afterthought. Actually, no, they were less than an afterthought. They weren't actually something I thought I should include at all, but the assignment had a requirement of at least four recorded audio tracks. I threw those lines together at home on Cubase (I don't actually have a Mac, let alone Logic!) the morning the piece was drew it, slapped them onto the piece with Logic that day and got the assignment in just in time. But in the end, I think they enhanced the feel of the piece, so I'm kind of glad I had to chuck them in there!
     <i>Spectrumfizz:</i>
     This is probably my favoured piece from my two more serious ones. I wanted to make a layout reminiscent of an actual planetarium, and I think I achieved that well (the "strings" hanging up the planets are simultaneously that and the kids' houses built up towards Skaia, which indicates that I kind of overthought this). I'm actually pretty fond of how the tiny Beat Mesa and Prospit's moon turned out.
-    Oh yeah, the song itself is also SUPER pretty (I'm surprised I managed to snag such a lovely song to make art for), but you'll know that laready considering you're probably listening to it right now.
+    Oh yeah, the song itself is also SUPER pretty (I'm surprised I managed to snag such a lovely song to make art for), but you'll know that already considering you're probably listening to it right now.
diff --git a/album/lofam4/album.txt b/album/lofam4/album.txt
index ee4c08f9..46409117 100644
--- a/album/lofam4/album.txt
+++ b/album/lofam4/album.txt
@@ -1220,7 +1220,7 @@ Commentary:
     (ps, viko told me to say johndave is canon i guess)
 -------------------------------------------------------------------------------
 Track: Robert Jailbreak
-Artist: Matthias Ramalho
+Artist: Mathias Ramalho
 Track Art: Jaspy
 Duration: 2:12
 References: Pumpkin Cravings, Assail, Jackknive
@@ -1228,7 +1228,7 @@ URLs:
 - https://unofficialmspafans.bandcamp.com/track/robert-jailbreak
 - https://youtu.be/BaiE1IJwV_E?list=PLYr2YZ5D3rfQBkwagYEi_JPvVYUIVfxn6
 Commentary:
-    <i>Matthias Ramalho:</i>
+    <i>Mathias Ramalho:</i>
     This track is a joke. It doesn't have a serious purpose. But it is, in fact, an 8-bit track I worked quite hard to make sound good. If you love 8-bit and RJ, then this is the track just for you!
     <i>Jaspy:</i>
     so i worked on this art way back in the beginning of the year just to see if i could contribute to the album and made a piece of art i'm pretty happy about, i don't really do art stuff so this was a first for me but im glad i could have worked on the album in some way still. it was pretty fun working on the art in general, coming up with the idea was pretty quick after i heard the song, but the hard part was trying to draw lil rj for the art (with a trackpad, dont use trackpds), and after a few revisions i think i got it to a pretty close style to the original. anyway glad i could help work on the album, and hope you dudes all enjoy the rest of it
diff --git a/album/one-year-older/album.txt b/album/one-year-older/album.txt
index 9afba0a3..0ba5bfc9 100644
--- a/album/one-year-older/album.txt
+++ b/album/one-year-older/album.txt
@@ -14,9 +14,9 @@ Commentary:
     Now, before I start rambling at length about the music in here, I've got to toss out a few "thank you"s to people.
     First, to all the artists that helped out with the track art. The stuff that they've all given me is just incredible, and if you ever ask me what my favorite part of this album is I would defiitely say "the art". I may be biased. There's full versions of all the album art with the album itself, and I'd highly encourage you to give it a look-over and see what else these talented people have put out.
     Second, to the other people in the music team, who've helped me go from "some guy who uses famitracker and an awful microphone" to "somewhat of an okay digital musician". I'm thankful for every bit of critiquing I've gotten, too, even if I can be really stubborn about it. And all the bros I know in there, if I could meet everyone in person there would be endless fistbumps. You guys rock.
-    Third, to all the firends and people I've met over the years, through Homestuck and otherwise, that've been great to hang out with and chill with and just talk about stupid random things with.
+    Third, to all the friends and people I've met over the years, through Homestuck and otherwise, that've been great to hang out with and chill with and just talk about stupid random things with.
     Fourth, to my family for always being around, and for....well, being family. Keeping me alive and healthy and stuff and keeping me from completely failing in this "life" thing.
-    And lastly to Andrew Hussie for creating Homestuck, making the really crazy decision to bring me onto the taem in the first place, and for giving me the opportunity to both make an album and just make music for him in the first place. I don't know how little I would've composed if I didn't have Homestuck pushing along, both giving me a reason to write and things to write about.
+    And lastly to Andrew Hussie for creating Homestuck, making the really crazy decision to bring me onto the team in the first place, and for giving me the opportunity to both make an album and just make music for him in the first place. I don't know how little I would've composed if I didn't have Homestuck pushing along, both giving me a reason to write and things to write about.
     Alright! Now that all that before-album talk is done with, it's time to get into the album proper. I hope you, out there, enjoy this album, and I'll see you on the flipside.
     <i>Signed, Erik "Jit" Scheele</i>
 -------------------------------------------------------------------------------
@@ -30,7 +30,7 @@ URLs:
 Commentary:
     <i>Eric Scheele:</i>
     So, where else to start this off but the beginning? And by beginning, I mean "the morning of 4/13/09, John's birthday and the beginning of it all". So I wanted to take time with this piece, and create a sort of smooth, shifting landscape, illustrating the sun rising over John's neighborhood before he wakes up. This was mainly achieved by intersparsing little melodic hits on instruments with each other, building up and fading out in turn. The opening from a rather old tune of mine, "Light" from Volume 5, also makes an appearance in here to further the overall effect.
-    I imagine, if this piece were performed live, it would do best with all the instrumentalists scattered to some degree. And I usually ahte that gimmick, but it could work well in this context.
+    I imagine, if this piece were performed live, it would do best with all the instrumentalists scattered to some degree. And I usually hate that gimmick, but it could work well in this context.
 -------------------------------------------------------------------------------
 Track: October
 Track Art: Hanni Brosh
@@ -41,7 +41,7 @@ URLs:
 Commentary:
     <i>Eric Scheele:</i>
     Now to completely break away from the previous track, we move into a peppy, small ensemble piece. This one just started out because I wanted a tight ensemble to play something together, something sort of bouncy and light. Before that, I'd been making a lot of pieces that felt unnecessarily large, sticking in instruments for just one little section and not using them the rest of the time, so something lighter with more emphasis on individual parts seemed like a great idea. I had no idea what to call it, though, and it didn't really seem to have much context in terms of the album either, until I was looking through the 2010 calendar that the art team made, and came across the October artwork. Immediately it was like, that was it, the piece both fit the "kids and fun" aesthetic that lasted a while in the beginning, and the artwork fit too, so it achieved purpose and title both at the same time.
-    Instrumentally it fit too, it had piano and bass and bitcrushed drums that sounded somewhat like beatboxing, which were three out of the four instruments the original kids used. There's definitely a discrepancy with using synth vs. violin, though. Before anyone asks, I definitely spent time trying to fandangle string patches into it, but it just didn't work. So you can imagine Rose playing an electric violin, that's what I do. (I don't know if electric violins can functionl ike that string players please don't strangle me thank you)
+    Instrumentally it fit too, it had piano and bass and bitcrushed drums that sounded somewhat like beatboxing, which were three out of the four instruments the original kids used. There's definitely a discrepancy with using synth vs. violin, though. Before anyone asks, I definitely spent time trying to fandangle string patches into it, but it just didn't work. So you can imagine Rose playing an electric violin, that's what I do. (I don't know if electric violins can function like that string players please don't strangle me thank you)
 -------------------------------------------------------------------------------
 Track: Firefly Cloud
 Track Art: Nic Carey
@@ -52,7 +52,7 @@ URLs:
 - https://youtu.be/Y3u8E918EwM?list=PLnVpmehyaOFa4xghnUpmCxz8AtEk-ewlI
 Commentary:
     <i>Eric Scheele:</i>
-    So after a quick burst of events and some luck, John finds himself in LOWAS, the Land of Wind and Shade. Everything's dark, except for the stars above, but as we found out, the were really fireflies trapped in the clouds. This was one of the concepts I latched onto rather hard with this piece, the mass of sparkling and blinking above John as he traipsed about. I've been lucky enough to live in a more rural area for most of my life, and being able to watch the stars was always great, so I could only ever imagine what LOWAS's clouds looked like.
+    So after a quick burst of events and some luck, John finds himself in LOWAS, the Land of Wind and Shade. Everything's dark, except for the stars above, but as we found out, they were really fireflies trapped in the clouds. This was one of the concepts I latched onto rather hard with this piece, the mass of sparkling and blinking above John as he traipsed about. I've been lucky enough to live in a more rural area for most of my life, and being able to watch the stars was always great, so I could only ever imagine what LOWAS's clouds looked like.
     Anyway. I kept the sparkling mainly to the piano, higher register work with some delay making a nice twinkling effect. I'd also just gotten some wonderful "piano in an attic for 80 years" samples, which came with a large variety of inner-piano works, like tapping or heavy strokes of the strings, and I sprinkled those rather liberally in places to try and get the effect of thunder. (After all, what sort of lightning storms could a firefly cloud have, anyway?)
     And of course, there's one or two Doctor quotes in there just because.
 -------------------------------------------------------------------------------
@@ -67,7 +67,7 @@ Commentary:
     <i>Erik Scheele:</i>
     This is definitely one of the older tracks on the record, a cover of Penumbra Phantasm by Toby Fox aka Radiation. At the time of writing this, that track still hasn't been released, but that didn't stop me from making a cover of it. And then re-making that cover, since the first one was kind of crap.
     Not really a whole lot of deep thought or anything with this, I just thought the melody sounded cool and it could work for a sort of high-energy swooping-around sort of thing. And then later, I associated it with John's jetpack flight after he gets warned off from dying to his planet's Denizen, so that's what it became.
-    On a completely random note this piece always makes me want to go out running, and I have done so to this piece a few times. If I could do flips and parkour adn stuff I'd totally be doing that too cause it works really well. Maybe gunfights too. Alright let's move on to the next piece.
+    On a completely random note this piece always makes me want to go out running, and I have done so to this piece a few times. If I could do flips and parkour and stuff I'd totally be doing that too cause it works really well. Maybe gunfights too. Alright let's move on to the next piece.
 -------------------------------------------------------------------------------
 Track: Underfoot
 Track Art: Tavia Morra
@@ -78,7 +78,7 @@ URLs:
 Commentary:
     <i>Erik Scheele:</i>
     The first of two completely-solo-piano pieces on here, this piece was a small idea that I had one night, that I sat on and worked into a rough piece right then and there even though I was supposed to be recording parts of the [[album:Sburb]] album at the time. And a little later, I was fortunate enough to get a good recording of it before heading home for the summer.
-    The piece itself ise meant to go along with John discovering Jade's dead dreamself, after waking up on Skaia for the first time. I know a lot of people associate [[Sarabande]], from Volume 5, with that event, or at least with John reading Jade's letter, but I couldn't help but want to at least touch on it while going through his timeline. Originally I'd stuck this before John even entered the Medium, but that didn't really have any moment tacked on with it, and it made much more sense here.
+    The piece itself is meant to go along with John discovering Jade's dead dreamself, after waking up on Skaia for the first time. I know a lot of people associate [[Sarabande]], from Volume 5, with that event, or at least with John reading Jade's letter, but I couldn't help but want to at least touch on it while going through his timeline. Originally I'd stuck this before John even entered the Medium, but that didn't really have any moment tacked on with it, and it made much more sense here.
 -------------------------------------------------------------------------------
 Track: Flying Car
 Track Art: njeekyo
@@ -101,7 +101,7 @@ URLs:
 Commentary:
     <i>Erik Scheele:</i>
     The descent into Skaia and the exploration of its interior, I feel, went by too quick. It might just be because the Tomb Raider series was a favorite while growing up, but I've always loved old, unexplored ruins, arcane or mystical elements hinted at with wall carvings or murals, that sort of thing. And Skaia, being the center of a sort of central planet to everything in Sburb, could be chock-full of old buildings and mystical secrets to explore.
-    So, to try and accompany the general air of mystery and exploration that would have gone with a long journey into the center of Skaia, I took an old idea in Locrian mode. If you're a music person, Locrian is when you take a major scale, but start it on the last note. It's a rather off-kilter scale, and it can't ever really resolve to the toni chord like most other scales can, which made it rather suited to a piece about the sort of strange secrets and landscapes that could be hidden in the center of Skaia.
+    So, to try and accompany the general air of mystery and exploration that would have gone with a long journey into the center of Skaia, I took an old idea in Locrian mode. If you're a music person, Locrian is when you take a major scale, but start it on the last note. It's a rather off-kilter scale, and it can't ever really resolve to the tonic chord like most other scales can, which made it rather suited to a piece about the sort of strange secrets and landscapes that could be hidden in the center of Skaia.
 -------------------------------------------------------------------------------
 Track: Game Over
 Track Art: Sarah Fu
@@ -146,7 +146,7 @@ URLs:
 - https://youtu.be/5UrMv4IQclk?list=PLnVpmehyaOFa4xghnUpmCxz8AtEk-ewlI
 Commentary:
     <i>Erik Scheele:</i>
-    Aka "the big reset button for the universe". It was hinted at for ages in the comic, and finally happened at some point after this piece was made. It als oserved as the inspiration for a project that my third-year piano studio did.
+    Aka "the big reset button for the universe". It was hinted at for ages in the comic, and finally happened at some point after this piece was made. It also served as the inspiration for a project that my third-year piano studio did.
     In the comic, this event was basically a way to reset the universe, everything inside it, and recreate it in a different way, one that would make the game winnable. So, in my head, a mass de-compilation of everything, like a massive maelstrom building as bits of data are pulled apart. A black hole, in other words, but arcing out in waves of energy ilke lightning. Mother Nature ain't got crap on this beast.
     The piece started out as extreme laziness on my aprt, just idle playing around with various distortion on synths and samples, until the school project came up and wanted results fast. So I threw some things together until they formed the opening, and took a very lax approach to the piano part, a sort of "here's a riff, now play around with it, there's your part" with a drum loop over top. Thankfully my laziness didn't extend to the whole thing, and it all got more polished up and developed over time. It still keeps the "improvised piano part based off one riff" idea, though.
 -------------------------------------------------------------------------------
@@ -185,7 +185,7 @@ URLs:
 - https://youtu.be/jw2hUg_32PQ?list=PLnVpmehyaOFa4xghnUpmCxz8AtEk-ewlI
 Commentary:
     <i>Erik Scheele:</i>
-    Way back, before I was even on the team and before I thought I even belonged on the team, I recorded a simple piano refrain. First thing I'd ever recorded, too, and I want to say it was done a few months after Homestuck had started. In my ehad, it fit in as a possible refrain for one of the characters, and the idea always stuck in my head that it could also work as a piece for the very ending for Homestuck, a sort of "all is well" refrain. After two years, I was finally able to make something like what I was thinking and put it in the right context.
+    Way back, before I was even on the team and before I thought I even belonged on the team, I recorded a simple piano refrain. First thing I'd ever recorded, too, and I want to say it was done a few months after Homestuck had started. In my head, it fit in as a possible refrain for one of the characters, and the idea always stuck in my head that it could also work as a piece for the very ending for Homestuck, a sort of "all is well" refrain. After two years, I was finally able to make something like what I was thinking and put it in the right context.
     Like the [[Homestuck Anthem]], I went with using the four kids' instruments: piano, strings, drums/percussion, and bass, and stuck mainly with those. I also got some help by Mr. Lake of Awesome Beats Inc. who was way better at beats than I am, and he made it way better too. Big props to him.
     With the new universe and many new characters being explored, this piece might not work for "the end of Homestuck" anymore, but if anything, I see it as a sort of moving forward. John's journey on that one day, when he turned 13, matured both him and his friends. Like many others, he took the hero's journey, and grew as a result of it, and so this piece could very well fit him leaving his universe and going on to the next, bringing his experiences and knowledge with him, just as well as it could fit him moving past Sburb to whatever adventures lie ahead.
 -------------------------------------------------------------------------------
@@ -199,9 +199,14 @@ URLs:
 - https://youtu.be/gfw3ALlYnmY?list=PLnVpmehyaOFa4xghnUpmCxz8AtEk-ewlI
 Commentary:
     <i>Erik Scheele:</i>
-    BONUS TRACK TIME! But since I didn't make this one, I'm not going to talk over it, I'm going to turn htis over to Eston for his commentary. So here's Eston:
+    BONUS TRACK TIME! But since I didn't make this one, I'm not going to talk over it, I'm going to turn this over to Eston for his commentary. So here's Eston:
     <i>Eston Schweickart:</i>
-    <ul><li>Like most of this album, it was made over a year before release</li><li>Sound sources include the "stab" sound from Walk-Stab-Walk and a burnt-out lightbulb</li><li>Jit is an amazingly talented musician and a spectacular pianist, but he will never admit it nor accept it</li><li>I spent longer writing and producing this piece than any other finished song I've worked on (~5 months)</li><li>I took cues from Jit's style of orchestral instruments accompanying synths reminiscent of chiptunes, and though it is largely a re-imagining of Walk-Stab-Walk, I included subtle tips of the hat to his other early works</li><li>Yes good that sounded sufficiently pretentious</li></ul>
+    - Like most of this album, it was made over a year before release
+    - Sound sources include the "stab" sound from Walk-Stab-Walk and a burnt-out lightbulb
+    - Jit is an amazingly talented musician and a spectacular pianist, but he will never admit it nor accept it
+    - I spent longer writing and producing this piece than any other finished song I've worked on (~5 months)
+    - I took cues from Jit's style of orchestral instruments accompanying synths reminiscent of chiptunes, and though it is largely a re-imagining of Walk-Stab-Walk, I included subtle tips of the hat to his other early works
+    - Yes good that sounded sufficiently pretentious
     <i>Erik Scheele:</i>
     Eston is the coolest of bros and makes sick music. But in a good way, not like sick with the flu or whatever. If you want to check out more of his stuff, and you should, you can visit his blog at <a href="https://siasinsilence.tumblr.com/">siasinsilence.tumblr.com</a>.
 -------------------------------------------------------------------------------
diff --git a/album/unreleased-tracks/album.txt b/album/unreleased-tracks/album.txt
index 1b2d3859..7b6606f6 100644
--- a/album/unreleased-tracks/album.txt
+++ b/album/unreleased-tracks/album.txt
@@ -262,6 +262,15 @@ Artist: Bill Bolin
 Duration: 2:05
 Has URLs: no
 -------------------------------------------------------------------------------
+Track: Gold Mage [Playtime Is Over Mix]
+Artist: Decon Theed
+Duration: 4:06
+References: Gold Mage
+URLs: https://103records.bandcamp.com/track/gold-mage-playtime-is-over-mix
+Commentary:
+    <i>Decon Theed:</i>
+    Oh boy. I feel the best way to justify this mix of the song's entire existence is with the following; the original Gold Mage had a very barren and empty arrangement, designed to facilitate a vocal track that never actually got made, and though the lack of vocals probably helped it make coloUrs & mayhem Vol. 1 in the long run, a lot of people picked up on how empty the song felt. This mix was kind of my way of making up for that, but in the process I created the opposite problem of having TOO MUCH going on, especially in that first 'verse' section. Oh dear god, that first 'verse' section; I am baffled as to how I could possibly have thought that sounded good at the time. Technically speaking the cutting and looping on that guitar sample is very well done, but it doesn't work with the vibe of the beat, and it REALLY doesn't work with the bassline. The second 'verse' isn't much better, in that itself it's a nice chilled out rework of elements from the original, but it jars with the rest of the "GET PUMPED" vibe the tracks got going on. Also, man oh man, Toby Fox felt the solo from the end of the original song was boring; the solo on this song is utterly lifeless. It can barely be called a solo. Ok, ok, some positives; though the chorus is somewhat cluttered, I do like how punchy the chords sound using a more typical "rave stab" type sound (hell, in general the synth stabs on the cut are often the better elements), the stock sawtooth bass synth actually works quite nice with the bassline, and though it gets buried in a lot of the mix, the main drum machine beat over the 'verses' and the solo is actually quite punchy, and has a real late 90s game soundtrack vibe to it that I like. The original is definitely the better version of the song in the long run, though.
+-------------------------------------------------------------------------------
 Track: Ham And Steak
 Artist: Malcolm Brown
 Duration: 8:24
@@ -313,6 +322,17 @@ URLs:
 - https://www.youtube.com/watch?v=RIq4GrMv96I
 - https://www.youtube.com/watch?v=OdntMzdkFnk
 ------------------------------------------------------------------------------
+Track: Rags of Rust
+Artist: Willow Ascenzo
+Duration: 3:14
+References: Rust Servant
+URLs:
+- https://soundcloud.com/wellmanicuredman/rust-piano
+Commentary:
+    <i>Willow Ascenzo:</i>
+    I'm a little late for 6/12, I know, but I just finished some piano arrangements ([[Rags of Rust]], [[Teal Wings and Scales]], [[Violet Sea Breeze]]) of my tracks from [[album:coloUrs-and-mayhem-universe-a]]. I composed the originals back in January 2012--two and a half years ago! My, how time flies when you're having fun.
+    I have to thank my piano professor from last semester for these. No, I can't play these pieces live, not yet at least--but taking a piano course really improved my level of comfort and familiarity with composing for pianos. I just might make sheet music available, though!
+------------------------------------------------------------------------------
 Track: Rex English
 Artist: Toby Fox
 Duration: 0:50
@@ -351,6 +371,17 @@ Duration: 0:57
 References: Beatdown (Strider Style)
 Has URLs: no
 -------------------------------------------------------------------------------
+Track: Teal Wings and Scales
+Artist: Willow Ascenzo
+Duration: 2:50
+References: Teal Hunter
+URLs:
+- https://soundcloud.com/wellmanicuredman/teal-wings-and-scales
+Commentary:
+    <i>Willow Ascenzo:</i>
+    I'm a little late for 6/12, I know, but I just finished some piano arrangements ([[Rags of Rust]], [[Teal Wings and Scales]], [[Violet Sea Breeze]]) of my tracks from [[album:coloUrs-and-mayhem-universe-a]]. I composed the originals back in January 2012--two and a half years ago! My, how time flies when you're having fun.
+    I have to thank my piano professor from last semester for these. No, I can't play these pieces live, not yet at least--but taking a piano course really improved my level of comfort and familiarity with composing for pianos. I just might make sheet music available, though!
+-------------------------------------------------------------------------------
 Track: The Paradox Paradigm
 Artist: Jack McMenamin
 Duration: 3:14
@@ -367,6 +398,17 @@ Duration: 0:47
 References: The Undying
 URLs: https://youtu.be/gbiS4WkCOVo?t=27042
 -------------------------------------------------------------------------------
+Track: Violet Sea Breeze
+Artist: Willow Ascenzo
+Duration: 3:01
+References: Violet Mariner
+URLs:
+- https://soundcloud.com/wellmanicuredman/violet-sea-breeze
+Commentary:
+    <i>Willow Ascenzo:</i>
+    I'm a little late for 6/12, I know, but I just finished some piano arrangements ([[Rags of Rust]], [[Teal Wings and Scales]], [[Violet Sea Breeze]]) of my tracks from [[album:coloUrs-and-mayhem-universe-a]]. I composed the originals back in January 2012--two and a half years ago! My, how time flies when you're having fun.
+    I have to thank my piano professor from last semester for these. No, I can't play these pieces live, not yet at least--but taking a piano course really improved my level of comfort and familiarity with composing for pianos. I just might make sheet music available, though!
+-------------------------------------------------------------------------------
 Track: White King
 Artist: Demographerist
 Duration: 2:45
diff --git a/artists.txt b/artists.txt
index dd267bb3..9c44a964 100644
--- a/artists.txt
+++ b/artists.txt
@@ -62,6 +62,10 @@ URLs:
 - https://albel-is-mine.tumblr.com/
 -------------------------------------------------------------------------------
 Artist: Alex Amlie-Wolf
+URLs:
+- https://alexamliewolf.bandcamp.com
+- https://soundcloud.com/alexamlie/
+- https://www.youtube.com/user/nemecic9199
 -------------------------------------------------------------------------------
 Artist: Alex Votl
 URLs:
@@ -79,6 +83,7 @@ Artist: Alexandria Kemp
 Artist: Alexia Khodanian
 URLs:
 - https://alexiadraws.tumblr.com/
+- https://twitter.com/alexiakhodanian/
 -------------------------------------------------------------------------------
 Artist: Alina James
 URLs:
@@ -211,21 +216,20 @@ Artist: Ashley Jones
 Artist: Asiul
 URLs:
 - https://purenonsens.tumblr.com/
+- https://twitter.com/purenonsens/
 -------------------------------------------------------------------------------
 Artist: Astro Kid
 URLs:
 - https://soundcloud.com/astro_kid
 - https://astrokid.bandcamp.com/
 -------------------------------------------------------------------------------
-Artist: Astrom
--------------------------------------------------------------------------------
 Artist: atissi
 URLs:
 - https://atissi.tumblr.com/
 -------------------------------------------------------------------------------
 Artist: august
 -------------------------------------------------------------------------------
-Artist: Temporal Shenanigans
+Artist: Astrom
 URLs:
 - https://alliebirdseed.tumblr.com/
 -------------------------------------------------------------------------------
@@ -283,8 +287,7 @@ URLs:
 - https://soundcloud.com/blackholesc
 -------------------------------------------------------------------------------
 Artist: Bloodredbites
-URLs:
-- https://www.deviantart.com/bloodredbites
+Alias: Sangcoon
 -------------------------------------------------------------------------------
 Artist: BlueAmethyst
 URLs:
@@ -426,8 +429,7 @@ URLs:
 Artist: Cheers
 -------------------------------------------------------------------------------
 Artist: Chelsea Thomas
-URLs:
-- https://toguchin.tumblr.com/
+Alias: Toguchidraws
 -------------------------------------------------------------------------------
 Artist: cherry bomb bunny
 -------------------------------------------------------------------------------
@@ -585,6 +587,7 @@ URLs: https://en.wikipedia.org/wiki/Daft_Punk
 -------------------------------------------------------------------------------
 Artist: Dallas Ross Hicks
 URLs:
+- https://soundcloud.com/drhicks76/
 - https://drhicks76.tumblr.com/
 -------------------------------------------------------------------------------
 Artist: Dalmationer
@@ -633,6 +636,8 @@ Dead URLs:
 Artist: David DeCou
 -------------------------------------------------------------------------------
 Artist: David Dycus
+URLs:
+- https://dirtiestmusic.tumblr.com/
 -------------------------------------------------------------------------------
 Artist: David Ellis
 URLs:
@@ -654,6 +659,11 @@ Artist: dazed-squid
 URLs:
 - https://dazed-squid.tumblr.com/
 -------------------------------------------------------------------------------
+Artist: Decon Theed
+URLs:
+- https://103records.bandcamp.com/
+- https://soundcloud.com/103_records/
+-------------------------------------------------------------------------------
 Artist: demfury
 URLs:
 - https://demfury.tumblr.com/
@@ -680,6 +690,8 @@ URLs:
 - https://soundcloud.com/difarem
 -------------------------------------------------------------------------------
 Artist: Digidigi66
+URLs:
+- https://www.deviantart.com/digidigi66
 -------------------------------------------------------------------------------
 Artist: Dinah Washington
 URLs: https://en.wikipedia.org/wiki/Dinah_Washington
@@ -687,6 +699,8 @@ URLs: https://en.wikipedia.org/wiki/Dinah_Washington
 Artist: Disney
 -------------------------------------------------------------------------------
 Artist: DJ最テー
+URLs:
+- https://soundcloud.com/djsaitae/
 -------------------------------------------------------------------------------
 Artist: Doctor Who
 -------------------------------------------------------------------------------
@@ -752,6 +766,9 @@ URLs:
 - https://music.orngjce223.net/
 -------------------------------------------------------------------------------
 Artist: Elanor Pam
+URLs:
+- https://twitter.com/elanorpam
+- http://www.fanelorn.net/
 -------------------------------------------------------------------------------
 Artist: electric lantern
 URLs:
@@ -760,6 +777,10 @@ URLs:
 Artist: Electric Six
 URLs: https://en.wikipedia.org/wiki/Electric_Six
 -------------------------------------------------------------------------------
+Artist: Eligecos
+URLs:
+- https://twitter.com/Eligecos/
+-------------------------------------------------------------------------------
 Artist: Elisa McCabe
 -------------------------------------------------------------------------------
 Artist: EllenZarael
@@ -811,14 +832,18 @@ Artist: Erin B.
 URLs:
 - https://crowwingedangel.tumblr.com/
 -------------------------------------------------------------------------------
+Artist: Erupan
+URLs:
+- https://erupan.tumblr.com/
+-------------------------------------------------------------------------------
 Artist: Esabelle Ryngin
 URLs:
 - https://esabelleryngin.tumblr.com/
 -------------------------------------------------------------------------------
 Artist: Eston Schweickart
 URLs:
-- https://siasinsilence.tumblr.com/
 - https://soundcloud.com/eschweic
+- https://siasinsilence.tumblr.com/
 -------------------------------------------------------------------------------
 Artist: Evan Copeland
 -------------------------------------------------------------------------------
@@ -865,6 +890,8 @@ URLs: https://en.wikipedia.org/wiki/Fire_Emblem
 Artist: First Turn Fold
 URLs:
 - https://soundcloud.com/first-turn-fold
++ https://www.youtube.com/channel/UCq2m3lZnbmjb0tW4wUPmRZg
+- https://firstturnfold.tumblr.com/
 -------------------------------------------------------------------------------
 Artist: Fitzwibble
 URLs:
@@ -899,7 +926,7 @@ URLs:
 - https://freckledoctopus.tumblr.com/
 -------------------------------------------------------------------------------
 Artist: FriendlyCoy
-Alias: Matthias Ramalho
+Alias: Mathias Ramalho
 -------------------------------------------------------------------------------
 Artist: fuchsi
 -------------------------------------------------------------------------------
@@ -921,6 +948,7 @@ URLs:
 Artist: gaylalondes
 -------------------------------------------------------------------------------
 Artist: Gec
+Alias: Eligecos
 -------------------------------------------------------------------------------
 Artist: Gelasticat
 -------------------------------------------------------------------------------
@@ -981,6 +1009,10 @@ URLs:
 - https://mspfa.com/?s=13714&p=1
 - https://twitter.com/Griever1337/
 -------------------------------------------------------------------------------
+Artist: Grim Harlequin
+URLs:
+- https://grimharlequin.tumblr.com/
+-------------------------------------------------------------------------------
 Artist: Gunsandwwands
 -------------------------------------------------------------------------------
 Artist: Guy
@@ -1047,6 +1079,8 @@ URLs:
 Artist: Ian Taylor
 -------------------------------------------------------------------------------
 Artist: Ian White
+URLs:
+- https://soundcloud.com/myusernamesmud/
 -------------------------------------------------------------------------------
 Artist: Ikimaru
 URLs:
@@ -1170,6 +1204,7 @@ URLs:
 -------------------------------------------------------------------------------
 Artist: J.N. Wiedle
 URLs:
+- https://twitter.com/jnwiedle
 - https://blog.jnwiedle.com/
 -------------------------------------------------------------------------------
 Artist: Jones N. Wiedle
@@ -1198,9 +1233,13 @@ URLs:
 -------------------------------------------------------------------------------
 Artist: Kait Linney
 -------------------------------------------------------------------------------
-Artist: Kajoi
+Artist: Kajoinen
 URLs:
 - https://kajoi.tumblr.com/
+- https://twitter.com/kajoinen/
+-------------------------------------------------------------------------------
+Artist: Kajoi
+Alias: Kajoinen
 -------------------------------------------------------------------------------
 Artist: Kal-la-kal-la
 URLs:
@@ -1265,9 +1304,16 @@ Artist: Kera Jones
 Artist: Kevin Grant
 URLs:
 - https://soundcloud.com/kevingrant
+- https://www.youtube.com/user/kaviar101/
 -------------------------------------------------------------------------------
 Artist: Kevin Regamey
 -------------------------------------------------------------------------------
+Artist: Kezinox
+URLs:
+- https://kezinox.bandcamp.com/
+- https://soundcloud.com/kezinox/
+- https://www.youtube.com/user/Kezinox
+-------------------------------------------------------------------------------
 Artist: Khoroshonov
 -------------------------------------------------------------------------------
 Artist: Kibbynbits
@@ -1314,7 +1360,9 @@ Artist: Kisbys
 -------------------------------------------------------------------------------
 Artist: Kitsu
 URLs:
+- https://9mileshigh-old.tumblr.com/
 - https://akitsu-47.tumblr.com/
+- https://ackart.carbonmade.com/
 -------------------------------------------------------------------------------
 Artist: knightic
 Alias: fenkko
@@ -1397,6 +1445,8 @@ Artist: Leondra
 Artist: Leppu
 -------------------------------------------------------------------------------
 Artist: Leslie Hung
+URLs:
+- https://twitter.com/lesliehung
 -------------------------------------------------------------------------------
 Artist: Lexxy
 URLs:
@@ -1460,6 +1510,7 @@ URLs:
 Artist: Lynnai Hicks
 URLs:
 - https://drhicks76.tumblr.com/tagged/Lynnai-Art
+- https://www.deviantart.com/drhicks76
 -------------------------------------------------------------------------------
 Artist: Lyza K.
 URLs:
@@ -1519,6 +1570,7 @@ Artist: Marc Encabo
 -------------------------------------------------------------------------------
 Artist: Marcus Carline
 URLs:
+- https://twitter.com/marcuscarline/
 - https://marcuscarline.com/
 -------------------------------------------------------------------------------
 Artist: Marcus Citrine
@@ -1562,11 +1614,14 @@ URLs:
 -------------------------------------------------------------------------------
 Artist: Matt Martin
 -------------------------------------------------------------------------------
-Artist: Matthias Ramalho
+Artist: Mathias Ramalho
 URLs:
 - https://friendlycoy.bandcamp.com/
 - https://soundcloud.com/friendly-coy
 -------------------------------------------------------------------------------
+Artist: Matthias Ramalho
+Alias: Mathias Ramalho
+-------------------------------------------------------------------------------
 Artist: Max Wright
 URLs:
 - https://soundcloud.com/mxwright
@@ -1637,6 +1692,10 @@ Artist: Michael Ohr
 Artist: Michael Vallejo
 -------------------------------------------------------------------------------
 Artist: Michelle Czajkowski
+URLs:
+- https://tinypaint.tumblr.com/
+- https://twitter.com/avasdemon
+- https://www.avasdemon.com/
 -------------------------------------------------------------------------------
 Artist: microwavedsoap
 URLs:
@@ -1656,8 +1715,7 @@ URLs:
 - https://www.behance.net/mikkynga
 -------------------------------------------------------------------------------
 Artist: Mingmingfurb
-URLs:
-- https://grimharlequin.tumblr.com/
+Alias: Grim Harlequin
 -------------------------------------------------------------------------------
 Artist: Mint Chipleaf
 URLs:
@@ -1725,6 +1783,8 @@ URLs:
 Artist: Myotishi
 URLs:
 - https://rosieberry.tumblr.com/
+- https://twitter.com/rosiemonomi/
+- https://www.deviantart.com/myotishi
 -------------------------------------------------------------------------------
 Artist: N.W.A.
 URLs: https://en.wikipedia.org/wiki/N.W.A
@@ -1891,6 +1951,8 @@ URLs:
 Artist: Paul Henderson
 -------------------------------------------------------------------------------
 Artist: Paul Tuttle Starr
+URLs:
+- https://paultuttlestarr.bandcamp.com/
 -------------------------------------------------------------------------------
 Artist: paveffer
 URLs:
@@ -1942,6 +2004,11 @@ URLs:
 - https://plaidart.tumblr.com/
 -------------------------------------------------------------------------------
 Artist: Plumegeist
+URLs:
+- https://plumegeist.bandcamp.com/
+- https://soundcloud.com/plumegeist
+- https://www.youtube.com/user/Plumegeist
+- https://twitter.com/geistbox/
 -------------------------------------------------------------------------------
 Artist: poinko
 Alias: Phil Gibson
@@ -1966,6 +2033,9 @@ Artist: power464646
 Alias: Grace Medley
 -------------------------------------------------------------------------------
 Artist: Prassio
+URLs:
+- https://twitter.com/prassiooo
+- http://prassio.net/
 -------------------------------------------------------------------------------
 Artist: Pride
 URLs:
@@ -2081,8 +2151,7 @@ URLs:
 - https://reasonpeason.tumblr.com/
 -------------------------------------------------------------------------------
 Artist: Rebecca Ryberg
-URLs:
-- https://erupan.tumblr.com/
+Alias: Erupan
 -------------------------------------------------------------------------------
 Artist: Red Pen
 URLs:
@@ -2109,6 +2178,7 @@ URLs:
 - https://www.weavecomic.com/
 -------------------------------------------------------------------------------
 Artist: repeatedScales
+Alias: Decon Theed
 -------------------------------------------------------------------------------
 Artist: rest✩taurus
 -------------------------------------------------------------------------------
@@ -2207,6 +2277,11 @@ URLs:
 -------------------------------------------------------------------------------
 Artist: Samm Neiland
 -------------------------------------------------------------------------------
+Artist: Sangcoon
+URLs:
+- https://sangcoon.tumblr.com/
+- https://www.deviantart.com/bloodredbites
+-------------------------------------------------------------------------------
 Artist: Sara Stebbins
 -------------------------------------------------------------------------------
 Artist: Sarah Fu
@@ -2307,7 +2382,8 @@ URLs:
 Artist: Shannon
 URLs:
 - https://superflatpsyche.tumblr.com/
-- https://www.deviantart.com/stj-44
+- https://www.deviantart.com/superflatpsychosis
+- https://twitter.com/SuperflatPsyche
 -------------------------------------------------------------------------------
 Artist: Shan Murphy
 URLs:
@@ -2363,6 +2439,7 @@ URLs:
 - https://fire-cycle.tumblr.com/
 -------------------------------------------------------------------------------
 Artist: Sinister Psyche
+Alias: Kezinox
 -------------------------------------------------------------------------------
 Artist: skepticArcher
 Dead URLs:
@@ -2499,6 +2576,7 @@ URLs: https://en.wikipedia.org/wiki/Super_Mario
 -------------------------------------------------------------------------------
 Artist: SuryaAsura
 URLs:
+- https://twitter.com/suryaasura/
 - https://demonsfromthesun.tumblr.com/
 -------------------------------------------------------------------------------
 Artist: Svix
@@ -2665,6 +2743,10 @@ URLs:
 -------------------------------------------------------------------------------
 Artist: Toe
 -------------------------------------------------------------------------------
+Artist: Toguchidraws
+URLs:
+- https://toguchin.tumblr.com/
+-------------------------------------------------------------------------------
 Artist: Tom Kendall Hughes
 -------------------------------------------------------------------------------
 Artist: Toon Lettuce
@@ -2803,8 +2885,9 @@ URLs:
 -------------------------------------------------------------------------------
 Artist: Willow Ascenzo
 URLs:
-- https://soundcloud.com/wellmanicuredman
 - https://wellmanicuredmusic.bandcamp.com/
+- https://soundcloud.com/wellmanicuredman
+- https://twitter.com/wmm_ebooks/
 -------------------------------------------------------------------------------
 Artist: Winter
 -------------------------------------------------------------------------------
@@ -2816,6 +2899,10 @@ URLs:
 - https://www.youtube.com/user/Worthikids
 - https://worthikids.tumblr.com/
 -------------------------------------------------------------------------------
+Artist: WP
+URLs:
+- https://debonairbear.tumblr.com/
+-------------------------------------------------------------------------------
 Artist: Xagave
 URLs:
 - https://xagave.tumblr.com/
@@ -2850,6 +2937,8 @@ Artist: Yan Rodriguez
 URLs:
 - https://nucleose.bandcamp.com/
 - https://soundcloud.com/nucleose
+- https://www.youtube.com/channel/UCD7a6h_5Jwj_EkwwK2g5H9A/
+- https://twitter.com/nucleose/
 -------------------------------------------------------------------------------
 Artist: yazshu
 -------------------------------------------------------------------------------
@@ -2886,6 +2975,7 @@ URLs:
 Artist: Zilon
 URLs:
 - https://notzilon.tumblr.com/
+- https://twitter.com/notzilon/
 -------------------------------------------------------------------------------
 Artist: Zichao Zang
 -------------------------------------------------------------------------------
diff --git a/common.js b/common.js
index 02dd3c2b..8ee8b9b4 100644
--- a/common.js
+++ b/common.js
@@ -2,9 +2,45 @@
 // 8uilder.
 
 const C = {
-    // This can 8e changed if you want to output to some other directory. Just make
-    // sure static files are copied into it too! (Which, ahem. Might 8e a todo.)
-    SITE_DIRECTORY: '',
+    // This can 8e changed if you want to output to some other directory. It's
+    // the one you'll upload online with rsync or whatever when you're pushing
+    // an upd8, and also the one you'd compress if you wanted to make a 8ackup
+    // of the whole dang site. Just keep in mind that the gener8ted result will
+    // contain a couple symlinked directories, so if you're uploading, you're
+    // pro8a8ly gonna want to resolve those yourself.
+    SITE_DIRECTORY: 'site',
+
+    // Code that's used just for the 8uild! CSS and client JavaScript, etc.
+    // (This gets symlinked into SITE_DIRECTORY.)
+    STATIC_DIRECTORY: 'static',
+
+    // Code that's common 8etween the 8uild code (i.e. upd8.js) and gener8ted
+    // site code should 8e put here. Which, uh, only really means this one
+    // file. 8ut rather than hard code it, anything in this directory can 8e
+    // shared across 8oth ends of the code8ase.
+    // (This gets symlinked into SITE_DIRECTORY.)
+    COMMON_DIRECTORY: 'common',
+
+    // Static media will 8e referenced in the site here!
+    // The contents are categorized 8y the constants 8elow.
+    // (This gets symlinked into SITE_DIRECTORY.)
+    MEDIA_DIRECTORY: 'media',
+
+    // Contains a folder for each al8um, within which is the al8um cover art
+    // as well as any track art. Structure itself looks somethin' like this:
+    // * album-art/<album.directory>/cover.jpg
+    // * album-art/<album.directory>/<track1.directory>.jpg
+    // * album-art/<album.directory>/<track2.directory>.jpg
+    MEDIA_ALBUM_ART_DIRECOTRY: 'album-art',
+
+    // Just one folder, with a single image for each flash, matching its output
+    // directory like al8um and track art. (Just keep in mind the directory of
+    // a flash is just its page num8er most of the time.)
+    MEDIA_FLASH_ART_DIRECTORY: 'flash-art',
+
+    // Miscellaneous stuff! This is pretty much only referenced in commentary
+    // fields.
+    MEDIA_MISC_DIRECOTRY: 'misc',
 
     // The folder you stick your random downloads in is called "Downloads",
     // yeah? (Unless you sort all your downloads into manual, organized
diff --git a/lazy-fallback.js b/lazy-fallback.js
new file mode 100644
index 00000000..a66b922c
--- /dev/null
+++ b/lazy-fallback.js
@@ -0,0 +1,19 @@
+// Fall8ack code for lazy loading. 8asically, this runs if the stuff in
+// lazy-loading.js doesn't; while that file's written with the same kinda
+// modern syntax/APIs used all over the site, displaying the images is a pretty
+// damn important thing to do, so we have this goodol' Olde JavaScripte fix for
+// 8rowsers which have JS ena8led (and so won't display gener8ted <noscript>
+// tags) 8ut don't support what we use for lazy loading.
+
+if (!window.lazyLoadingExecuted) {
+    lazyLoadingFallback();
+}
+
+function lazyLoadingFallback() {
+    var lazyElements = document.getElementsByClassName('lazy');
+    for (var i = 0; i < lazyElements.length; i++) {
+        var element = lazyElements[i];
+        var original = element.getAttribute('data-original');
+        element.setAttribute('src', original);
+    }
+}
diff --git a/lazy-loading.js b/lazy-loading.js
new file mode 100644
index 00000000..22f95eb0
--- /dev/null
+++ b/lazy-loading.js
@@ -0,0 +1,25 @@
+// Lazy loading! Roll your own. Woot.
+
+function loadImage(image) {
+    image.src = image.dataset.original;
+}
+
+function lazyLoad(elements) {
+    for (const item of elements) {
+        if (item.intersectionRatio > 0) {
+            observer.unobserve(item.target);
+            loadImage(item.target);
+        }
+    }
+}
+
+const observer = new IntersectionObserver(lazyLoad, {
+    rootMargin: '200px',
+    threshold: 1.0
+});
+
+for (const image of document.querySelectorAll('img.lazy')) {
+    observer.observe(image);
+}
+
+window.lazyLoadingExecuted = true;
diff --git a/lazy-show.js b/lazy-show.js
new file mode 100644
index 00000000..c6a1bf25
--- /dev/null
+++ b/lazy-show.js
@@ -0,0 +1,16 @@
+// Kinda like lazy-fallback.js in that this should work on any 8rowser, period.
+// Shows the lazy loading images iff JS is enabled (so that you don't have a
+// duplicate image if JS is disabled).
+
+lazyLoadingShowHiddenImages();
+
+function lazyLoadingShowHiddenImages() {
+    // This is a live HTMLCollection! We can't iter8te over it normally 'cuz
+    // we'd 8e mutating its value just 8y interacting with the DOM elements it
+    // contains. A while loop works just fine, even though you'd think reading
+    // over this code that this would 8e an infinitely hanging loop. It isn't!
+    var elements = document.getElementsByClassName('js-hide');
+    while (elements.length) {
+        elements[0].classList.remove('js-hide');
+    }
+}
diff --git a/site.css b/site.css
index 1158c688..fc940bae 100644
--- a/site.css
+++ b/site.css
@@ -51,7 +51,13 @@ a:hover {
     font-weight: normal;
 }
 
-#header > h2 > a:last-of-type {
+#header > h2 a.current,
+#header > h2.highlight-last-link > a:last-of-type {
+    font-weight: 800;
+}
+
+#header > h2.dot-between-spans > span:not(:last-child)::after {
+    content: " \00b7 ";
     font-weight: 800;
 }
 
@@ -63,13 +69,9 @@ a:hover {
     flex-grow: 1;
 }
 
-#header > div > * {
-    margin-right: 1px;
-}
-
-#header > div > *:not(:last-child):after {
-    content: "•";
-    margin-left: 1px;
+#header > div > *:not(:last-child)::after {
+    content: " \00b7 ";
+    font-weight: 800;
 }
 
 #header .chronology {
@@ -102,9 +104,23 @@ a:hover {
 }
 
 @media (max-width: 780px) {
-    #sidebar {
+    #sidebar:not(.no-hide) {
         display: none;
     }
+
+    .columns.vertical-when-thin {
+        flex-direction: column;
+    }
+
+    .columns.vertical-when-thin > *:not(:last-child) {
+        margin-bottom: 10px;
+    }
+
+    #sidebar.no-hide {
+        max-width: unset !important;
+        flex-basis: unset !important;
+        margin-right: 0;
+    }
 }
 
 #sidebar, #content, #header {
@@ -117,6 +133,7 @@ a:hover {
     flex: 1 1 20%;
     min-width: 200px;
     max-width: 250px;
+    flex-basis: 250px;
     float: left;
     padding: 5px;
     margin-right: 10px;
@@ -124,8 +141,16 @@ a:hover {
     height: 100%;
 }
 
+#sidebar.wide {
+    max-width: 350px;
+    flex-basis: 300px;
+    flex-shrink: 0;
+    flex-grow: 1;
+}
+
 #content {
     padding: 20px;
+    flex-grow: 1;
 }
 
 #sidebar h1 {
@@ -202,10 +227,6 @@ a:hover {
     overflow-wrap: break-word;
 }
 
-#content {
-    flex-grow: 1;
-}
-
 #cover-art {
     float: right;
     width: 40%;
@@ -215,13 +236,38 @@ a:hover {
 }
 
 #cover-art img {
-    width: 100%;
     display: block;
+    width: 100%;
+    height: 100%;
+    object-fit: cover;
 }
 
 img {
     border: 2px solid var(--fg-color);
     box-sizing: border-box;
+    position: relative;
+    padding: 5px;
+    text-align: left;
+    background-color: var(--dim-color);
+    color: white;
+    /* these unfortunately dont take effect while loading, so...
+    text-align: center;
+    line-height: 2em;
+    text-shadow: 0 0 5px black;
+    font-style: oblique;
+    */
+}
+
+.js-hide {
+    display: none;
+}
+
+a.box:focus {
+    outline: 3px double var(--fg-color);
+}
+
+a.box:focus:not(:focus-visible) {
+    outline: none;
 }
 
 h1 {
@@ -243,11 +289,8 @@ h1 {
     align-items: center;
 }
 
-.grid-listing > .grid-item {
-    flex: 1 1 26%;
+.grid-item {
     display: inline-block;
-    min-width: 160px;
-    max-width: 240px;
     margin: 15px;
     text-align: center;
     background-color: #111111;
@@ -256,34 +299,83 @@ h1 {
     padding: 5px;
 }
 
-.grid-listing > .grid-item > img {
+.grid-item img {
+    display: block;
+    width: 100%;
+    height: 100%;
+}
+
+.grid-item span {
+    margin-top: 0.45em;
+    display: block;
+}
+
+.grid-listing > .grid-item {
+    flex: 1 1 26%;
+}
+
+.grid-actions {
+    display: flex;
+    flex-direction: column;
+    margin: 15px;
+}
+
+.grid-actions > .grid-item {
+    flex-basis: unset !important;
+    margin: 5px;
+}
+
+.grid-item {
+    flex-basis: 240px;
+    min-width: 200px;
+    max-width: 240px;
+}
+
+.grid-item:not(.large-grid-item) {
+    flex-basis: 180px;
+    min-width: 120px;
+    max-width: 180px;
+    font-size: 0.9em;
+}
+
+.square {
+    position: relative;
     width: 100%;
-    margin-bottom: 10px;
 }
 
-.grid-listing h2 {
-    text-align: center;
+.square::after {
+    content: "";
+    display: block;
+    padding-bottom: 100%;
+}
+
+.square-content {
+    position: absolute;
     width: 100%;
+    height: 100%;
 }
 
-#top-index #content h1 {
+#content.top-index h1,
+#content.flash-index h1 {
     text-align: center;
     font-size: 2em;
 }
 
-#top-index #content h2 {
+#content.flash-index h2 {
     text-align: center;
     font-size: 3em;
     font-variant: small-caps;
     font-style: oblique;
     margin-bottom: 0;
+    text-align: center;
+    width: 100%;
 }
 
-#top-index #content h3 {
+#content.top-index h2 {
     text-align: center;
-    font-size: 1.1em;
-    font-style: oblique;
+    font-size: 2em;
     font-weight: normal;
+    margin-bottom: 0;
 }
 
 #intro-menu {
diff --git a/upd8.js b/upd8.js
index 439f6fb2..eb91e76b 100644
--- a/upd8.js
+++ b/upd8.js
@@ -108,6 +108,8 @@ const C = require('./common');
 // const C.SITE_DIRECTORY = '';
 
 const SITE_TITLE = 'Homestuck Music Wiki';
+const SITE_VERSION = 'autumnal polish haul';
+const SITE_RELEASE = '10 October 2020';
 
 const SITE_ABOUT = fixWS`
     <p>Welcome to my fan-made Homestuck music wiki!</p>
@@ -144,7 +146,8 @@ const SITE_ABOUT = fixWS`
 const SITE_CHANGELOG = fs.readFileSync('changelog.html').toString().trim(); // fight me bro
 
 const SITE_FEEDBACK = fixWS`
-    <p><strong>Feature requests? Noticed any errors?</strong> Please let me know! I appreciate feedback a lot, and always want to make this site better.</p>
+    <p><strong>Feature requests?<br>Noticed any errors?<br>Itching to see that one missing album on the wiki?</strong></p>
+    <p>Please let me know! I appreciate feedback a lot, and always want to make this site better.</p>
     <p>The best place to talk about this site is on its <a href="https://forum.homestuck.xyz/viewtopic.php?f=7&t=151">HomestuckXYZ forum thread</a>.</p>
     <p>Or, if forums aren't really the thing for you, I've got an email too: towerofnix at gmail dot beans. (You know the domain.)</p>
     <p>I used to have a Twitter account, but Twitter is bad and poofing from it was probably my greatest decision.</p>
@@ -344,7 +347,7 @@ function transformInline(text) {
                 const nextCharacter = text[offset + 1];
                 const lastCharacter = name[name.length - 1];
                 if (
-                    ![' ', '\n'].includes(nextCharacter) &&
+                    ![' ', '\n', '<'].includes(nextCharacter) &&
                     lastCharacter === '.'
                 ) {
                     name = name.slice(0, -1);
@@ -792,6 +795,8 @@ function getTotalDuration(tracks) {
     return tracks.reduce((duration, track) => duration + track.duration, 0);
 }
 
+const stringifyIndent = 0;
+
 function stringifyAlbumData() {
     return JSON.stringify(albumData, (key, value) => {
         if (['album', 'commentary'].includes(key)) {
@@ -799,7 +804,7 @@ function stringifyAlbumData() {
         }
 
         return value;
-    }, 1);
+    }, stringifyIndent);
 }
 
 function stringifyFlashData() {
@@ -809,16 +814,16 @@ function stringifyFlashData() {
         }
 
         return value;
-    }, 1);
+    }, stringifyIndent);
 }
 
 function stringifyArtistData() {
-    return JSON.stringify(artistData, null, 1);
+    return JSON.stringify(artistData, null, stringifyIndent);
 }
 
 // 8asic function for writing any site page. Handles all the 8asename,
 // directory, and site-template shenanigans!
-async function writePage(directoryParts, titleOrHead, body) {
+async function OLD_writePage(directoryParts, titleOrHead, body) {
     const directory = path.join(C.SITE_DIRECTORY, ...directoryParts);
     await mkdirp(directory);
     // This is sort of hard-coded, i.e. we don't do path.join(C.ROOT_DIRECTORY).
@@ -855,69 +860,358 @@ async function writePage(directoryParts, titleOrHead, body) {
     `));
 }
 
+function escapeAttributeValue(value) {
+    return value.toString().replace(/"/g, '&quot;');
+}
+
+function attributes(attribs) {
+    return Object.entries(attribs)
+        .filter(([ key, val ]) => val !== '')
+        .map(([ key, val ]) => `${key}="${escapeAttributeValue(val)}"`)
+        .join(' ');
+}
+
+function img({
+    src = '',
+    alt = '',
+    id = '',
+    link = false,
+    lazy = false,
+    square = false
+}) {
+    const willSquare = square;
+    const willLink = typeof link === 'string' || link;
+
+    const imgAttributes = attributes({
+        id: link ? '' : id,
+        alt
+    });
+
+    const nonlazyHTML = wrap(`<img src="${src}" ${imgAttributes}>`);
+    const lazyHTML = lazy && wrap(`<img class="lazy" data-original="${src}" ${imgAttributes}>`, true);
+
+    if (lazy) {
+        return fixWS`
+            <noscript>${nonlazyHTML}</noscript>
+            ${lazyHTML}
+        `;
+    } else {
+        return nonlazyHTML;
+    }
+
+    function wrap(html, hide = false) {
+        if (willSquare) {
+            html = fixWS`<div ${classes('square', hide && !willLink && 'js-hide')}><div class="square-content">${html}</div></div>`;
+        }
+
+        if (willLink) {
+            html = `<a ${classes('box', hide && 'js-hide')} ${attributes({
+                id,
+                href: typeof link === 'string' ? link : src
+            })}>${html}</a>`;
+        }
+
+        return html;
+    }
+}
+
+async function writePage(directoryParts, {
+    title = '',
+    meta = {},
+
+    body = {
+        style: ''
+    },
+
+    main = {
+        classes: [],
+        content: ''
+    },
+
+    sidebar = {
+        collapse: true,
+        classes: [],
+        content: ''
+    },
+
+    nav = {
+        links: [],
+        classes: [],
+        content: ''
+    }
+}) {
+    const directory = path.join(C.SITE_DIRECTORY, ...directoryParts);
+    const file = path.join(directory, 'index.html');
+    const href = path.join(...directoryParts, 'index.html');
+
+    const mainHTML = main.content && fixWS`
+        <main id="content" ${classes(...main.classes || [])}>
+            ${main.content}
+        </main>
+    `;
+
+    const {
+        collapse = true,
+        wide = false
+    } = sidebar;
+
+    const sidebarHTML = sidebar.content && fixWS`
+        <div id="sidebar" ${classes(
+            sidebar.wide && 'wide',
+            !sidebar.collapse && 'no-hide',
+            ...sidebar.classes || []
+        )}>
+            ${sidebar.content}
+        </div>
+    `;
+
+    if (nav.simple) {
+        nav.links = [
+            ['index.html', 'Home'],
+            [href, title]
+        ]
+    }
+
+    const navContentHTML = [
+        nav.links && fixWS`
+            <h2 class="highlight-last-link">
+                ${nav.links
+                    .map(([ href, title ], i) => (href
+                        ? (i > 0 ? '/ ' : '') + `<a href="${href}">${title}</a>`
+                        : `<span>${title}</span>`))
+                    .join('\n')}
+            </h2>
+        `,
+        nav.content
+    ].filter(Boolean).join('\n');
+
+    const navHTML = navContentHTML && fixWS`
+        <nav id="header" ${classes(...nav.classes || [])}>
+            ${navContentHTML}
+        </nav>
+    `;
+
+    const layoutHTML = [
+        navHTML,
+        sidebar.content ? fixWS`
+            <div ${classes('columns', !collapse && 'vertical-when-thin')}>
+                ${sidebarHTML}
+                ${mainHTML}
+            </div>
+        ` : mainHTML
+    ].filter(Boolean).join('\n');
+
+    await mkdirp(directory);
+    await writeFile(file, rebaseURLs(directory, fixWS`
+        <!DOCTYPE html>
+        <html data-rebase="${path.relative(directory, C.SITE_DIRECTORY)}">
+            <head>
+                <title>${title}</title>
+                <meta charset="utf-8">
+                <meta name="viewport" content="width=device-width, initial-scale=1">
+                ${Object.entries(meta).map(([ key, value ]) => `<meta ${key}="${escapeAttributeValue(value)}">`).join('\n')}
+                <link rel="stylesheet" href="site.css">
+            </head>
+            <body ${attributes({style: body.style})}>
+                ${layoutHTML}
+                <script src="lazy-show.js"></script>
+                <script src="lazy-loading.js"></script>
+                <script src="lazy-fallback.js"></script>
+                <script src="common.js"></script>
+                <script src="data.js"></script>
+                <script src="client.js"></script>
+            </body>
+        </html>
+    `));
+}
+
+function getGridHTML({
+    entries,
+    srcFn,
+    hrefFn,
+    altFn,
+    lazy = true
+}) {
+    return entries.map(({ large, item }, i) => fixWS`
+        <a ${classes('grid-item', 'box', large && 'large-grid-item')} href="${hrefFn(item)}" style="${getThemeString(item)}">
+            ${img({
+                src: srcFn(item),
+                alt: altFn(item),
+                lazy: (typeof lazy === 'number' ? i >= lazy : lazy),
+                square: true
+            })}
+            <span>${item.name}</span>
+        </a>
+    `).join('\n');
+}
+
+function getAlbumGridHTML(props) {
+    return getGridHTML({
+        srcFn: getAlbumCover,
+        hrefFn: album => `${C.ALBUM_DIRECTORY}/${album.directory}/index.html`,
+        altFn: () => 'album cover',
+        ...props
+    });
+}
+
+function getAlbumGridHTML(props) {
+    return getGridHTML({
+        srcFn: getAlbumCover,
+        hrefFn: album => `${C.ALBUM_DIRECTORY}/${album.directory}/index.html`,
+        altFn: () => 'album cover',
+        ...props
+    });
+}
+
+function getFlashGridHTML(props) {
+    return getGridHTML({
+        srcFn: getFlashCover,
+        hrefFn: flash => `${C.FLASH_DIRECTORY}/${flash.directory}/index.html`,
+        altFn: () => 'flash art',
+        ...props
+    });
+}
+
+function getNewReleases(numReleases) {
+    const latestFirst = albumData.slice().reverse();
+
+    // TODO: Major fan albums
+    const majorReleases = [];
+    majorReleases.push(latestFirst.find(album => album.isOfficial));
+
+    const otherReleases = latestFirst
+        .filter(album => !majorReleases.includes(album))
+        .slice(0, numReleases - majorReleases.length);
+
+    return [
+        ...majorReleases.map(album => ({large: true, item: album})),
+        ...otherReleases.map(album => ({large: false, item: album}))
+    ];
+}
+
 function writeMiscellaneousPages() {
     return progressPromiseAll('Writing miscellaneous pages.', [
-        writePage([], fixWS`
-            <title>${SITE_TITLE}</title>
-            <meta name="description" content="Expansive resource for anyone interested in fan- and official music alike; an archive for all things related.">
-        `, fixWS`
-            <body id="top-index">
-                <div id="content">
+        writePage([], {
+            title: SITE_TITLE,
+            meta: {
+                description: "Expansive resource for anyone interested in fan-made and official Homestuck music alike; an archive for all things related."
+            },
+            main: {
+                classes: ['top-index'],
+                content: fixWS`
                     <h1>${SITE_TITLE}</h1>
-                    <div id="intro-menu">
-                        <p>Explore the site!</p>
-                        <a href="${C.LISTING_DIRECTORY}/index.html">Listings</a>
-                        <a href="${C.FLASH_DIRECTORY}/index.html">Flashes &amp; Games</a>
-                        <a href="${C.ABOUT_DIRECTORY}/index.html">About &amp; Credits</a>
-                        <a href="${C.FEEDBACK_DIRECTORY}/index.html">Feedback &amp; Suggestions</a>
-                        <a href="${C.CHANGELOG_DIRECTORY}/index.html">Changelog</a>
-                        <p>...or choose an album:</p>
-                    </div>
-                    <h2>Beyond Canon</h2>
-                    <h3>The future of Homestuck music, today.<br>Albums by the Homestuck^2 Music Team. 2020+.</h2>
+                    <h2>New Releases</h2>
                     <div class="grid-listing">
-                        ${albumData.filter(album => album.isBeyond).reverse().map(album => fixWS`
-                            <a class="grid-item" href="${C.ALBUM_DIRECTORY}/${album.directory}/index.html" style="${getThemeString(album)}">
-                                <img src="${getAlbumCover(album)}" alt="cover art">
-                                <span>${album.name}</span>
-                            </a>
-                        `).join('\n')}
+                        ${getAlbumGridHTML({
+                            entries: getNewReleases(4),
+                            lazy: false
+                        })}
                     </div>
                     <h2>Fandom</h2>
-                    <h3>A look into Homestuck's world of music and art created&mdash;and organized&mdash;by fans.<br>The beginning of time, through the end.</h3>
                     <div class="grid-listing">
-                        ${albumData.filter(album => album.isFanon).reverse().map(album => fixWS`
-                            <a class="grid-item" href="${C.ALBUM_DIRECTORY}/${album.directory}/index.html" style="${getThemeString(album)}">
-                                <img src="${getAlbumCover(album)}" alt="cover art">
-                                <span>${album.name}</span>
-                            </a>
-                        `).join('\n')}
-                        <a class="grid-item" href="${C.FEEDBACK_DIRECTORY}/index.html" style="--fg-color: #ffffff">...and more to be added at your request</a>
+                        ${getAlbumGridHTML({
+                            entries: (albumData
+                                .filter(album => album.isFanon)
+                                .reverse()
+                                .slice(0, 7)
+                                .map(album => ({item: album}))),
+                            lazy: true
+                        })}
+                        <div class="grid-actions">
+                            <a class="box grid-item" href="albums/fandom/index.html" style="--fg-color: #ffffff">Explore all!</a>
+                            <a class="box grid-item" href="${C.FEEDBACK_DIRECTORY}/index.html" style="--fg-color: #ffffff">Request an album!</a>
+                        </div>
                     </div>
                     <h2>Official</h2>
-                    <h3>The original discography: a replica of the Homestuck Bandcamp prior to the enmergening.<br>Albums organized by What Pumpkin. 2009&ndash;2019.</h3>
                     <div class="grid-listing">
-                        ${albumData.filter(album => album.isCanon).reverse().map(album => fixWS`
-                            <a class="grid-item" href="${C.ALBUM_DIRECTORY}/${album.directory}/index.html" style="${getThemeString(album)}">
-                                <img src="${getAlbumCover(album)}" alt="cover art">
-                                <span>${album.name}</span>
-                            </a>
-                        `).join('\n')}
+                        ${getAlbumGridHTML({
+                            entries: (albumData
+                                .filter(album => album.isOfficial)
+                                .reverse()
+                                .slice(0, 11)
+                                .map(album => ({item: album}))),
+                            lazy: true
+                        })}
+                        <div class="grid-actions">
+                            <a class="box grid-item" href="albums/official/index.html" style="--fg-color: #ffffff">Explore all!</a>
+                        </div>
                     </div>
-                </div>
-            </body>
-        `),
-        writePage([C.FLASH_DIRECTORY], `Flashes & Games`, fixWS`
-            <body id="top-index">
-                <div id="content">
-                    <h1>Flashes &amp; Games</h1>
-                    <div id="intro-menu">
-                        <a href="index.html">Home</a>
-                        <a href="${C.LISTING_DIRECTORY}/index.html">Listings</a>
-                        <a href="${C.ABOUT_DIRECTORY}/index.html">About &amp; Credits</a>
-                        <a href="${C.FEEDBACK_DIRECTORY}/index.html">Feedback &amp; Suggestions</a>
-                        <a href="${C.CHANGELOG_DIRECTORY}/index.html">Changelog</a>
+                `
+            },
+            sidebar: {
+                collapse: false,
+                wide: true,
+                content: fixWS`
+                    <h1>Get involved!</h1>
+                    <ul>
+                        <li><a href="${C.FEEDBACK_DIRECTORY}/index.html">Request features or send feedback!</a></li>
+                        <li><a href="donate/index.html">Donate????</a></li>
+                    </ul>
+                    <hr>
+                    <h1>News</h1>
+                    <p>Todo.</p>
+                `
+            },
+            nav: {
+                content: fixWS`
+                    <h2 class="dot-between-spans">
+                        <span><a class="current" href="index.html">Home</a></span>
+                        <span><a href="${C.LISTING_DIRECTORY}/index.html">Listings</a></span>
+                        <span><a href="${C.FLASH_DIRECTORY}/index.html">Flashes &amp; Games</a></span>
+                        <span><a href="${C.ABOUT_DIRECTORY}/index.html">About &amp; Credits</a></span>
+                        <span><a href="${C.FEEDBACK_DIRECTORY}/index.html">Feedback &amp; Suggestions</a></span>
+                        <span><a href="${C.CHANGELOG_DIRECTORY}/index.html">Changelog</a> (${SITE_RELEASE}: ${SITE_VERSION})</span>
+                    </h2>
+                `
+            }
+        }),
+
+        writePage(['albums', 'fandom'], {
+            title: `Albums - Fandom`,
+            main: {
+                classes: ['top-index'],
+                content: fixWS`
+                    <h1>Albums - Fandom</h1>
+                    <div class="grid-listing">
+                        ${getAlbumGridHTML({
+                            entries: (albumData
+                                .filter(album => album.isFanon)
+                                .reverse()
+                                .map(album => ({item: album}))),
+                            lazy: 4
+                        })}
                     </div>
+                `
+            },
+            nav: {simple: true}
+        }),
+
+        writePage(['albums', 'official'], {
+            title: `Albums - Official`,
+            main: {
+                classes: ['top-index'],
+                content: fixWS`
+                    <h1>Albums - Official</h1>
+                    <div class="grid-listing">
+                        ${getAlbumGridHTML({
+                            entries: (albumData
+                                .filter(album => album.isOfficial)
+                                .reverse()
+                                .map(album => ({item: album}))),
+                            lazy: 4
+                        })}
+                    </div>
+                `
+            },
+            nav: {simple: true}
+        }),
+
+        writePage([C.FLASH_DIRECTORY], {
+            title: `Flashes & Games`,
+            main: {
+                classes: ['flash-index'],
+                content: fixWS`
+                    <h1>Flashes &amp; Games</h1>
                     <div class="long-content">
                         <p>Also check out:</p>
                         <ul>
@@ -925,60 +1219,72 @@ function writeMiscellaneousPages() {
                             <li>bgreco.net's <a href="https://www.bgreco.net/hsflash.html">Homestuck HQ Audio Flashes</a>: an index of all HS Flash animations with Bandcamp-quality audio built in. (Also the source for many thumbnails below!)</li>
                         </ul>
                     </div>
-                    <div class="grid-listing">
-                        ${flashData.map(flash => flash.act8r8k ? fixWS`
-                            <h2 style="${getThemeString(flash)}"><a href="${C.FLASH_DIRECTORY}/${getFlashDirectory(flashData.find(f => !f.act8r8k && f.act === flash.act))}/index.html">${flash.act}</a></h2>
-                        ` : fixWS`
-                            <a class="grid-item" href="${C.FLASH_DIRECTORY}/${getFlashDirectory(flash)}/index.html" style="${getThemeString(flash)}">
-                                <img src="${getFlashCover(flash)}" alt="cover art">
-                                <span>${flash.name}</span>
-                            </a>
-                        `).join('\n')}
-                    </div>
-                </div>
-            </body>
-        `),
-        writePage([C.ABOUT_DIRECTORY], 'About &amp; Credits', fixWS`
-            <body>
-                <div id="content">
+                    ${flashData.filter(flash => flash.act8r8k).map((act, i) => fixWS`
+                        <h2 style="${getThemeString(act)}"><a href="${C.FLASH_DIRECTORY}/${getFlashDirectory(flashData.find(f => !f.act8r8k && f.act === act.act))}/index.html">${act.act}</a></h2>
+                        <div class="grid-listing">
+                            ${getFlashGridHTML({
+                                entries: (flashData
+                                    .filter(flash => !flash.act8r8k && flash.act === act.act)
+                                    .map(flash => ({item: flash}))),
+                                lazy: i === 0 ? 4 : true
+                            })}
+                        </div>
+                    `).join('\n')}
+                `
+            },
+            nav: {simple: true}
+        }),
+
+        writePage([C.ABOUT_DIRECTORY], {
+            title: `About &amp; Credits`,
+            main: {
+                content: fixWS`
                     <div class="long-content">
                         <h1>${SITE_TITLE}</h1>
-                        <p><a href="index.html">(Home)</a></p>
                         ${transformMultiline(SITE_ABOUT, true)}
                     </div>
-                </div>
-            </body>
-        `),
-        writePage([C.CHANGELOG_DIRECTORY], `Changelog`, fixWS`
-            <body>
-                <div id="content">
+                `
+            },
+            nav: {simple: true}
+        }),
+
+        writePage([C.CHANGELOG_DIRECTORY], {
+            title: `Changelog`,
+            main: {
+                content: fixWS`
                     <div class="long-content">
                         <h1>Changelog</h1>
-                        <p><a href="index.html">(Home)</a></p>
                         ${transformMultiline(SITE_CHANGELOG, true)}
                     </div>
-                </div>
-            </body>
-        `),
-        writePage([C.FEEDBACK_DIRECTORY], 'Feedback &amp; Suggestions!', fixWS`
-            <body>
-                <div id="content">
+                `
+            },
+            nav: {simple: true}
+        }),
+
+        writePage([C.FEEDBACK_DIRECTORY], {
+            title: `Feedback &amp; Suggestions!`,
+            main: {
+                content: fixWS`
                     <div class="long-content">
                         <h1>Feedback &amp; Suggestions!</h1>
-                        <p><a href="index.html">(Home)</a></p>
                         ${SITE_FEEDBACK}
                     </div>
-                </div>
-            </body>
-        `),
-        writePage([C.JS_DISABLED_DIRECTORY], 'JavaScript Disabled', fixWS`
-            <body>
-                <div id="content">
+                `
+            },
+            nav: {simple: true}
+        }),
+
+        writePage([C.JS_DISABLED_DIRECTORY], {
+            title: 'JavaScript Disabled',
+            main: {
+                content: fixWS`
                     <h1>JavaScript Disabled (or out of date)</h1>
                     ${SITE_JS_DISABLED}
-                </div>
-            </body>
-        `),
+                `
+            },
+            nav: {simple: true}
+        }),
+
         writeFile('data.js', fixWS`
             // Yo, this file is gener8ted. Don't mess around with it!
             window.albumData = ${stringifyAlbumData()};
@@ -1008,155 +1314,189 @@ async function writeAlbumPage(album) {
         </li>
     `;
     const listTag = getAlbumListTag(album);
-    await writePage([C.ALBUM_DIRECTORY, album.directory], album.name, fixWS`
-        <body style="${getThemeString(album)}; --album-directory: ${album.directory}">
-            <div id="header">
-                ${generateHeaderForAlbum(album)}
-            </div>
-            <div class="columns">
-                <div id="sidebar">
-                    ${generateSidebarForAlbum(album)}
-                </div>
-                <div id="content">
-                    <a id="cover-art" href="${getAlbumCover(album)}"><img src="${getAlbumCover(album)}" alt="cover art"></a>
-                    <h1>${album.name}</h1>
-                    <p>
-                        ${album.artists && `By ${getArtistString(album.artists, true)}.<br>` || `<!-- (here: Full-album musician credits) -->`}
-                        ${album.coverArtists &&  `Cover art by ${getArtistString(album.coverArtists, true)}.<br>` || `<!-- (here: Cover art credits) -->`}
-                        Released ${getDateString(album)}.
-                        ${+album.artDate !== +album.date && `<br>Art released ${getDateString({date: album.artDate})}.` || `<!-- (here: Cover art release date) -->`}
-                        <br>Duration: ~${getDurationString(getTotalDuration(album.tracks))}.</p>
-                    </p>
-                    ${album.urls.length && `<p>Listen on ${joinNoOxford(album.urls.map(url => fancifyURL(url, {album: true})), 'or')}.</p>` || `<!-- (here: Listen on...) -->`}
-                    ${album.usesGroups ? fixWS`
-                        <p>This album listing is divided into groups:</p>
-                        <dl class="album-group-list">
-                            ${album.tracks.flatMap((track, i, arr) => [
-                                (i > 0 && track.group !== arr[i - 1].group) && `</${listTag}></dd>`,
-                                (i === 0 || track.group !== arr[i - 1].group) && fixWS`
-                                    <dt>${track.group}:</dt>
-                                    <dd><${listTag}>
-                                `,
-                                trackToListItem(track),
-                                i === arr.length && `</${listTag}></dd>`
-                            ].filter(Boolean)).join('\n')}
-                        </dl>
-                    ` : fixWS`
-                        <${listTag}>
-                            ${album.tracks.map(trackToListItem).join('\n')}
-                        </${listTag}>
-                    `}
-                    ${album.commentary && fixWS`
-                        <p>Artist commentary:</p>
-                        <blockquote>
-                            ${transformMultiline(album.commentary)}
-                        </blockquote>
-                    ` || `<!-- (here: Full-album commentary) -->`}
+    await writePage([C.ALBUM_DIRECTORY, album.directory], {
+        title: album.name,
+        body: {
+            style: `${getThemeString(album)}; --album-directory: ${album.directory}`
+        },
+        main: {
+            content: fixWS`
+                ${img({
+                    src: getAlbumCover(album),
+                    id: 'cover-art',
+                    link: true,
+                    square: true
+                })}
+                <h1>${album.name}</h1>
+                <p>
+                    ${album.artists && `By ${getArtistString(album.artists, true)}.<br>` || `<!-- (here: Full-album musician credits) -->`}
+                    ${album.coverArtists &&  `Cover art by ${getArtistString(album.coverArtists, true)}.<br>` || `<!-- (here: Cover art credits) -->`}
+                    Released ${getDateString(album)}.
+                    ${+album.artDate !== +album.date && `<br>Art released ${getDateString({date: album.artDate})}.` || `<!-- (here: Cover art release date) -->`}
+                    <br>Duration: ~${getDurationString(getTotalDuration(album.tracks))}.</p>
+                </p>
+                ${album.urls.length && `<p>Listen on ${joinNoOxford(album.urls.map(url => fancifyURL(url, {album: true})), 'or')}.</p>` || `<!-- (here: Listen on...) -->`}
+                ${album.usesGroups ? fixWS`
+                    <p>This album listing is divided into groups:</p>
+                    <dl class="album-group-list">
+                        ${album.tracks.flatMap((track, i, arr) => [
+                            (i > 0 && track.group !== arr[i - 1].group) && `</${listTag}></dd>`,
+                            (i === 0 || track.group !== arr[i - 1].group) && fixWS`
+                                <dt>${track.group}:</dt>
+                                <dd><${listTag}>
+                            `,
+                            trackToListItem(track),
+                            i === arr.length && `</${listTag}></dd>`
+                        ].filter(Boolean)).join('\n')}
+                    </dl>
+                ` : fixWS`
+                    <${listTag}>
+                        ${album.tracks.map(trackToListItem).join('\n')}
+                    </${listTag}>
+                `}
+                ${album.commentary && fixWS`
+                    <p>Artist commentary:</p>
+                    <blockquote>
+                        ${transformMultiline(album.commentary)}
+                    </blockquote>
+                ` || `<!-- (here: Full-album commentary) -->`}
+            `
+        },
+        sidebar: {
+            content: generateSidebarForAlbum(album)
+        },
+        nav: {
+            links: [
+                ['index.html', 'Home'],
+                [`${C.ALBUM_DIRECTORY}/${album.directory}/index.html`, album.name],
+                [null, generateAlbumNavLinks(album)]
+            ],
+            content: fixWS`
+                <div>
+                    ${generateAlbumChronologyLinks(album)}
                 </div>
-            </div>
-        </body>
-    `);
+            `
+        }
+    });
 }
 
 async function writeTrackPage(track) {
+    const { album } = track;
     const tracksThatReference = getTracksThatReference(track);
     const ttrFanon = tracksThatReference.filter(t => t.album.isFanon);
     const ttrOfficial = tracksThatReference.filter(t => t.album.isOfficial);
     const tracksReferenced = getTracksReferencedBy(track);
     const flashesThatFeature = getFlashesThatFeature(track);
-    await writePage([C.TRACK_DIRECTORY, track.directory], track.name, fixWS`
-        <body style="${getThemeString(track)}; --album-directory: ${track.album.directory}; --track-directory: ${track.directory}">
-            <div id="header">
-                ${generateHeaderForAlbum(track.album, track)}
-            </div>
-            <div class="columns">
-                <div id="sidebar">
-                    ${generateSidebarForAlbum(track.album, track)}
-                </div>
-                <div id="content">
-                    <a href="${getTrackCover(track)}" id="cover-art"><img src="${getTrackCover(track)}" alt="cover art"></a>
-                    <h1>${track.name}</h1>
-                    <p>
-                        By ${getArtistString(track.artists, true)}.
-                        ${track.coverArtists &&  `<br>Cover art by ${getArtistString(track.coverArtists, true)}.` || `<!-- (here: Cover art credits) -->`}
-                        ${track.album.directory !== C.UNRELEASED_TRACKS_DIRECTORY && `<br>Released ${getDateString(track)}.` || `<!-- (here: Track release date) -->`}
-                        ${+track.artDate !== +track.date && `<br>Art released ${getDateString({date: track.artDate})}.` || `<!-- (here: Cover art release date, if it differs) -->`}
-                        ${track.duration && `<br>Duration: ${getDurationString(track.duration)}.` || `<!-- (here: Track duration) -->`}
-                    </p>
-                    ${track.urls.length ? fixWS`
-                        <p>Listen on ${joinNoOxford(track.urls.map(fancifyURL), 'or')}.</p>
-                    ` : fixWS`
-                        <p>This track has no URLs at which it can be listened.</p>
-                    `}
-                    ${track.contributors.textContent && fixWS`
-                        <p>Contributors:<br>${transformInline(track.contributors.textContent)}</p>
-                    `}
-                    ${track.contributors.length && fixWS`
-                        <p>Contributors:</p>
-                        <ul>
-                            ${track.contributors.map(contrib => `<li>${getArtistString([contrib], true)}</li>`).join('\n')}
-                        </ul>
-                    ` || `<!-- (here: Track contributor credits) -->`}
-                    ${tracksReferenced.length && fixWS`
-                        <p>Tracks that <i>${track.name}</i> references:</p>
-                        <ul>
-                            ${tracksReferenced.map(track => fixWS`
-                                <li>
-                                    <a href="${C.TRACK_DIRECTORY}/${track.directory}/index.html" style="${getThemeString(track)}">${track.name}</a>
-                                    <span class="by">by ${getArtistString(track.artists)}</span>
-                                </li>
-                            `).join('\n')}
-                        </ul>
-                    ` || `<!-- (here: List of tracks referenced) -->`}
-                    ${tracksThatReference.length && fixWS`
-                        <p>Tracks that reference <i>${track.name}</i>:</p>
-                        <dl>
-                            ${ttrOfficial.length && fixWS`
-                                <dt>Official:</dt>
-                                <dd><ul>
-                                    ${ttrOfficial.map(track => fixWS`
-                                        <li>
-                                            <a href="${C.TRACK_DIRECTORY}/${track.directory}/index.html" style="${getThemeString(track)}">${track.name}</a>
-                                            <span class="by">by ${getArtistString(track.artists)}</span>
-                                        </li>
-                                    `).join('\n')}
-                                </ul></dd>
-                            ` || `<!-- (here: Official tracks) -->`}
-                            ${ttrFanon.length && fixWS`
-                                <dt>Fandom:</dt>
-                                <dd><ul>
-                                    ${ttrFanon.map(track => fixWS`
-                                        <li>
-                                            <a href="${C.TRACK_DIRECTORY}/${track.directory}/index.html" style="${getThemeString(track)}">${track.name}</a>
-                                            <span class="by">by ${getArtistString(track.artists)}</span>
-                                        </li>
-                                    `).join('\n')}
-                                </ul></dd>
-                            ` || `<!-- (here: Fandom tracks) -->`}
-                        </dl>
-                    ` || `<!-- (here: Tracks that reference this track) -->`}
-                    ${flashesThatFeature.length && fixWS`
-                        <p>Flashes &amp; games that feature <i>${track.name}</i>:</p>
-                        <ul>
-                            ${flashesThatFeature.map(flash => `<li>${getFlashLinkHTML(flash)}</li>`).join('\n')}
-                        </ul>
-                    ` || `<!-- (here: Flashes that feature this track) -->`}
-                    ${track.lyrics && fixWS`
-                        <p>Lyrics:</p>
-                        <blockquote>
-                            ${transformMultiline(track.lyrics)}
-                        </blockquote>
-                    ` || `<!-- (here: Track lyrics) -->`}
-                    ${track.commentary && fixWS`
-                        <p>Artist commentary:</p>
-                        <blockquote>
-                            ${transformMultiline(track.commentary)}
-                        </blockquote>
-                    ` || `<!-- (here: Track commentary) -->`}
+    await writePage([C.TRACK_DIRECTORY, track.directory], {
+        title: track.name,
+        body: {
+            style: `${getThemeString(track)}; --album-directory: ${album.directory}; --track-directory: ${track.directory}`
+        },
+        sidebar: {
+            content: generateSidebarForAlbum(album, track)
+        },
+        nav: {
+            links: [
+                ['index.html', 'Home'],
+                [`${C.ALBUM_DIRECTORY}/${album.directory}/index.html`, album.name],
+                [`${C.TRACK_DIRECTORY}/${track.direcotry}/index.html`, track.name],
+                [null, generateAlbumNavLinks(album, track)]
+            ],
+            content: fixWS`
+                <div>
+                    ${generateAlbumChronologyLinks(album, track)}
                 </div>
-            </div>
-        </body>
-    `);
+            `
+        },
+        main: {
+            content: fixWS`
+                ${img({
+                    src: getTrackCover(track),
+                    id: 'cover-art',
+                    link: true,
+                    square: true
+                })}
+                <h1>${track.name}</h1>
+                <p>
+                    By ${getArtistString(track.artists, true)}.
+                    ${track.coverArtists &&  `<br>Cover art by ${getArtistString(track.coverArtists, true)}.` || `<!-- (here: Cover art credits) -->`}
+                    ${album.directory !== C.UNRELEASED_TRACKS_DIRECTORY && `<br>Released ${getDateString(track)}.` || `<!-- (here: Track release date) -->`}
+                    ${+track.artDate !== +track.date && `<br>Art released ${getDateString({date: track.artDate})}.` || `<!-- (here: Cover art release date, if it differs) -->`}
+                    ${track.duration && `<br>Duration: ${getDurationString(track.duration)}.` || `<!-- (here: Track duration) -->`}
+                </p>
+                ${track.urls.length ? fixWS`
+                    <p>Listen on ${joinNoOxford(track.urls.map(fancifyURL), 'or')}.</p>
+                ` : fixWS`
+                    <p>This track has no URLs at which it can be listened.</p>
+                `}
+                ${track.contributors.textContent && fixWS`
+                    <p>Contributors:<br>${transformInline(track.contributors.textContent)}</p>
+                `}
+                ${track.contributors.length && fixWS`
+                    <p>Contributors:</p>
+                    <ul>
+                        ${track.contributors.map(contrib => `<li>${getArtistString([contrib], true)}</li>`).join('\n')}
+                    </ul>
+                ` || `<!-- (here: Track contributor credits) -->`}
+                ${tracksReferenced.length && fixWS`
+                    <p>Tracks that <i>${track.name}</i> references:</p>
+                    <ul>
+                        ${tracksReferenced.map(track => fixWS`
+                            <li>
+                                <a href="${C.TRACK_DIRECTORY}/${track.directory}/index.html" style="${getThemeString(track)}">${track.name}</a>
+                                <span class="by">by ${getArtistString(track.artists)}</span>
+                            </li>
+                        `).join('\n')}
+                    </ul>
+                ` || `<!-- (here: List of tracks referenced) -->`}
+                ${tracksThatReference.length && fixWS`
+                    <p>Tracks that reference <i>${track.name}</i>:</p>
+                    <dl>
+                        ${ttrOfficial.length && fixWS`
+                            <dt>Official:</dt>
+                            <dd><ul>
+                                ${ttrOfficial.map(track => fixWS`
+                                    <li>
+                                        <a href="${C.TRACK_DIRECTORY}/${track.directory}/index.html" style="${getThemeString(track)}">${track.name}</a>
+                                        <span class="by">by ${getArtistString(track.artists)}</span>
+                                    </li>
+                                `).join('\n')}
+                            </ul></dd>
+                        ` || `<!-- (here: Official tracks) -->`}
+                        ${ttrFanon.length && fixWS`
+                            <dt>Fandom:</dt>
+                            <dd><ul>
+                                ${ttrFanon.map(track => fixWS`
+                                    <li>
+                                        <a href="${C.TRACK_DIRECTORY}/${track.directory}/index.html" style="${getThemeString(track)}">${track.name}</a>
+                                        <span class="by">by ${getArtistString(track.artists)}</span>
+                                    </li>
+                                `).join('\n')}
+                            </ul></dd>
+                        ` || `<!-- (here: Fandom tracks) -->`}
+                    </dl>
+                ` || `<!-- (here: Tracks that reference this track) -->`}
+                ${flashesThatFeature.length && fixWS`
+                    <p>Flashes &amp; games that feature <i>${track.name}</i>:</p>
+                    <ul>
+                        ${flashesThatFeature.map(flash => `<li>${getFlashLinkHTML(flash)}</li>`).join('\n')}
+                    </ul>
+                ` || `<!-- (here: Flashes that feature this track) -->`}
+                ${track.lyrics && fixWS`
+                    <p>Lyrics:</p>
+                    <blockquote>
+                        ${transformMultiline(track.lyrics)}
+                    </blockquote>
+                ` || `<!-- (here: Track lyrics) -->`}
+                ${track.commentary && fixWS`
+                    <p>Artist commentary:</p>
+                    <blockquote>
+                        ${transformMultiline(track.commentary)}
+                    </blockquote>
+                ` || `<!-- (here: Track commentary) -->`}
+            `
+        }
+    });
 }
 
 async function writeArtistPages() {
@@ -1202,7 +1542,7 @@ async function writeArtistPage(artistName) {
     // Shish!
     const kebab = C.getArtistDirectory(artistName);
     const index = `${C.ARTIST_DIRECTORY}/${kebab}/index.html`;
-    await writePage([C.ARTIST_DIRECTORY, kebab], artistName, fixWS`
+    await OLD_writePage([C.ARTIST_DIRECTORY, kebab], artistName, fixWS`
         <body>
             <div id="content">
                 ${ENABLE_ARTIST_AVATARS && await access(path.join(C.ARTIST_AVATAR_DIRECTORY, kebab + '.jpg')).then(() => true, () => false) && fixWS`
@@ -1358,17 +1698,110 @@ async function writeFlashPage(flash) {
         next && `<a href="${getHrefOfAnythingMan(next)}" id="next-button" title="${next.name}">Next</a>`
     ].filter(Boolean);
 
-    await writePage([C.FLASH_DIRECTORY, kebab], flash.name, fixWS`
-        <body style="${getThemeString(flash)}; --flash-directory: ${flash.directory}">
-            <div id="header">
-                <h2>
-                    <a href="index.html">Home</a>
-                    / <a href="${C.FLASH_DIRECTORY}/index.html">Flashes &amp; Games</a>
-                    / <a href="${C.FLASH_DIRECTORY}/${kebab}/index.html">${flash.name}</a>
-                    ${parts.length && fixWS`
-                        <span>(${parts.join(', ')})</span>
-                    ` || `<!-- (here: Flash navigation links) -->`}
-                </h2>
+    await writePage([C.FLASH_DIRECTORY, kebab], {
+        title: flash.name,
+        body: {
+            style: `${getThemeString(flash)}; --flash-directory: ${flash.directory}`
+        },
+        main: {
+            content: fixWS`
+                <h1>${flash.name}</h1>
+                <a id="cover-art" href="${getFlashCover(flash)}"><img src="${getFlashCover(flash)}" alt="cover art"></a>
+                <p>Released ${getDateString(flash)}.</p>
+                ${(flash.page || flash.urls.length) && `<p>Play on ${joinNoOxford(
+                    [
+                        flash.page && getFlashLink(flash),
+                        ...flash.urls
+                    ].map(url => `<span class="nowrap"><a href="${url}">${fancifyURL(url)}</a>` + (
+                        url.includes('homestuck.com') ? ` (${isNaN(Number(flash.page)) ? 'secret page' : `page ${flash.page}`})` :
+                        url.includes('bgreco.net') ? ` (HQ audio)` :
+                        url.includes('youtu') ? ` (on any device)` :
+                        ''
+                    ) + `</span>`), 'or')}.</p>` || `<!-- (here: Play-online links) -->`}
+                ${flash.contributors.textContent && fixWS`
+                    <p>Contributors:<br>${transformInline(flash.contributors.textContent)}</p>
+                `}
+                ${flash.tracks.length && fixWS`
+                    <p>Tracks featured in <i>${flash.name.replace(/\.$/, '')}</i>:</p>
+                    <ul>
+                        ${flash.tracks.map(ref => {
+                            const track = getLinkedTrack(ref);
+                            const neighm = ref.match(/(.*?\S):/) || [ref, ref];
+                            if (track) {
+                                const neeeighm = neighm[1].replace('$$$$', ':');
+                                return fixWS`
+                                    <li>
+                                        <a href="${C.TRACK_DIRECTORY}/${track.directory}/index.html" style="${getThemeString(track)}">${neeeighm}</a>
+                                        <span class="by">by ${getArtistString(track.artists)}</span>
+                                    </li>
+                                `;
+                            } else {
+                                const by = ref.match(/\(by .*\)/);
+                                if (by) {
+                                    const name = ref.replace(by, '').trim();
+                                    const contribs = by[0].replace(/\(by |\)/g, '').split(',').map(w => ({who: w.trim()}));
+                                    return `<li>${name} <span class="by">by ${getArtistString(contribs)}</span></li>`;
+                                } else {
+                                    return `<li>${ref}</li>`;
+                                }
+                            }
+                        }).join('\n')}
+                    </ul>
+                ` || `<!-- (here: Flash track listing) -->`}
+                ${flash.contributors.length && fixWS`
+                    <p>Contributors:</p>
+                    <ul>
+                        ${flash.contributors.map(({ who, what }) => fixWS`
+                            <li>${artistNames.includes(who)
+                                ? `<a href="${C.ARTIST_DIRECTORY}/${C.getArtistDirectory(who)}/index.html">${who}</a>`
+                                : who
+                            }${what && ` (${getContributionString({what})})`}</li>
+                        `).join('\n')}
+                    </ul>
+                ` || `<!-- (here: Flash contributor details) -->`}
+            `
+        },
+        sidebar: {
+            content: fixWS`
+                <h1><a href="${C.FLASH_DIRECTORY}/index.html">Flashes &amp; Games</a></h1>
+                <dl>
+                    ${flashData.filter(f => f.act8r8k).filter(({ act }) =>
+                        act.startsWith('Act 1') ||
+                        act.startsWith('Act 6 Act 1') ||
+                        act.startsWith('Hiveswap') ||
+                        (
+                            flashData.findIndex(f => f.act === act) < act6 ? side === 1 :
+                            flashData.findIndex(f => f.act === act) < outsideCanon ? side === 2 :
+                            true
+                        )
+                    ).flatMap(({ act, color }) => [
+                        act.startsWith('Act 1') && `<dt ${classes('side', side === 1 && 'current')}><a href="${C.FLASH_DIRECTORY}/${getFlashDirectory(flashData.find(f => !f.act8r8k && f.act.startsWith('Act 1')))}/index.html" style="--fg-color: #4ac925">Side 1 (Acts 1-5)</a></dt>`
+                        || act.startsWith('Act 6 Act 1') && `<dt ${classes('side', side === 2 && 'current')}><a href="${C.FLASH_DIRECTORY}/${getFlashDirectory(flashData.find(f => !f.act8r8k && f.act.startsWith('Act 6')))}/index.html" style="--fg-color: #1076a2">Side 2 (Acts 6-7)</a></dt>`
+                        || act.startsWith('Hiveswap') && `<dt ${classes('side', side === 0 && 'current')}><a href="${C.FLASH_DIRECTORY}/${getFlashDirectory(flashData.find(f => !f.act8r8k && f.act.startsWith('Hiveswap')))}/index.html" style="--fg-color: #008282">Outside Canon (Misc. Games)</a></dt>`,
+                        (
+                            flashData.findIndex(f => f.act === act) < act6 ? side === 1 :
+                            flashData.findIndex(f => f.act === act) < outsideCanon ? side === 2 :
+                            true
+                        ) && `<dt ${classes(act === flash.act && 'current')}><a href="${C.FLASH_DIRECTORY}/${getFlashDirectory(flashData.find(f => !f.act8r8k && f.act === act))}/index.html" style="${getThemeString({color})}">${act}</a></dt>`,
+                        act === flash.act && fixWS`
+                            <dd><ul>
+                                ${flashData.filter(f => !f.act8r8k && f.act === act).map(f => fixWS`
+                                    <li ${classes(f === flash && 'current')}><a href="${C.FLASH_DIRECTORY}/${getFlashDirectory(f)}/index.html" style="${getThemeString(f)}">${f.name}</a></li>
+                                `).join('\n')}
+                            </ul></dd>
+                        `
+                    ]).filter(Boolean).join('\n')}
+                </dl>
+            `
+        },
+        nav: {
+            links: [
+                ['index.html', 'Home'],
+                [`${C.FLASH_DIRECTORY}/index.html`, `Flashes &amp; Games`],
+                [`${C.FLASH_DIRECTORY}/${kebab}/index.html`, flash.name],
+                parts.length && [null, parts.join(', ')]
+            ].filter(Boolean),
+            content: fixWS`
                 <div>
                     ${chronologyLinks(flash, {
                         headingWord: 'flash/game',
@@ -1381,98 +1814,9 @@ async function writeFlashPage(flash) {
                         ]
                     }) || `<!-- (here: Contributor chronology links) -->`}
                 </div>
-            </div>
-            <div class="columns">
-                <div id="sidebar">
-                    <h1><a href="${C.FLASH_DIRECTORY}/index.html">Flashes &amp; Games</a></h1>
-                    <dl>
-                        ${flashData.filter(f => f.act8r8k).filter(({ act }) =>
-                            act.startsWith('Act 1') ||
-                            act.startsWith('Act 6 Act 1') ||
-                            act.startsWith('Hiveswap') ||
-                            (
-                                flashData.findIndex(f => f.act === act) < act6 ? side === 1 :
-                                flashData.findIndex(f => f.act === act) < outsideCanon ? side === 2 :
-                                true
-                            )
-                        ).flatMap(({ act, color }) => [
-                            act.startsWith('Act 1') && `<dt${classes('side', side === 1 && 'current')}><a href="${C.FLASH_DIRECTORY}/${getFlashDirectory(flashData.find(f => !f.act8r8k && f.act.startsWith('Act 1')))}/index.html" style="--fg-color: #4ac925">Side 1 (Acts 1-5)</a></dt>`
-                            || act.startsWith('Act 6 Act 1') && `<dt${classes('side', side === 2 && 'current')}><a href="${C.FLASH_DIRECTORY}/${getFlashDirectory(flashData.find(f => !f.act8r8k && f.act.startsWith('Act 6')))}/index.html" style="--fg-color: #1076a2">Side 2 (Acts 6-7)</a></dt>`
-                            || act.startsWith('Hiveswap') && `<dt${classes('side', side === 0 && 'current')}><a href="${C.FLASH_DIRECTORY}/${getFlashDirectory(flashData.find(f => !f.act8r8k && f.act.startsWith('Hiveswap')))}/index.html" style="--fg-color: #008282">Outside Canon (Misc. Games)</a></dt>`,
-                            (
-                                flashData.findIndex(f => f.act === act) < act6 ? side === 1 :
-                                flashData.findIndex(f => f.act === act) < outsideCanon ? side === 2 :
-                                true
-                            ) && `<dt${classes(act === flash.act && 'current')}><a href="${C.FLASH_DIRECTORY}/${getFlashDirectory(flashData.find(f => !f.act8r8k && f.act === act))}/index.html" style="${getThemeString({color})}">${act}</a></dt>`,
-                            act === flash.act && fixWS`
-                                <dd><ul>
-                                    ${flashData.filter(f => !f.act8r8k && f.act === act).map(f => fixWS`
-                                        <li${classes(f === flash && 'current')}><a href="${C.FLASH_DIRECTORY}/${getFlashDirectory(f)}/index.html" style="${getThemeString(f)}">${f.name}</a></li>
-                                    `).join('\n')}
-                                </ul></dd>
-                            `
-                        ]).filter(Boolean).join('\n')}
-                    </dl>
-                </div>
-                <div id="content">
-                    <h1>${flash.name}</h1>
-                    <a id="cover-art" href="${getFlashCover(flash)}"><img src="${getFlashCover(flash)}" alt="cover art"></a>
-                    <p>Released ${getDateString(flash)}.</p>
-                    ${(flash.page || flash.urls.length) && `<p>Play on ${joinNoOxford(
-                        [
-                            flash.page && getFlashLink(flash),
-                            ...flash.urls
-                        ].map(url => `<span class="nowrap"><a href="${url}">${fancifyURL(url)}</a>` + (
-                            url.includes('homestuck.com') ? ` (${isNaN(Number(flash.page)) ? 'secret page' : `page ${flash.page}`})` :
-                            url.includes('bgreco.net') ? ` (HQ audio)` :
-                            url.includes('youtu') ? ` (on any device)` :
-                            ''
-                        ) + `</span>`), 'or')}.</p>` || `<!-- (here: Play-online links) -->`}
-                    ${flash.contributors.textContent && fixWS`
-                        <p>Contributors:<br>${transformInline(flash.contributors.textContent)}</p>
-                    `}
-                    ${flash.tracks.length && fixWS`
-                        <p>Tracks featured in <i>${flash.name.replace(/\.$/, '')}</i>:</p>
-                        <ul>
-                            ${flash.tracks.map(ref => {
-                                const track = getLinkedTrack(ref);
-                                const neighm = ref.match(/(.*?\S):/) || [ref, ref];
-                                if (track) {
-                                    const neeeighm = neighm[1].replace('$$$$', ':');
-                                    return fixWS`
-                                        <li>
-                                            <a href="${C.TRACK_DIRECTORY}/${track.directory}/index.html" style="${getThemeString(track)}">${neeeighm}</a>
-                                            <span class="by">by ${getArtistString(track.artists)}</span>
-                                        </li>
-                                    `;
-                                } else {
-                                    const by = ref.match(/\(by .*\)/);
-                                    if (by) {
-                                        const name = ref.replace(by, '').trim();
-                                        const contribs = by[0].replace(/\(by |\)/g, '').split(',').map(w => ({who: w.trim()}));
-                                        return `<li>${name} <span class="by">by ${getArtistString(contribs)}</span></li>`;
-                                    } else {
-                                        return `<li>${ref}</li>`;
-                                    }
-                                }
-                            }).join('\n')}
-                        </ul>
-                    ` || `<!-- (here: Flash track listing) -->`}
-                    ${flash.contributors.length && fixWS`
-                        <p>Contributors:</p>
-                        <ul>
-                            ${flash.contributors.map(({ who, what }) => fixWS`
-                                <li>${artistNames.includes(who)
-                                    ? `<a href="${C.ARTIST_DIRECTORY}/${C.getArtistDirectory(who)}/index.html">${who}</a>`
-                                    : who
-                                }${what && ` (${getContributionString({what})})`}</li>
-                            `).join('\n')}
-                        </ul>
-                    ` || `<!-- (here: Flash contributor details) -->`}
-                </div>
-            </div>
-        </body>
-    `);
+            `
+        }
+    });
 }
 
 function writeListingPages() {
@@ -1632,7 +1976,7 @@ function writeListingPages() {
     };
 
     return progressPromiseAll(`Writing listing pages.`, [
-        writePage([C.LISTING_DIRECTORY], `Listings Index`, fixWS`
+        OLD_writePage([C.LISTING_DIRECTORY], `Listings Index`, fixWS`
             <body>
                 <div id="header">
                     ${generateHeaderForListings(listingDescriptors)}
@@ -1649,7 +1993,7 @@ function writeListingPages() {
                 </div>
             </body>
         `),
-        writePage([C.LISTING_DIRECTORY, 'all-commentary'], 'All Commentary', fixWS`
+        OLD_writePage([C.LISTING_DIRECTORY, 'all-commentary'], 'All Commentary', fixWS`
             <body>
                 <div id="header">
                     ${generateHeaderForListings(listingDescriptors, 'all-commentary')}
@@ -1702,7 +2046,7 @@ function writeListingPages() {
                 </div>
             </body>
         `),
-        writePage([C.LISTING_DIRECTORY, 'random'], 'Random Pages', fixWS`
+        OLD_writePage([C.LISTING_DIRECTORY, 'random'], 'Random Pages', fixWS`
             <body>
                 <div id="header">
                     ${generateHeaderForListings(listingDescriptors, 'random')}
@@ -1743,7 +2087,7 @@ function writeListingPages() {
 }
 
 function writeListingPage(directoryParts, title, items, listingDescriptors) {
-    return writePage([C.LISTING_DIRECTORY, ...directoryParts], title, fixWS`
+    return OLD_writePage([C.LISTING_DIRECTORY, ...directoryParts], title, fixWS`
         <body>
             <div id="header">
                 ${generateHeaderForListings(listingDescriptors, directoryParts)}
@@ -1767,7 +2111,7 @@ function writeListingPage(directoryParts, title, items, listingDescriptors) {
 
 function generateHeaderForListings(listingDescriptors, currentDirectoryParts) {
     return fixWS`
-        <h2>
+        <h2 class="highlight-last-link">
             <a href="index.html">Home</a>
             / <a href="${C.LISTING_DIRECTORY}/index.html">Listings</a>
             ${currentDirectoryParts && `/ <a href="${C.LISTING_DIRECTORY}/${
@@ -1794,14 +2138,14 @@ function generateLinkIndexForListings(listingDescriptors, currentDirectoryParts)
     return fixWS`
         <ul>
             ${listingDescriptors.map(([ ldDirectoryParts, ldTitle ]) => fixWS`
-                <li${classes(currentDirectoryParts === ldDirectoryParts && 'current')}>
+                <li ${classes(currentDirectoryParts === ldDirectoryParts && 'current')}>
                     <a href="${C.LISTING_DIRECTORY}/${ldDirectoryParts.join('/')}/index.html">${ldTitle}</a>
                 </li>
             `).join('\n')}
-            <li${classes(currentDirectoryParts === 'all-commentary' && 'current')}>
+            <li ${classes(currentDirectoryParts === 'all-commentary' && 'current')}>
                 <a href="${C.LISTING_DIRECTORY}/all-commentary/index.html">All Commentary</a>
             </li>
-            <li${classes(currentDirectoryParts === 'random' && 'current')}>
+            <li ${classes(currentDirectoryParts === 'random' && 'current')}>
                 <a href="${C.LISTING_DIRECTORY}/random/index.html">Random Pages</a>
             </li>
         </ul>
@@ -1940,9 +2284,24 @@ function getThemeString({fg, bg, theme}) {
 }
 */
 
+// Graciously stolen from https://stackoverflow.com/a/54071699! ::::)
+// in: r,g,b in [0,1], out: h in [0,360) and s,l in [0,1]
+function rgb2hsl(r,g,b) {
+    let a=Math.max(r,g,b), n=a-Math.min(r,g,b), f=(1-Math.abs(a+a-n-1));
+    let h= n && ((a==r) ? (g-b)/n : ((a==g) ? 2+(b-r)/n : 4+(r-g)/n));
+    return [60*(h<0?h+6:h), f ? n/f : 0, (a+a-n)/2];
+}
+
 function getThemeString({color}) {
+    const [ r, g, b ] = color.slice(1)
+        .match(/[0-9a-fA-F]{2,2}/g)
+        .slice(0, 3)
+        .map(val => parseInt(val, 16) / 255);
+    const [ h, s, l ] = rgb2hsl(r, g, b);
+    const dim = `hsl(${Math.round(h)}deg, ${Math.round(s * 50)}%, ${Math.round(l * 80)}%)`;
+
     if (color) {
-        return `--fg-color: ${color}`;
+        return `--fg-color: ${color}; --dim-color: ${dim}`;
     } else {
         return ``;
     }
@@ -2043,54 +2402,48 @@ function chronologyLinks(currentTrack, {
     }).filter(Boolean).join('\n');
 }
 
-function generateHeaderForAlbum(album, currentTrack = null) {
+function generateAlbumNavLinks(album, currentTrack = null) {
     const index = currentTrack && album.tracks.indexOf(currentTrack)
     const previous = currentTrack && album.tracks[index - 1]
     const next = currentTrack && album.tracks[index + 1]
-    return fixWS`
-        <h2>
-            <a href="index.html">Home</a>
-            / <a href="${C.ALBUM_DIRECTORY}/${album.directory}/index.html">${album.name}</a>
-            ${currentTrack && `/ <a href="${C.TRACK_DIRECTORY}/${currentTrack.directory}/index.html">${currentTrack.name}</a>` || `<!-- (here: Link to current track) --> `}
-            ${album.tracks.length > 1 && fixWS`
-                <span>(${[
-                    previous && `<a href="${C.TRACK_DIRECTORY}/${previous.directory}/index.html" id="previous-button" title="${previous.name}">Previous</a>`,
-                    next && `<a href="${C.TRACK_DIRECTORY}/${next.directory}/index.html" id="next-button" title="${next.name}">Next</a>`,
-                    `<a href="${C.JS_DISABLED_DIRECTORY}/index.html" data-random="track-in-album" id="random-button">${currentTrack ? 'Random' : 'Random Track'}</a>`
-                ].filter(Boolean).join(', ')})</span>
-            ` || `<!-- (here: Album navigation links) -->`}
-        </h2>
-        <div>
-            ${currentTrack && chronologyLinks(currentTrack, {
-                headingWord: 'track',
-                sourceData: allTracks,
-                filters: [
-                    {
-                        mapProperty: 'artists',
-                        toArtist: artist => artist
-                    },
-                    {
-                        mapProperty: 'contributors',
-                        toArtist: ({ who }) => who
-                    }
-                ]
-            }) || `<!-- (here: Musician & contributors chronology links) -->`}
-            ${chronologyLinks(currentTrack || album, {
-                headingWord: 'cover art',
-                sourceData: justEverythingSortedByArtDateMan,
-                filters: [
-                    {
-                        mapProperty: 'coverArtists',
-                        toArtist: ({ who }) => who
-                    }
-                ]
-            }) || `<!-- (here: Cover art chronology links) -->`}
-        </div>
-    `;
+    return `(${[
+        previous && `<a href="${C.TRACK_DIRECTORY}/${previous.directory}/index.html" id="previous-button" title="${previous.name}">Previous</a>`,
+        next && `<a href="${C.TRACK_DIRECTORY}/${next.directory}/index.html" id="next-button" title="${next.name}">Next</a>`,
+        `<a href="${C.JS_DISABLED_DIRECTORY}/index.html" data-random="track-in-album" id="random-button">${currentTrack ? 'Random' : 'Random Track'}</a>`
+    ].filter(Boolean).join(', ')})`;
+}
+
+function generateAlbumChronologyLinks(album, currentTrack = null) {
+    return [
+        currentTrack && chronologyLinks(currentTrack, {
+            headingWord: 'track',
+            sourceData: allTracks,
+            filters: [
+                {
+                    mapProperty: 'artists',
+                    toArtist: ({ who }) => who
+                },
+                {
+                    mapProperty: 'contributors',
+                    toArtist: ({ who }) => who
+                }
+            ]
+        }),
+        chronologyLinks(currentTrack || album, {
+            headingWord: 'cover art',
+            sourceData: justEverythingSortedByArtDateMan,
+            filters: [
+                {
+                    mapProperty: 'coverArtists',
+                    toArtist: ({ who }) => who
+                }
+            ]
+        })
+    ].filter(Boolean).join('\n');
 }
 
 function generateSidebarForAlbum(album, currentTrack = null) {
-    const trackToListItem = track => `<li${classes(track === currentTrack && 'current')}><a href="${C.TRACK_DIRECTORY}/${track.directory}/index.html">${track.name}</a></li>`;
+    const trackToListItem = track => `<li ${classes(track === currentTrack && 'current')}><a href="${C.TRACK_DIRECTORY}/${track.directory}/index.html">${track.name}</a></li>`;
     const listTag = getAlbumListTag(album);
     return fixWS`
         <h1><a href="${C.ALBUM_DIRECTORY}/${album.directory}/index.html">${album.name}</a></h1>
@@ -2099,7 +2452,7 @@ function generateSidebarForAlbum(album, currentTrack = null) {
                 ${album.tracks.flatMap((track, i, arr) => [
                     (i > 0 && track.group !== arr[i - 1].group) && `</${listTag}></dd>`,
                     (i === 0 || track.group !== arr[i - 1].group) && fixWS`
-                        <dt style="${getThemeString(track)}"${classes(currentTrack && track.group === currentTrack.group && 'current')}><a href="${C.TRACK_DIRECTORY}/${track.directory}/index.html">${track.group}</a></dt>
+                        <dt style="${getThemeString(track)}" ${classes(currentTrack && track.group === currentTrack.group && 'current')}><a href="${C.TRACK_DIRECTORY}/${track.directory}/index.html">${track.group}</a></dt>
                         <dd><${listTag}>
                     `,
                     (currentTrack && track.group === currentTrack.group) && trackToListItem(track),
@@ -2186,7 +2539,7 @@ function rebaseURLs(directory, html) {
     if (directory === '') {
         return html;
     }
-    return html.replace(/(href|src)="(.*?)"/g, (match, attr, url) => {
+    return html.replace(/(href|src|data-original)="(.*?)"/g, (match, attr, url) => {
         if (url.startsWith('#')) {
             return `${attr}="${url}"`;
         }
@@ -2204,7 +2557,8 @@ function rebaseURLs(directory, html) {
 
 function classes(...args) {
     const values = args.filter(Boolean);
-    return values.length ? ` class="${values.join(' ')}"` : '';
+    // return values.length ? ` class="${values.join(' ')}"` : '';
+    return `class="${values.join(' ')}"`;
 }
 
 async function main() {
@@ -2403,9 +2757,10 @@ async function main() {
     }
 
     await writeMiscellaneousPages();
-    await writeListingPages();
-    await progressPromiseAll(`Writing album & track pages.`, queue(albumData.map(album => writeIndexAndTrackPagesForAlbum(album)).reduce((a, b) => a.concat(b))));
-    await writeArtistPages();
+
+    // await writeListingPages();
+    // await progressPromiseAll(`Writing album & track pages.`, queue(albumData.map(album => writeIndexAndTrackPagesForAlbum(album)).reduce((a, b) => a.concat(b))));
+    // await writeArtistPages();
     await writeFlashPages();
 
     decorateTime.displayTime();