Mostly working I'm pretty sure