completed = tree.nodes.eachAfter(d => {
if(d.children && tips) {
let inter = _.intersection(..._.map(d.children, c => c.data.characters));
if(inter.length > 0) {
d.data.characters = inter;
d.data.cost = _.sumBy(d.children, c => c.data.cost);
} else {
d.data.characters = _.union(..._.map(d.children, c => c.data.characters))
d.data.cost = _.sumBy(d.children, c => c.data.cost) + 1;
}
}
})