add base-type accessors to collections, abstract shared interface with NS collections into protocols