I think I already see such code in base product? maybe having same base class and share code for it?