Observer Pattern done - With tests passed~