Add initial implementation of CollectionView and related types