diff --git a/core.py b/core.py
index d1a49056f801ea3506280019f64d0510653d0f8c..84afc00b9cc3afe90d1587ef8d025075052638c6 100644
--- a/core.py
+++ b/core.py
@@ -39,12 +39,7 @@ def flagNext(flagger: BaseFlagger, flags: pd.Series, n: int) -> pd.Series:
 def runner(meta, flagger, data, flags=None, nodata=np.nan):
 
     if flags is None:
-        # flags = pd.DataFrame(index=data.index)
-        flags = flagger.emptyFlags(data)
-    # else:
-    #     if not all(flags.columns == flagger.emptyFlags(data.iloc[0]).columns):
-    #         raise TypeError("structure of given flag does not "
-    #                         "correspond to flagger requirements")
+        flags = pd.DataFrame(index=data.index)
 
     # NOTE:
     # We need an index frequency in order to calculate ticks
@@ -84,8 +79,9 @@ def runner(meta, flagger, data, flags=None, nodata=np.nan):
             # flag column exists
             if flag_params.get(FlagParams.ASSIGN) or \
                     (varname in data and varname not in flags):
-                dummy = pd.DataFrame(index=data.index, columns=[varname])
-                flags = flags.join(flagger.initFlags(dummy))
+                col_flags = flagger.initFlags(
+                    pd.DataFrame(index=data.index, columns=[varname]))
+                flags = col_flags if flags.empty else flags.join(col_flags)
 
             elif varname not in data and varname not in flags:
                 continue
@@ -97,9 +93,7 @@ def runner(meta, flagger, data, flags=None, nodata=np.nan):
             # NOTE:
             # within the activation period of a variable, the flag will
             # be initialized if necessary
-            fchunk = (flags
-                      .loc[start_date:end_date]
-                      .fillna({varname: flagger.no_flag}))
+            fchunk = flags.loc[start_date:end_date]
 
             try:
                 dchunk, fchunk = flagDispatch(func_name,
diff --git a/flagger/baseflagger.py b/flagger/baseflagger.py
index 238ce588296f413bc9f58008ca6b44ae3841ff12..69d09a25c43cc99591c4f100beacd43faaea4925 100644
--- a/flagger/baseflagger.py
+++ b/flagger/baseflagger.py
@@ -37,9 +37,6 @@ class BaseFlagger:
         out[:] = value
         return out
 
-    def emptyFlags(self, data: pd.DataFrame) -> pd.DataFrame:
-        return pd.DataFrame(index=data.index)
-
     def isFlagged(self, flags: ArrayLike, flag: T = None) -> ArrayLike:
         if flag is None:
             return (pd.notnull(flags) & (flags != self.no_flag))
diff --git a/flagger/dmpflagger.py b/flagger/dmpflagger.py
index 0696c05cadf342f0594496c19da9fea96980a1d0..b5ef7eb2188b2f8db64eaa50ed0661275be54906 100644
--- a/flagger/dmpflagger.py
+++ b/flagger/dmpflagger.py
@@ -31,18 +31,6 @@ class DmpFlagger(BaseFlagger):
         super().__init__(no_flag, flag)
         self.flag_fields = [FlagFields.FLAG, FlagFields.CAUSE, FlagFields.COMMENT]
 
-    def emptyFlags(self, data, **kwargs):
-        columns = pd.MultiIndex(
-            levels=[[], []],
-            codes=[[], []],
-            names=[ColumnLevels.VARIABLES, ColumnLevels.FLAGS])
-        return pd.DataFrame(index=data.index, columns=columns)
-
-    # def _getColumns(self, data):
-    #     if isinstance(data, pd.DataFrame):
-    #         return data.columns
-    #     return [data.name]
-
     def initFlags(self, data, value="NIL", **kwargs):
         columns = data.columns if isinstance(data, pd.DataFrame) else [data.name]
         columns = pd.MultiIndex.from_product(
diff --git a/test/test_core.py b/test/test_core.py
index 5f6b0c805ac855bbfb9ebe9c864d9e09fef9c229..b51c7b7d9b5f6e51833ffe34f3ca0a76b9fed630 100644
--- a/test/test_core.py
+++ b/test/test_core.py
@@ -101,7 +101,6 @@ def test_assignVariable(flagger):
 
     pdata, pflags = runner(meta, flagger, data)
 
-
     if isinstance(pflags.columns, pd.MultiIndex):
         cols = (pflags
                 .columns.get_level_values(0)