remove the dependence on Extend.js