remote: Refactoring to use a common client
remote: first pass at push state