add algorithm
add algorithm