Following http://javascriptissexy.com/how-to-learn-javascript-properly/