add user defined data. these data can be set and get by user, in order to keep some context information between callbacks (e.g. c++ this pointer)