public function add($row) {
	$this->changesMade = true;
	$rowColumns = $row;
	$rowAssociative = $row;

	$this->lock();

	if($this->isAssoc($row)) {
		if(!$this->headers) {
			$this->headers = array_keys($row);
			$this->file->fputcsv($this->headers);
		}
		$rowColumns = $this->toIndexed($row, true);
	}
	else {
		$rowAssociative = $this->toAssociative($row);
	}

	if(!$this->headers) {
		throw new HeadersNotSetException();
	}

	$rowColumns = $this->fillMissing($rowColumns);

	$this->file->fseek(0, SEEK_END);
	$this->file->fputcsv($rowColumns);
	$this->file->fflush();

	$this->file->flock(LOCK_UN);
	return $rowAssociative;
}