public function addColumn($column, $options) {
        if (is_string($options)) {
            $options = ['type' => $options];
        }

        $options = $options + [
            'field' => $column,
            'type' => '',
            'length' => '',
            'default' => '',
            'comment' => '',
            'charset' => '',
            'collate' => '',
            'null' => true,
            'ai' => false,
            'index' => false,        // KEY index (field[, field])
            'primary' => false,      // [CONSTRAINT symbol] PRIMARY KEY (field[, field])
            'unique' => false,       // [CONSTRAINT symbol] UNIQUE KEY index (field[, field])
            'foreign' => false       // [CONSTRAINT symbol] FOREIGN KEY (field) REFERENCES table(field) [ON DELETE CASCADE, etc]
        ];

        // Force to NOT NULL for primary or auto increment columns
        if ($options['primary'] || $options['ai']) {
            $options['null'] = false;
        }

        // Filter out values so that type defaults can be inherited
        $this->_columns[$column] = array_filter($options, function($value) {
            return ($value !== '' && $value !== false);
        });

        if ($options['primary']) {
            $this->addPrimary($column, $options['primary']);

        } else if ($options['unique']) {
            $this->addUnique($column, $options['unique']);

        } else if ($options['foreign']) {
            $this->addForeign($column, $options['foreign']);
        }

        if ($options['index']) {
            $this->addIndex($column, $options['index']);
        }

        return $this;
    }