add more of algorithm