Added more domain object and refactored