Use Spec interface for greater extensibility.