This took me a while. I'm very proud of it