move listeners to be lazy added