added algoritms