replace 'enforce' concept with more elegant and flexible 'notify' functions