Added client interface and broke up client class into bits and pieces