added algorithms