Excercises and code from Effective Javascript by David Herman