Adding octocons, refactoring the API, using Q promises, and other changes