cleaner distinction between "view" and "action"