add ordered dictionary struct