inner constructor enforcing suite of invariants passing in tests