services refactor

Some basic refactoring of `services.js`. Also trying out a better development workflow.

1. create feature branch on fork
2. make changes, open PR to dev branch on upstream
3. merge changes, bump version on dev, prepare for new version release
4. open pull request from dev to master on upstream
5. version release!

This way dev branch can track progress to a new version release, multiple features can be added, tested, merged. Dev branch being merged into master represents an official version bump, allows us to keep master clean at all times. This way we can also track development build status separately.