diff --git a/parser/parser-amber/AMBERDictionary.py b/parser/parser-amber/AMBERDictionary.py
index 2ab7962a5f9b4b4d882b3ad608cfc05bf8797dc6..83c3259f18a18c324159a8be8685bbf1f607ec63 100644
--- a/parser/parser-amber/AMBERDictionary.py
+++ b/parser/parser-amber/AMBERDictionary.py
@@ -634,7 +634,7 @@ def get_updateDictionary(self, defname):
             lookupdict=self.cntrlDict
             ),
 #       'geometry_optimization_threshold_force' : MetaInfoMap(startpage),
-        'settings_barostat' : MetaInfoMap(startpage,
+        'x_amber_barostat_type' : MetaInfoMap(startpage,
             depends=[
                 {'test' : [['imin', '== 0'], 
                            ['ntp', '!= 0'], 
@@ -645,18 +645,20 @@ def get_updateDictionary(self, defname):
                            ['barostat', '== 2']],
                  'assign' : 'Monte Carlo barostat'} 
                 ],
-            lookupdict=self.cntrlDict
+            lookupdict=self.cntrlDict,
+            activeSections=['settings_barostat']
             ),
-        'settings_integrator' : MetaInfoMap(startpage,
+        'x_amber_integrator_type' : MetaInfoMap(startpage,
             depends=[
                 {'test' : [['imin', '== 0']],
                  'assign' : 'verlet'}, 
                 {'test' : [['imin', '== 1']],
                  'assign' : 'minimization'}
                 ],
-            lookupdict=self.cntrlDict
+            lookupdict=self.cntrlDict,
+            activeSections=['settings_integrator']
             ),
-        'settings_thermostat' : MetaInfoMap(startpage,
+        'x_amber_thermostat_type' : MetaInfoMap(startpage,
             depends=[
                 {'test' : [['imin', '== 0'], ['ntt', '== 1']],
                  'assign' : 'Constant Temperature Scaling with weak-coupling'}, 
@@ -669,7 +671,8 @@ def get_updateDictionary(self, defname):
                 {'test' : [['imin', '== 0'], ['ntt', '== 10']],
                  'assign' : 'RESPA Stochastic Isokinetic Nose-Hoover'} 
                 ],
-            lookupdict=self.cntrlDict
+            lookupdict=self.cntrlDict,
+            activeSections=['settings_thermostat']
             ),
         }
 
@@ -717,18 +720,18 @@ def get_updateDictionary(self, defname):
         }
    
     frameseq = { 
-        'frame_sequence_conserved_quantity_frames' : MetaInfoMap(startpage),
+        'frame_sequence_conserved_quantity_frames' : MetaInfoMap(startpage,
             depends=[{'value' : 'NSTEP'}],
             lookupdict=self.mddataDict
             ),
         'frame_sequence_conserved_quantity_stats' : MetaInfoMap(startpage),
-        'frame_sequence_conserved_quantity' : MetaInfoMap(startpage),
+        'frame_sequence_conserved_quantity' : MetaInfoMap(startpage,
             depends=[{'value' : 'RESTRAINT'}],
             lookupdict=self.mddataDict
             ),
         'frame_sequence_continuation_kind' : MetaInfoMap(startpage),
         'frame_sequence_external_url' : MetaInfoMap(startpage),
-        'frame_sequence_kinetic_energy_frames' : MetaInfoMap(startpage),
+        'frame_sequence_kinetic_energy_frames' : MetaInfoMap(startpage,
             depends=[{'value' : 'NSTEP'}],
             lookupdict=self.mddataDict
             ),
@@ -738,7 +741,7 @@ def get_updateDictionary(self, defname):
             lookupdict=self.mddataDict
             ),
         'frame_sequence_local_frames_ref' : MetaInfoMap(startpage),
-        'frame_sequence_potential_energy_frames' : MetaInfoMap(startpage),
+        'frame_sequence_potential_energy_frames' : MetaInfoMap(startpage,
             depends=[{'value' : 'NSTEP'}],
             lookupdict=self.mddataDict
             ),
@@ -747,7 +750,7 @@ def get_updateDictionary(self, defname):
             depends=[{'value' : 'EPtot'}],
             lookupdict=self.mddataDict
             ),
