Refactored to OO-Design