add sorting
add fault-tolerance