An implementation of the observer design pattern.