Firstly, the name of the message, the types and names of parameters and the return value, if any, are specified. Parameters can be of any type except void. Each parameter in a message declaration has a distinct name.