add some more algorithsm