@jamalex A lot of this is mildly reduplicative of exercises.js - during Backbonification, we should unify and generalize these two files with appropriate parameterization.