proper createListener