sources must be listed explicitly in dependency order