added 'observer' pattern