better explained the close listener