(1) made template-compatible source lists, (2) simplified SourceObject base classes (complications should moved to derived classes)