Refactor and better builder