updated do_action