requires underscore.js at window._