I've been having a look at extension methods lately (see more info on them here and here ) and at first pass they seem really quite nice. They offer a easy way to augment existing object models which you may not own (from a code perspective). Consider