add sorting, threading oh my