add 'makeListener' stuff for easy testing/conversion