might not work correctly, update a bunch of stuff