removed dependency on underscore.js