A bunch of stuff I guess, write this better later