diff --git a/dios/dios.py b/dios/dios.py
index 66583cbc25260b96dd3644a06942b4260a173218..d1d182e7e23122bc11f23c6889a97274ec5d6496 100644
--- a/dios/dios.py
+++ b/dios/dios.py
@@ -97,7 +97,7 @@ class DictOfSeries:
             self._data = pd.Series(dtype='O', index=index.unique())
 
             if data is not None:
-                self._init_insert_data(data, columns)
+                self._init_insert_data(data)
 
             # self._data contain nans at locations, where no
             # data was present, but a column-name was given
@@ -116,23 +116,29 @@ class DictOfSeries:
         self._data.name = '_data'
         self._data.index.name = 'columns'
 
-    def _init_insert_data(self, data, columns):
+    def _init_insert_data(self, data):
         """ Insert items of a iterable in self"""
 
         data = list(data) if _is_iterator(data) else data
+        cols_empty = self.columns.empty
 
         if isinstance(data, dict) or _is_dios_like(data):
             for k in data:
-                if columns is None or k in self.columns:
+                if cols_empty or k in self.columns:
                     self._insert(k, data[k])
 
         elif isinstance(data, pd.Series):
-            self._insert(data.name or 0, data)
+            name = data.name or 0
+            if not cols_empty:
+                # overwrite by columns
+                if data.name is None or data.name not in self.columns:
+                    name = self.columns[0]
+            self._insert(name, data)
 
         elif _is_list_like(data):
             data = data if _is_nested_list_like(data) else [data]
 
-            if self.columns.empty:
+            if cols_empty:
                 self._data = pd.Series(dtype='O', index=pd.RangeIndex(len(data)))
 
             elif len(data) != len(self.columns):