refactor of Action