add done callback