use source to handle the message