I'm not really happy with all the argumentless functions I had to write here. I felt like I should write them because it reduces code duplication a ton, but I'm still not a fan.

In general it'd be nice if there was a way to tell which functions are pure and which aren't.