-        'frame_sequence_pressure_frames' : MetaInfoMap(startpage),
+        'frame_sequence_pressure_frames' : MetaInfoMap(startpage,
             depends=[{'value' : 'NSTEP'}],
             lookupdict=self.mddataDict
             ),
@@ -756,7 +759,7 @@ def get_updateDictionary(self, defname):
             depends=[{'value' : 'PRESS'}],
             lookupdict=self.mddataDict
             ),
-        'frame_sequence_temperature_frames' : MetaInfoMap(startpage),
+        'frame_sequence_temperature_frames' : MetaInfoMap(startpage,
             depends=[{'value' : 'NSTEP'}],
             lookupdict=self.mddataDict
             ),
@@ -790,38 +793,38 @@ def get_updateDictionary(self, defname):
 
     topology = {
         'molecule_to_molecule_type_map' : MetaInfoMap(startpage),
-        'number_of_topology_atoms' : MetaInfoMap(startpage),
+        'number_of_topology_atoms' : MetaInfoMap(startpage,
             depends=[{'value' : 'NATOM'}],
             lookupdict=self.parmDict
             ),
         'number_of_topology_molecules' : MetaInfoMap(startpage),
-        'topology_force_field_name' : MetaInfoMap(startpage)
+        'topology_force_field_name' : MetaInfoMap(startpage,
             value='Amber Force Field',
-            ),
+            )
         }
 
     atom_list = {
         'atom_to_molecule' : MetaInfoMap(startpage,
-            subfunction=func_atom_to_mol()
+            #subfunction=func_atom_to_mol()
             ),
         'number_of_electrons' : MetaInfoMap(startpage,
             value=0,
             ),
-        'atom_labels' : MetaInfoMap(startpage),
-            subfunction=func_atom_labels()
+        'atom_labels' : MetaInfoMap(startpage,
+            #subfunction=func_atom_labels()
             ),
         'atom_positions' : MetaInfoMap(startpage,
-            subfunction=func_atom_positions()
+            #subfunction=func_atom_positions()
             ),
         'configuration_periodic_dimensions' : MetaInfoMap(startpage,
-            subfunction=func_pbc()
+            #subfunction=func_pbc()
             ),
         'embedded_system' : MetaInfoMap(startpage),
         'lattice_vectors' : MetaInfoMap(startpage,
-            subfunction=func_lat_vec()
+            #subfunction=func_lat_vec()
             ),
         'simulation_cell' : MetaInfoMap(startpage,
-            subfunction=func_unitcell()
+            #subfunction=func_unitcell()
             )
         }
 
@@ -862,15 +865,19 @@ def get_updateDictionary(self, defname):
     if defname == 'system':
         dictionary = systemDict
     elif defname == 'topology':
-        dictionary = topologyDict
+        dictionary = topology
+    elif defname == 'singleconfcalc':
+        dictionary = singleconfcalc
+    elif defname == 'frameseq':
+        dictionary = frameseq
     elif defname == 'atom_type':
-        dictionary = atomtypeDict
+        dictionary = atom_type
     elif defname == 'molecule_type':
         dictionary = moltypeDict
     elif defname == 'interaction':
-        dictionary = interDict
+        dictionary = interaction
     elif defname == 'sampling':
-        dictionary = samplingDict
+        dictionary = sampling
     else:
         dictionary = singleconfcalclist
     return MapDictionary(dictionary)
diff --git a/parser/parser-amber/AMBERParser.py b/parser/parser-amber/AMBERParser.py
index ae05aae2eff9e647f3c1c3cf683ad10907f922e7..54acd99e3d94685344bd6094f5b87834ca13a0b2 100644
--- a/parser/parser-amber/AMBERParser.py
+++ b/parser/parser-amber/AMBERParser.py
@@ -7,7 +7,7 @@ import nomadcore.ActivateLogging
 from nomadcore.caching_backend import CachingLevel
 from nomadcore.simple_parser import AncillaryParser, mainFunction, ParsingContext
 from nomadcore.simple_parser import SimpleMatcher as SM
-from AMBERDictionary import set_excludeList, set_includeList
+from AMBERDictionary import set_excludeList, set_includeList, get_updateDictionary
 from AMBERCommon import write_mdin
 import AMBERCommon as AmberC
 import trajectory_reader as TrajRead
