Solution with tests; removing Value class