Use UnitOfWork instead of Repository to track aggregate root and publish
events