use the defaultdict