Refactor with some OO