add some algorithm
remove