public function attach(\SplObserver $job)
    {
        // check if job ID is unique
        if (in_array($job->getId(), array_keys($this->timeMap))) {
            throw  new \UnexpectedValueException(
                'Duplicated job ID. Job ID should be unique.'
            );
        }

        $this->pushSchedule($job);
        $this->updateTimeMap($job);
    }