separate out algorithms and runner