IMPROVE code, support more custom messages

LGTM