ProvenShape is needed to enforce the type of the table. Nobody prevents you from having a separate projection without it, as in this example. There is no way to abstract away the `def *` though.