add abort
optimize each
add quick