refactor
why can't I just have types?!