add abstract client class