simplifies Source, FileSource is still a bit janky