See #495 for design discussion
See #495 for design discussion