applies hmvc pattern