began decoupling deferred.js