Ripped out the 'view' parts, added a few methods to support integrating this into EpoxyJS.