refactor action execution