ensure only one set of listeners is added