public function getColumns()
    {
        //make sure we only run this once and then return the cached version
        if (empty($this->columns)) {
            foreach ($this->config->getOption('columns') as $name => $options) {
                //if only a string value was supplied, may sure to turn it into an array
                $object                                           = $this->make($this->parseOptions($name, $options));
                $this->columns[$object->getOption('column_name')] = $object;
            }
        }

        return $this->columns;
    }