made more consistent with STL container