split out into models which shold show reuse