Hiding Implementation Details - Designing For Abstraction | OneNoughtOne