writing distributed state; comparators have private constructors