why not return a deferred?