add deferred-based API