Spoiler warning:
God, this took forever. Pretty much all my time since Christmas morning went into this. And it's not even done yet...