Start of type safe message layer