This follows a similar pattern to html helpers - a minimal basis interface that performs the main functionality, and a set of extension methods that make up the rich API.