updating to fix a lot of bugs and pushing a lot of new tests