Redesign using oop