don't fetch if multiple - results in infinite loop
use source if new source is undefined