Extensible notification framework