Constrained OOP Refator