The following algorithms are currently implemented: