Refactor Setter and make some methods final