add client listener