make Defer as a standalone module