Inspired learning from http://addyosmani.com/resources/essentialjsdesignpatterns/book/