refactor of collectionView