add other algorithms