public static BaseFractalAlgorithm getByName(String name) {
        Set<Class<? extends BaseFractalAlgorithm>> algorithms = getSubClasses();
        
        BaseFractalAlgorithm result = null;
        try {
            // Find an algorithm with a matching name and return a new instance
            // of it
            for (Class<? extends BaseFractalAlgorithm> a : algorithms) {
                BaseFractalAlgorithm instance = a.newInstance();
                if (instance.getName().equals(name)) {
                    result = instance;
                }
            }
        } catch (Exception ex) {
            System.err.println("Unable to check for other algorithms: " + ex.getMessage());
            ex.printStackTrace();
        }
        return result;
    }