A bit of refactoring to make sure that the interfaces required are in public models.