the element bag implementation is replaced by QSet... but since QSet doesn't provide the exact interface we want, we still keep our class to expose the bag API