modify interfaces of deferred objects to support variant types