remove underscore.js dependency and make the library contains its own dep