add reordering function