C# Class Design Handbook: Coding Effective Classes