a bunch of stuff. I'll break this up into different commits just pushing for now so @garrettr can see
working on it, squash this later