use weakreference to avoid memory lead for message handler