refactoring without Collection and Thing