protected function dataCheck(&$data) {
        
        // no need to go on, if there is no data
        if (count($data) < 1 || !is_array($data)) {

            // exit
            return false;
        }
        
        // first check that there are enough Column definitions for the data supplied
        for ($r=0; $r<count($data); ++$r) {

            $rowColumnCount = count($data[$r]);

            // if this row does not have enough columns, add them
            if ($rowColumnCount > $this->columnCount) {

                // add as many Columns as needed to handle this larger row
                for ($i=$this->columnCount; $i<$rowColumnCount; ++$i) {

                    // add one default column
                    $this->columnDefinitions[] = new Column();
                }

                // update the column count to reflect this new size
                $this->columnCount = $rowColumnCount;
            }
        }      

        // now, pad any row that doesn't have enough data to fill the columns
        for ($r=0; $r<count($data); ++$r) {

            // if this row does not have enough columns, add them
            if (count($data[$r]) < $this->columnCount) {

                // pad the array with empty space to fill out any columns not there
                $data[$r] = array_pad($data[$r],$this->columnCount,"");

            }
        }
        
        // we got past the hurdles, data is good
        return true;
        
    }