added: abstract context listener