refactored, jshinted, strict mode