user client abstract class