abstract client changes