implemented client events