changed all the things.

Things have changed a ton since I started this project, so I'm going to try a systematic re-implementation to make things much more sane. Wish me luck.