Initial solution, tests passing