firstcommit:Observer Pattern