First version that passes tests