addede algorithms implementations