Refactored Action to be more primitive.