supporting Node/CommonJS and becoming UMD compliant. achieves #12