makeListener convenience method