Theoretically each additional trait is just removing it from type contents and adding the `type_fulfills_TRAIT` function (and calling it in the right place?)? (i.e it should be a very small patch?)

I'll defer to your experience in this code though.