Reworked Observer Pattern.