refactor

change the subclass into a independent seperated class that
collaborates with the tableview