Implemented most of the collection interface