@@ -83,7 +83,6 @@ class AMBERParser(AmberC.AMBERParserBase):
         This allows a consistent setting and resetting of the variables,
         when the parsing starts and when a section_run closes.
         """
-        self.metaIntoStorage = None
         self.secMethodIndex = None
         self.secSystemDescriptionIndex = None
         self.inputMethodIndex = None
@@ -246,17 +245,20 @@ class AMBERParser(AmberC.AMBERParserBase):
 #            else:
 #                self.MD = False
 #        if self.MD:
-        sampling_method = "molecular_dynamics"
+
+#       sampling_method = "molecular_dynamics"
+
 ##        elif len(self.singleConfCalcs) > 1: 
 #            pass # to do
 #        else:
 #            return
         # check for geometry optimization convergence
-        samplingGIndex = backend.openSection("section_sampling_method")
-        backend.addValue("sampling_method", sampling_method)
-        backend.closeSection("section_sampling_method", samplingGIndex)
+
+#        samplingGIndex = backend.openSection("section_sampling_method")
+#        backend.addValue("sampling_method", sampling_method)
+#        backend.closeSection("section_sampling_method", samplingGIndex)
         frameSequenceGIndex = backend.openSection("section_frame_sequence")
-        backend.addValue("frame_sequence_to_sampling_ref", samplingGIndex)
+#        backend.addValue("frame_sequence_to_sampling_ref", samplingGIndex)
         backend.addArrayValues("frame_sequence_local_frames_ref", np.asarray(self.singleConfCalcs))
         backend.closeSection("section_frame_sequence", frameSequenceGIndex)
 
@@ -380,16 +382,22 @@ class AMBERParser(AmberC.AMBERParserBase):
 
         Writes atomic positions, atom labels and lattice vectors.
         """
-        # check if control keywords were found or verbatim_writeout is false
-        #verbatim_writeout = True
+        # check if control keywords were found 
+        section_sampling_Dict = get_updateDictionary(self, 'sampling')
+        updateDict = {
+            'startSection' : [['section_sampling_method']],
+            #'muteSections' : [['section_system']],
+            'dictionary' : section_sampling_Dict
+            }
+        self.metaStorage.update(updateDict)
+        samplingGIndex = backend.openSection("section_sampling_method")
+        self.metaStorage.updateBackend(backend, 
+                startsection=['section_sampling_method'],
+                autoopenclose=False)
+        backend.closeSection("section_sampling_method", samplingGIndex)
+
+
         counter = 0
-        write_mdin(self, backend=backend,
-            metaInfoEnv=self.metaInfoEnv,
-            valuesDict=section.simpleValues,
-            metaNameStart='x_amber_mdin',
-            writeCheck=True,
-            location='verbatim writeout of mdin',
-            logger=LOGGER)
         exclude_list = set_excludeList(self)
         include_list = set_includeList()
         #for name in self.metaInfoEnv.infoKinds:
@@ -516,6 +524,22 @@ class AMBERParser(AmberC.AMBERParserBase):
             print(self.atompositions)
             self.atompositions = self.trajectory.iread()
 
+        section_frameseq_Dict = get_updateDictionary(self, 'frameseq')
+        section_singlecalc_Dict = get_updateDictionary(self, 'singleconfcalc')
+        section_frameseq_single_Dict = section_frameseq_Dict
+        section_frameseq_single_Dict.update(section_singlecalc_Dict)
+        updateDict = {
+            'startSection' : [
+                ['section_single_configuration_calculaion'],
+                ['section_frame_sequence']],
+            'muteSections' : [['section_method']],
+            'dictionary' : section_frameseq_single_Dict
+            }
+        self.metaStorage.update(updateDict)
+        self.metaStorage.updateBackend(backend, 
+                startsection=['section_frame_sequence'],
+                autoopenclose=False)
+
     def setStartingPointCalculation(self, parser):
         backend = parser.backend
         backend.openSection('section_calculation_to_calculation_refs')
@@ -526,7 +550,7 @@ class AMBERParser(AmberC.AMBERParserBase):
         return None
     
     def check_namelist_store(self, parser, lastLine, stopOnMatchRe, quitOnMatchRe, 
-            metaNameStart, matchNameList, onlyCaseSensitive, stopOnFirstLine):
+            metaNameStart, matchNameList, matchNameDict, onlyCaseSensitive, stopOnFirstLine):
         stopOnMatch = False
         if stopOnMatchRe.findall(lastLine):
             stopOnMatch = True
