#7 convert observers to listeners