add app listener