refactor with listviewcontroller