refactor to use backbone