why are we doing this stuff through inheritance? I'm not sure we should be just inheriting from collections classes and creating SubclassableVectors, etc. What is the benefit?