Do we have any way to force this via exception? Maybe in the abstract factory?