Implemented general algorithms execution using AlgorithmExecutor interface and AlgorithmExecutorFactory. Moved algorithms implementations to appropriate classes