http://stackoverflow.com/questions/8093057/javascript-inheritance-and-the-constructor-property/8096017#8096017
http://yehudakatz.com/2011/08/12/understanding-prototypes-in-javascript/
http://stackoverflow.com/questions/14545210/why-prototype-is-undefined
http://stackoverflow.com/questions/4841175/trying-to-understand-the-point-of-prototypes-in-javascript
http://stackoverflow.com/questions/572897/how-does-javascript-prototype-work