deferred implementation