listener adapter