An algorithm has a step() method, and optional initialize and
finalize() methods. Adapt existing algorithms to that schema, which
allows removing some special-case code from saio.c and moving it into
the specific algorithm code.