please make `value` private, otherwise it's all without teeth