Added success/failure aggregation, callback terminated test cases, and did a large amount of refactoring