Refactor to extract some methods.
Support multi levels for nested attributes and refactor to extract

new clases.