you could also use OrderedDict