Refactored library to make callbacks from tasks easier

This will break any usage of this library in the pass but will allow an easier way of receiving results from the tasks.