basic client class