including doctrine/collections, refactored and added more tests