enforce constructor preconditions