don't import OrderedDict directly