several new algorithms