`Maybe` now used so that we can throw nicer exceptions