public function makeSchedule()
    {
        // Pull out the first page to distribute it; then delete.
        $items = $this->getRows();
        $id = $this->getCurrentPageId();
        $this->deletePage($id);

        $this->date = clone $this->getStartDate();
        $this->avoidHolidaysAndWeekdaysOff();
        $this->stats['start date'] = $this->date->format($this->getPageIdFormat());
        $this->stats['hours per day'] = $this->getHoursPerDay();
        $this->stats['total items'] = count($items);
        $this->stats['dates off'] = array();
        $this->setDatePage($this->date);

        $dayTotal = 0;
        $this->stats['total hours'] = 0;
        while (($item = array_shift($items))) {
            $this->stats['total hours'] += $item[$this->getHoursKey()];
            $this->processItem($item, $item[$this->getHoursKey()], $dayTotal);
        }
        $this->stats['end date'] = $this->date->format($this->getPageIdFormat());

        if ($this->todoStatsPage) {
            $this->addStatsPage($this->todoStatsPage);
        }

        return $this;
    }