Restructured to introduce MessageUtils and also added error propagation via Message.