refactoring object mapper to use a builder and delegation