added clientdisconnect()