ported to Backbone.js