Typing messages is considered a PhD (?) level problem. Could you talk more about how you went about solving it? Thanks!
In practice this is enough for the vast majority of applicatinos, and messages with runtime checks (like in regular Erlang) can be used for the other situations if required.