Email value object is added and other refactoring