Add precondition check: this feature is optional. Implementing classes can return NULL if not use