more refactoring
even more refactoring
refactor out Collection::Entry