algorithms utilites