protected function reset()
    {
        $this->errors = array();

        if (count($this->store) >= 2) {
            $last = end($this->store);
            foreach ($this->backup as $name => $value) {
                if (!array_key_exists($name, $last)) {
                    $this->$name = $value;
                }
            }
            array_shift($this->store);
        }
        $this->store[] = array();
    }