Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries