Redesign to OO