public function getOptions()
    {
        //make sure the supplied options have been merged with the defaults
        if (empty($this->options)) {
            //validate the options and build them
            $this->validateOptions();
            $this->build();
            $this->options = array_merge($this->getDefaults(), $this->suppliedOptions);
        }

        return $this->options;
    }