refine message function