implements ListController (needs testing)