reduce multiple listener attachments