@@ -561,11 +585,13 @@ class AMBERParser(AmberC.AMBERParserBase):
                             if k in list(parser.lastMatch.keys()):
                                 parser.lastMatch[k]=v
                             else:
-                                parser.backend.addValue(k, v)
+                                matchNameDict[k].value=v
+                                matchNameDict[k].activeInfo=True
+                                #parser.backend.addValue(k, v)
             return False
 
     def adHoc_read_namelist_stop_parsing(self, parser, stopOnMatchStr, quitOnMatchStr, 
-            metaNameStart, matchNameList, onlyCaseSensitive, stopOnFirstLine):
+            metaNameStart, matchNameList, matchNameDict, onlyCaseSensitive, stopOnFirstLine):
 #        currentContext = parser.context[len(parser.context) - 1]
 #        currentMatcherId = currentContext.compiledMatcher.matcher.index.
         lastLine = parser.fIn.fInLine
@@ -579,7 +605,7 @@ class AMBERParser(AmberC.AMBERParserBase):
         if self.check_namelist_store(parser, lastLine, 
                 stopOnMatchRe, quitOnMatchRe,
                 metaNameStart, matchNameList, 
-                onlyCaseSensitive, 
+                matchNameDict, onlyCaseSensitive, 
                 stopOnFirstLine) is not True:
             while True:
 #                lastLine = parser.fIn.readline()
@@ -596,7 +622,7 @@ class AMBERParser(AmberC.AMBERParserBase):
                     if self.check_namelist_store(parser, lastLine, 
                             stopOnMatchRe, quitOnMatchRe, 
                             metaNameStart, matchNameList, 
-                            onlyCaseSensitive,
+                            matchNameDict, onlyCaseSensitive,
                             stopOnFirstLine):
                         break
                     else:
@@ -626,6 +652,7 @@ class AMBERParser(AmberC.AMBERParserBase):
                       quitOnMatchStr=None,
                       metaNameStart="x_amber_mdin_", 
                       matchNameList=cntrlNameList,
+                      matchNameDict=self.cntrlDict,
                       onlyCaseSensitive=True,
                       stopOnFirstLine=True)
                       )
@@ -644,6 +671,7 @@ class AMBERParser(AmberC.AMBERParserBase):
                        quitOnMatchStr=None,
                        metaNameStart="x_amber_mdin_", 
                        matchNameList=wtNameList,
+                       matchNameDict=self.wtDict,
                        onlyCaseSensitive=False,
                        stopOnFirstLine=True)
                        )
@@ -662,6 +690,7 @@ class AMBERParser(AmberC.AMBERParserBase):
                       quitOnMatchStr=None,
                       metaNameStart="x_amber_mdin_", 
                       matchNameList=ewaldNameList,
+                      matchNameDict=self.ewaldDict,
                       onlyCaseSensitive=True,
                       stopOnFirstLine=True)
                       )
@@ -680,6 +709,7 @@ class AMBERParser(AmberC.AMBERParserBase):
                       quitOnMatchStr=None,
                       metaNameStart="x_amber_mdin_", 
                       matchNameList=qmmmNameList,
+                      matchNameDict=self.qmmmDict,
                       onlyCaseSensitive=True,
                       stopOnFirstLine=True)
                       )
@@ -705,6 +735,7 @@ class AMBERParser(AmberC.AMBERParserBase):
                       quitOnMatchStr=None,
                       metaNameStart="x_amber_parm_", 
                       matchNameList=parmNameList,
+                      matchNameDict=self.parmDict,
                       onlyCaseSensitive=True,
                       stopOnFirstLine=True)
                       )
@@ -730,6 +761,7 @@ class AMBERParser(AmberC.AMBERParserBase):
                       quitOnMatchStr=None,
                       metaNameStart="x_amber_mdin_", 
                       matchNameList=mdoutNameList,
+                      matchNameDict=newDict,
                       onlyCaseSensitive=True,
                       stopOnFirstLine=True)
                       )
@@ -839,6 +871,7 @@ class AMBERParser(AmberC.AMBERParserBase):
                    quitOnMatchStr=r"\s*(?:FINAL\s*RESULTS|A\sV\sE\sR\sA\sG\sE\sS\s*O\sV\sE\sR)",
                    metaNameStart="x_amber_mdout_", 
                    matchNameList=mddataNameList,
