Abstract Classes for Variation - Achieving the Open/Closed Principle Through Abstraction | OneNoughtOne