finish handling error cases
use concurrency to check points