Separate the source generation function (sourcefn) from the source input itself (source)