rename Action to Deferred, export a factory function