gather all, then execute