implemented deferred chain promise