implements selfupdating listener