Observer Software Design Pattern