perhaps this should be a dictionary of `List<T>`?