Added Algorithm interface, a DummyAlgorithm and AlgorithmFactory