public function proceed() {
        if ($this->has_run()) {
            throw new coding_exception('The processor has already run.');
        } else if (!$this->mapper->has_mappings()) {
            throw new coding_exception('Mapping was not set.');
        }

        $this->proceeded = true;
        $this->process_mapping();
        $this->find_coursescompetencies();
        $this->find_modulecompetencies();
        $this->process_courses();
    }