I made this for a comment, but damn it, I put way too much work into it not to make it a post too.