add finished event callback