Update/api

@lancejpollard @yields 

added a bunch of things, and more tests. @yields specifically to run by you is that this loses the ability to see the return value of method calls. i wasn't sure why that was being used, but hopefully we can do without it