don't call listern under lock