change query listener optimization