develop algorithm