http://eloquentjavascript.net/ - solutions to exercises