refined the defer and delay methods