added drain listener