Add support for layout variants

This allows us to have different layouts for different message types