refactored action class