implement external source properties more elegantly