separate view concerns