refactor execute