updated message function