self executing javascript function. prevents any variables / functions / objects being added to the global scope