some new algorithms