split functionality, add reorder