Add SourceField
and subclasses, rework Source
#405
Merged
SourceField
and subclasses, rework Source
#405