added a bunch of stuff I should have added earlier