+                   matchNameDict=self.mddataDict,
                    onlyCaseSensitive=True,
                    stopOnFirstLine=False)
                    )
diff --git a/parser/parser-amber/MetaInfoStorage.py b/parser/parser-amber/MetaInfoStorage.py
index e6a578a771ea99c985287dc1698f6ad1ee92d58c..552dc853a2b9ac5419df197588f071b10cb933b6 100644
--- a/parser/parser-amber/MetaInfoStorage.py
+++ b/parser/parser-amber/MetaInfoStorage.py
@@ -1,6 +1,7 @@
 import setup_paths
 import numpy as np
 from nomadcore.unit_conversion.unit_conversion import convert_unit
+from contextlib import contextmanager
 import logging
 import json
 import os
@@ -104,35 +105,35 @@ class Container(object):
 
     def updateBackend(self, backend, startsection=None, autoopenclose=False):
         if startsection:
-            if (self.Name in startsection or 
-                self.Name == startsection):
+            if self.Name == startsection:
                 if autoopenclose:
-                    with self.autosection(self.Name):
-                        self.updateBackendValues(self, backend)
+                    with self.autosection(backend, self.Name):
+                        self.updateBackendValues(backend)
                 else:
-                    self.updateBackendValues(self, backend)
+                    self.updateBackendValues(backend)
             else:
                 if self.Containers:
                     for module in self.Containers:
                         module.updateBackend(backend, startsection, autoopenclose)
         else:
             if autoopenclose:
-                with self.autosection(self.Name):
-                    self.updateBackendValues(self, backend)
+                with self.autosection(backend, self.Name):
+                    self.updateBackendValues(backend)
             else:
-                self.updateBackendValues(self, backend)
+                self.updateBackendValues(backend)
 
-    def autosection(self, sectionname):
-        self.opensection(sectionname)
+    @contextmanager
+    def autosection(self, backend, name):
+        self.gid = backend.openSection(name)
         yield self.gid
-        self.closesection(sectionname)
+        backend.closeSection(name, self.gid)
 
-    def opensection(self, backend, sectionname):
-        self.gid = backend.openSection(sectionname)
+    def opensection(self, backend, name):
+        self.gid = backend.openSection(name)
         yield self.gid
 
-    def closesection(self, backend, sectionname):
-        backend.closeSection(sectionname, self.gid)
+    def closesection(self, backend, name):
+        backend.closeSection(name, self.gid)
 
     def fetchAttr(self, resdict):
         for item in resdict:
@@ -151,7 +152,7 @@ class Container(object):
 
     def updateBackendValues(self, backend):
         if self.Storage:
-            self.updateBackendStorage()
+            self.updateBackendStorage(backend)
             self.Active = False
         if self.Containers:
             for module in self.Containers:
@@ -197,25 +198,25 @@ class Container(object):
         updateValue = None
         if "depends" in item:
             if "lookupdict" in item:
-                if "test" in item["depends"]:
-                    updateValue, localdict = checkTestsDicts(item, localdict)
-                elif 'assign' in item["depends"]:
-                    updateValue = item["depends"]["assign"]
-                elif 'value' in item["depends"]:
-                    itemdepval = item["depends"]['value']
+                if "test" in item["depends"][0]:
+                    updateValue, localdict = self.checkTestsDicts(item, localdict)
+                elif 'assign' in item["depends"][0]:
+                    updateValue = item["depends"][0]["assign"]
+                elif 'value' in item["depends"][0]:
+                    itemdepval = item["depends"][0]['value']
                     if itemdepval in localdict:
                         checkval = localdict[itemdepval]
                     else:
-                        accessName, checkval = findNameInLookupDict(itemdepval, item["lookupdict"])
+                        accessName, checkval = self.findNameInLookupDict(itemdepval, item["lookupdict"])
                         localdict.update({itemdepval : checkval})
                     updateValue = checkval
             else:
