separate files for view and controller