added a bunch of extra stuff