sort list
optimize