choose algrithom