From http://www.antoniosalvati.it/javascript-revealing-module-pattern