Refactor remote methods out into modules, implement missing APIs and
ensure all APIs have a smoke test.
Merge branch 'modularize_remote' into develop