client skeleton