Solution GREEN. Needs refactor.