somewhat related to #3

Should be backwards compatible, but as you say in #3, we'll need a lot more tests to be sure. happy to discuss any of the changes or make adjustments.
`null` is probably a better return than `none`, right?