now I've actually gotta start refactoring this

crap I've written