refactor multi source functionality, simplify API for components and data input