tableview base refactor