new alghoritm