[WIP] client/service refactoring checkpoint - tests passing