Refactored "unit of work" and access for committing changes
Refactored some interfaces
Added new Exceptions
Added unit test for aggregate root collection