skeleton for client