From a design perspective, rather use abstract base classes to implement interfaces than regular classes that throw not-implemented exceptions.