3rd refactor V1.2