abstracting a lot of stuff into their own functions