#10 - replaced callbacks with deferred/promises.