add viberti algorithm