Override support (and associated scaffolding)
Besides the override implementation itself, most of the code churn comes from the generalization of the traits interface in one of the earlier commits. It's not strictly necessary (especially the error handling part), but I do think we'll need it eventually.