add different algorithm