Refactor code, and start playing with defineSetter/Getter