refactored action construction