See #90 and #91 for discussion and initial code.
See #90 and #91 for discussion and initial code.