Both Read and Binary instances for distributions are derived automatically. This leads to number of problems.
It allows to create distributions in invalid state. Smart constructors do check whether input valid or not. Derived methid will blindly decode what they get.
It breaks compatibility. Several distributions have fields which cache expensive computation. Their number and meaning could (and did!) change over time. Each such change breaks data format compatibility. They shouldn't be serialized in first place and recalculated during deserialization.