void load() {
        observer = ObserverType.getNewInstance(this, model.settings.getObserverType());

        Vertex.randomInit.autoInitial();
        savedRandomInitiation = Vertex.randomInit.getInitial() != 0;

        if (savedRandomInitiation) {
            if (model.settings.getInit() == InitType.one) {
                int i = GUI.random.nextInt(graph.vertices.size());
                graph.vertices.get(i).setInitial(1);
            }
            if (model.settings.getInit() == InitType.multi) {
                for (Vertex v : graph.vertices) {
                    if (GUI.random.nextBoolean())
                        v.setInitial(1);
                }
            }
        }

        for (Vertex v : graph.vertices) {
            v.program = new Program(v, this);
            v.program.load(Model.binaryPath, 1);
        }
    }