solutions to 99 scala problems: http://aperiodic.net/phil/scala/s-99/