Add most of CollectionView implementation