refactor Action with Action enum