using defaultdicts