add Defer and DeferFunc