update Observer Pattern use SPL interface