model view controller and data classes