I would say that the CompanyLogic class should not know about two different models or sets or whatever you call it. You could split that into two different classes like PersonCompanyLogic and CompanyLogic each in charge of their own models.
That is a great suggestion Ivan and I agree. Separate logic layers is common but it is usually based on the logic behavior.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.