Use 'Observer' interfaces