add some algorithm