using non-threaded sort