diff --git a/test/test_spectrallibraries.py b/test/test_spectrallibraries.py
index 8861e68d979434d8f0c00321b9c856223aa6582f..9863e04e177a21344b4bcd513f2d5f3a6f721a5f 100644
--- a/test/test_spectrallibraries.py
+++ b/test/test_spectrallibraries.py
@@ -233,14 +233,16 @@ class TestInit(unittest.TestCase):
 
         try:
             writtenFiles = sl1.exportProfiles(pathCSV)
+            self.assertIsInstance(writtenFiles, list)
+            for f in writtenFiles:
+                try:
+                    sl1 = SpectralLibrary.readFrom(f)
+                except Exception as ex:
+                    self.fail('Unable to read CSV. {}'.format(ex))
+
         except Exception as ex:
             self.fail('Unable to write CSV. {}'.format(ex))
 
-        for f in writtenFiles:
-            try:
-                sl1 = SpectralLibrary.readFrom(f)
-            except Exception as ex:
-                self.fail('Unable to read CSV. {}'.format(ex))
 
 
 
@@ -252,15 +254,32 @@ class TestInit(unittest.TestCase):
     def test_mergeSpeclibs(self):
 
         sp = SpectralProfile()
-        sp.setMetadata('newfield', 'foo', addMissingFields=True)
-        sl1 = SpectralLibrary()
-        sl1.startEditing()
-        sl1.addAttribute(SpectralProfile.createQgsField('newField', ''))
-        sl1.commitChanges()
-        sl1.addProfiles(sp)
+        fieldName = 'newField'
+        sp.setMetadata(fieldName, 'foo', addMissingFields=True)
+        sl = SpectralLibrary()
+
+        sl.startEditing()
+        sl.addAttribute(SpectralProfile.createQgsField(fieldName, ''))
+        sl.commitChanges()
+        self.assertIn(fieldName, sl.fieldNames())
+
+        sl = SpectralLibrary()
+        sl.addProfiles(sp)
+
+
+        sl = SpectralLibrary()
+        self.assertTrue(fieldName not in sl.fieldNames())
+        sl.addProfiles(sp, addMissingFields=False)
+        self.assertTrue(fieldName not in sl.fieldNames())
 
-        sl2 = SpectralLibrary()
 
+        sl = SpectralLibrary()
+        self.assertTrue(fieldName not in sl.fieldNames())
+        sl.addProfiles(sp, addMissingFields=True)
+        self.assertTrue(fieldName in sl.fieldNames())
+        p = sl[0]
+        self.assertIsInstance(p, SpectralProfile)
+        self.assertEqual(p.metadata(fieldName), sp.metadata(fieldName))
 
     def test_filterModel(self):
         w = QFrame()
diff --git a/timeseriesviewer/spectrallibraries.py b/timeseriesviewer/spectrallibraries.py
index 57c0c3c6b98b562646d68558780b1cee8dd9ab34..8986c11e08ca204c56656eee702cc0fb6ba68b00 100644
--- a/timeseriesviewer/spectrallibraries.py
+++ b/timeseriesviewer/spectrallibraries.py
@@ -747,9 +747,9 @@ class AbstractSpectralLibraryIO(object):
 
     @staticmethod
     def write(speclib, path):
-        """Writes the SpectralLibrary to path, returns a list of written files"""
+        """Writes the SpectralLibrary to path and returns a list of written files that can be used to open the Speclibs with readFrom"""
         assert isinstance(speclib, SpectralLibrary)
-        return None
+        return []
 
 
 class CSVSpectralLibraryIO(AbstractSpectralLibraryIO):
@@ -757,6 +757,7 @@ class CSVSpectralLibraryIO(AbstractSpectralLibraryIO):
     @staticmethod
     def write(speclib, path, separator='\t'):
 
+        writtenFiles = []
         assert isinstance(speclib, SpectralLibrary)
         lines = ['Spectral Library {}'.format(speclib.name())]
 
@@ -769,6 +770,10 @@ class CSVSpectralLibraryIO(AbstractSpectralLibraryIO):
             file.write(line+'\n')
         file.flush()
         file.close()
+        writtenFiles.append(path)
+
+        return writtenFiles
+
 
     @staticmethod
     def asTextLines(speclib, separator='\t'):
@@ -1256,11 +1261,13 @@ class SpectralLibrary(QgsVectorLayer):
                 missingFields.append(field)
         if len(missingFields) > 0:
             self.startEditing()
-            self.dataProvider().addAttributes()
+            b = self.dataProvider().addAttributes(missingFields)
             # for field in missingFields:
             #    assert isinstance(field, QgsField)
-
-            self.commitChanges()
+            if b:
+                self.commitChanges()
+            else:
+                self.commitErrors()
             s = ""
 
     def addSpeclib(self, speclib, addMissingFields=True):
@@ -1284,7 +1291,7 @@ class SpectralLibrary(QgsVectorLayer):
             assert isinstance(p, SpectralProfile)
 
         if addMissingFields:
-            self.addMissingFields(profiles[0])
+            self.addMissingFields(profiles[0].fields())
 
         inEditMode = self.isEditable()
         if not inEditMode: