Actually implement client