Yeah we did tried initially with the third option but it ended up more complex because we had to add the interfaces as content and restore them on package install because partial interfaces need to he in the same assembly. Also later when somebody wanted to make a change, it was tough when we had the interfaces. Like we were having them but they actually follow the generated models and a lot of copy pasting was needed. So, we gave up. Changing the type on a doc type which came from a package shouldn't happen. Like, it would potentially cause problems no matter if we have strongly typed models or not. If it is only for extending should be fine but overall messing up the doc types after install doesn't sound like a good idea.