support element ordering using OrderedDictionary