Issue #49: extracted Algorithm.Delegate into its own interface, Algorithm

Also renamed some of its methods