OO Inheritance - Not Always Evil - Refactoring to Open-Closed using Inheritance