TODO:refactor mainviewcontroller