don't tolerate incomplete data from sources - better fail early