both the onChange and complete callbacks include the same information, the complete is just a more explicit API for the callback since we found just the callback to be confusing, hopefully later this can be improved to a streams like api and promises may also help