I like the idea of immutability and Builders.  It allows us to user build objects pragmatically, but only assert their representation invariants at creation time.