improve implementation of external source properties (clearner code, more error robust)