Also, you should write some error checking to make sure that data will have a legal size under at least some redundancy settings.

IE the maximum size that data can be is (QuorumSize * MaxSegmentSize)
And the minimum size that data can be is (MinSegmentSize) assume a redundancy of QuroumSize. (hey man we don't judge). Except that that's not strictly true because segments will need some headers and I don't have the header stuff fully written down yet.