-                if "test" in item["depends"]:
-                    updateValue, localdict = checkTestsAttr(item, localdict)
-                if 'assign' in item["depends"]:
-                    updateValue = item["depends"]["assign"]
-                elif 'value' in item["depends"]:
-                    itemdepval = item["depends"]['value']
+                if "test" in item["depends"][0]:
+                    updateValue, localdict = self.checkTestsAttr(item, localdict)
+                if 'assign' in item["depends"][0]:
+                    updateValue = item["depends"][0]["assign"]
+                elif 'value' in item["depends"][0]:
+                    itemdepval = item["depends"][0]['value']
                     if itemdepval in localdict:
                         checkval = localdict[itemdepval]
                     else:
@@ -231,18 +232,17 @@ class Container(object):
         return updateValue, localdict
 
     def checkTestsDicts(self, item, localdict):
-        for tests in item["depends"]:
-            depdict = item["depends"][tests]
-            for deptests in depdict["test"]:
-                depmeet = 0
-                for deptest in deptests:
-                    if deptest[0] in localdict:
-                        checkval = localdict[deptest[0]]
-                    else:
-                        accessName, checkval = findNameInLookupDict(deptest[0], item.lookupdict)
-                        localdict.update({deptest[0] : checkval})
-                    if eval(str(checkval) + deptest[1]):
-                        depmeet += 1
+        for depdict in item["depends"]:
+            deptests = depdict["test"]
+            depmeet = 0
+            for deptest in deptests:
+                if deptest[0] in localdict:
+                    checkval = localdict[deptest[0]]
+                else:
+                    accessName, checkval = self.findNameInLookupDict(deptest[0], item.lookupdict)
+                    localdict.update({deptest[0] : checkval})
+                if eval(str(checkval) + deptest[1]):
+                    depmeet += 1
                 if depmeet == len(deptests):
                     if 'assign' in depdict:
                         return depdict['assign'], localdict
@@ -250,14 +250,15 @@ class Container(object):
                         if depdict['value'] in localdict:
                             checkval = localdict[depdict['value']]
                         else:
-                            accessName, checkval = findNameInLookupDict(depdict['value'], item.lookupdict)
+                            accessName, checkval = self.findNameInLookupDict(depdict['value'], 
+                                    item.lookupdict)
                             localdict.update({depdict['value'] : checkval})
                         return checkval, localdict
         return None, localdict
 
     def checkTestsAttr(self, item, localdict):
-        for tests in item["depends"]:
-            depdict = item["depends"][tests]
+        for depdict in item["depends"]:
+            #depdict = item["depends"][tests]
             for deptests in depdict["test"]:
                 depmeet = 0
                 for deptest in deptests:
@@ -305,19 +306,31 @@ class Container(object):
     def accumulateDict(self, checkDict):
         localdict = {}
         for itemk in checkDict:
-            if itemk in self.Storage.__dict__:
-                itemv = checkDict[itemk]
-                updateValue, localdict = self.checkUpdateValue(itemv, localdict)
-                if updateValue:
+            itemv = checkDict[itemk]
+            updateValue, localdict = self.checkUpdateValue(itemv, localdict)
+            if updateValue:
+                if itemk in self.Storage.__dict__:
                     self.Storage.__dict__[itemk]["val"] = updateValue
                     self.Storage.__dict__[itemk]["act"] = True
-                    self.Active = True
-                    if "valueSize" in itemv:
-                        if "sizeMetaName" in itemv:
-                            self.Storage.__dict__[itemv["sizeMetaName"]] = itemv["valueSize"]
-                    if "unitconverter" in itemv:
-                        newValue = itemv["unitconverter"](self, itemv)
-                        self.Storage.__dict__[itemk["val"]] = newvalue
+                elif (itemk.startswith('x_') and 
+                      itemv.activeSection == self.Name):
+                    attrvalues = {
+                            'act' : True, 
+                            'val' : updateValue, 
+                            'kind': None, 
+                            'dtyp': "C",
+                            'unit': None,
+                            'size': [],
+                            'refs': None
+                            }
+                    self.Storage.__dict__.update({itemk : attrvalues})
+                self.Active = True
+                if "valueSize" in itemv:
+                    if "sizeMetaName" in itemv:
+                        self.Storage.__dict__[itemv["sizeMetaName"]] = itemv["valueSize"]
+                if "unitconverter" in itemv:
+                    newValue = itemv["unitconverter"](self, itemv)
+                    self.Storage.__dict__[itemk["val"]] = newvalue
 
     def __str__(self, caller=None, decorate='', color=None, printactive=None, onlynames=None):
         string = ''