add message handler function