Final refactor and change