diff --git a/wetb/hawc2/htc_file.py b/wetb/hawc2/htc_file.py
index 50d834be0b11bcad06483bd63a22e4af9e95ce27..c4c353dc6657dc6f68b9505fd5c471c98203912a 100644
--- a/wetb/hawc2/htc_file.py
+++ b/wetb/hawc2/htc_file.py
@@ -7,241 +7,49 @@ See documentation of HTCFile below
 
 '''
 from collections import OrderedDict
-import os
-import time
-import numpy as np
-from wetb.functions.process_exec import pexec
-
-class HTCSection(object):
-    section = []
-    def __init__(self, section):
-        self.section = section
-
-    def __str__(self):
-        return repr(self)
-
-    def __repr__(self):
-        return self.section2str(self.section)
-
-    def section2str(self, section, level=0):
-        #list(list(section.items())[5][1][0].items())[8]
-        s = ""
-        endcomment = ""
-        if isinstance(section, tuple):
-            section, endcomment = section
-        for k, vs in section.items():
-            for v, comment in ([vs], vs)[isinstance(vs, list)]:
-                if isinstance(v, OrderedDict):
-                    s += "%sbegin %s;\t%s\n" % ("  "*level, k, comment[0])
-                    s += self.section2str(v, level + 1)
-                    s += "%send %s;\t%s\n" % ("  "*level, k, comment[1])
-                elif isinstance(v, list):
-                    #s += "%sbegin %s;%s\n" % ("  "*level, k, comment[0])
-                    v = [_v.strip() for _v in v]
-                    s += "  "*(level) + ("\n%s" % ("  "*(level))).join(v) + ("", "\n")[len(v) > 0]
-                    #s += "%send %s;%s\n" % ("  "*level, k, comment[1])
-                elif v is None:
-                    pass
-                else:
-                    if k.startswith(";"):
-                        s += ("%s;\t%s" % (v, comment)).rstrip() + "\n"
-                    else:
-                        s += ("%s%s\t%s;\t%s" % ("  "*(level), k, v, comment)).rstrip() + "\n"
-        return s + endcomment
-
-
-    def __getattribute__(self, *args, **kwargs):
-        try:
-            return object.__getattribute__(self, *args, **kwargs)
-        except:
-            #if args[0] not in self.section:
-            #    return ""
-            if isinstance(self.section[args[0]][0], OrderedDict):
-                return HTCSection(self.section[args[0]][0])
-            return self.section[args[0]][0]
-
-    def __setattr__(self, *args, **kwargs):
-        k, v = args
-        if k in dir(self):  # in ['section', 'filename', 'lines']:
-            return object.__setattr__(self, *args, **kwargs)
-        if k not in self.section:
-            if isinstance(v, (tuple, list)) and len(v) == 2:
-                self.section[k] = v
-            else:
-                self.section[k] = (v, "")
-        else:
-            if isinstance(v, (tuple, list)) and len(v) == 2:
-                self.section[k] = (str(v_) for v_ in v)
-            else:
-                comment = self.section[k][1]
-                self.section[args[0]] = (str(args[1]), comment)
-
-    def __delattr__(self, *args, **kwargs):
-        k, = args
-        if k in self.section:
-            del self.section[k]
-
-    def __eq__(self, other):
-        return str(self) == other
-
-    def __getitem__(self, section):
-        if "/" in section:
-            sections = section.split('/')
-            val = self.section[sections[0]][0]
-            for s in sections[1:]:
-                val = val[s][0]
-            return val
-        return self.section[section][0]
-
-    def add_section(self, name):
-        if name not in self.section:
-            self.section[name] = (OrderedDict(), ("", ""))
-        return HTCSection(self.section[name][0])
-
-
-
-class HTCFile(HTCSection):
-    """Htc file wrapper
-
-    Examples
-    --------
-    # load
-    >>> htcfile = HTCFile("test.htc")
-
-    # access (3 methods)
-    >>> print (htcfile['simulation']['time_stop'][0])
-    100
-    >>> print (htcfile['simulation/time_stop'])
-    100
-    >>> print (htcfile.simulation.time_stop)
-    100
-
-
-    # set values
-    >>> htcfile.simulation.time_stop = 200
-
-    # delete keys
-    >>> del htcfile.simulation.logfile
-
-    # safe key deleting
-    >>> try:
-    >>>     del htcfile.hydro.water_properties.water_kinematics_dll
-    >>> except KeyError:
-    >>>     pass
 
-
-    # save
-    >>> htcfile.save() # replace existing file
-    >>> htcfile.save('newfilename.htc')
-
-    # simulate
-    >>> htcfile.simulate('<hawc2path>/hawc2mb.exe')
-    """
+from wetb.hawc2.htc_contents import HTCContents, HTCSection, HTCLine, \
+    HTCDefaults
+import os
 
 
+class HTCFile(HTCContents, HTCDefaults):
     filename = None
-    lines = []
+    level = 0
+
+    initial_comments = None
     def __init__(self, filename=None):
+        self.contents = OrderedDict()
+        self.initial_comments = []
+
         if filename is None:
             self.filename = 'empty.htc'
-            self.lines = empty_htc.split("\n")
+            self.lines = self.empty_htc.split("\n")
         else:
             self.filename = filename
 
             with open(filename) as fid:
                 self.lines = fid.readlines()
-        self.section = self.parse_section()
-
-    def set_name(self, name):
-        self.filename = "%s.htc" % name
-        self.simulation.logfile = "./log/%s.log" % name
-        self.output.filename = "./res/%s" % name
-
-
-    def parse_line(self):
-        global curr_line
-        line, *comments = self.lines[curr_line].split(";")
-        comments = ";".join(comments).rstrip()
-        while curr_line + 1 < len(self.lines) and self.lines[curr_line + 1].strip().startswith(";"):
-            curr_line += 1
-            comments += "\n%s" % self.lines[curr_line].rstrip()
-        return line, comments
-
-    def key_value(self, line):
-        if " " in line.strip() or "\t" in line.strip():
-            d = 9999
-            if " " in line.strip():
-                d = line.strip().index(" ")
-            if "\t" in line.strip() and line.strip().index('\t') < d:
-                d = line.strip().index('\t')
-            key = line.strip()[:d]
-            value = line.strip()[d + 1:]
-            return key, value
-        else:
-            return None, None
-
-    def parse_section(self, startline=0):
-        global curr_line
-        section = OrderedDict()
-        curr_line = startline
-        while curr_line < len(self.lines):
-            line, comments = self.parse_line()
-            if line.strip().lower().startswith("begin "):
-                key = line.strip()[6:]
-                if key == "output":
-                    keys = ['filename', 'data_format', 'buffer', 'time']
-                    sensors = []
-                    output = OrderedDict()
-                    for k in ['filename', 'data_format', 'buffer', 'time']:
-                        output[k] = (None, "")
-                    while not self.lines[curr_line + 1].lower().strip().startswith('end'):
-                        curr_line += 1
-                        line, comment = self.parse_line()
-                        k, v = self.key_value(line)
-                        if k in keys:
-                            output[k] = (v, comment)
-                        else:
-                            sensors.append("%s;%s" % (line, comment))
-                    curr_line += 1
-                    line, endcomments = self.parse_line()
-                    output['sensors'] = (sensors, ("", ""))
-                    section[key] = (output, (comments, endcomments))
+        self.lines = [l.strip() for l in self.lines]
+
+        lines = self.lines.copy()
+        while lines:
+            if lines[0].startswith(";"):
+                self.initial_comments.append(lines.pop(0).strip())
+            elif lines[0].lower().startswith("begin"):
+                self._add_contents(HTCSection.from_lines(lines))
+            else:
+                line = HTCLine.from_lines(lines)
+                self._add_contents(line)
+                if line.name_ == "exit":
+                    break
 
-                else:
-                    curr_line += 1
-                    value, end_comments = self.parse_section(curr_line)
-                    while self.lines[curr_line + 1].strip().startswith(";"):
-                        curr_line += 1
-                        end_comments += "\n%s" % self.lines[curr_line].strip()
-                    if key in section:
-                        if not isinstance(section[key], list):
-                            section[key] = [section[key], (value, (comments, end_comments))]
-                        else:
-                            section[key].append((value, (comments, end_comments)))
-                    else:
-                        section[key] = (value, (comments, end_comments))
-            elif line.lower().strip().startswith("end "):
-                return section, comments
-            elif line.lower().strip().startswith('exit'):
-                pass
-            elif " " in line.strip() or "\t" in line.strip():
 
-                key, value = self.key_value(line)
-                if key in section:
-                    if not isinstance(section[key], list):
-                        section[key] = [section[key], (value, comments)]
-                    else:
-                        section[key].append((value, comments))
-                else:
-                    section[key] = (value, comments)
-            else:
-                section[';%d' % (curr_line + 1)] = (line, comments)
-            curr_line += 1
-        return section
+    def __setitem__(self, key, value):
+        self.contents[key] = value
 
     def __str__(self):
-        return self.section2str(self.section) + "exit;"
-
+        return "".join(self.initial_comments + [c.__str__(1) for c in self])
 
     def save(self, filename=None):
         if filename is None:
@@ -251,101 +59,89 @@ class HTCFile(HTCSection):
         with open(filename, 'w') as fid:
             fid.write(str(self))
 
-    def simulate(self, hawc2_path):
-        self.save(os.path.join(os.path.dirname(self.filename), "auto.htc"))
-        errorcode, stdout, stderr, cmd = pexec([hawc2_path, "./htc/auto.htc"], os.path.realpath("..", os.path.dirname(self.filename)))
+    def set_name(self, name):
+        self.filename = "%s.htc" % name
+        self.simulation.logfile = "./log/%s.log" % name
+        self.output.filename = "./res/%s" % name
 
-        if 'logfile' in self['simulation']:
-            with open(os.path.join(os.path.realpath(os.path.dirname(self.filename)), "../", self['simulation']['logfile'])) as fid:
-                log = fid.read()
+    def input_files(self):
+        files = [self.filename]
+        for mb in [self.new_htc_structure[mb] for mb in self.new_htc_structure.keys() if mb.startswith('main_body')]:
+            if "timoschenko_input" in mb:
+                files.append(mb.timoschenko_input.filename[0])
+            files.append(mb.get('external_bladedata_dll', [None, None, None])[2])
+        if 'aero' in self:
+            files.append(self.aero.ae_filename[0])
+            files.append(self.aero.pc_filename[0])
+            files.append(self.aero.get('external_bladedata_dll', [None, None, None])[2])
+            files.append(self.aero.get('output_profile_coef_filename', [None])[0])
+            if 'dynstall_ateflap' in self.aero:
+                files.append(self.aero.dynstall_ateflap.get('flap', [None] * 3)[2])
+            if 'bemwake_method' in self.aero:
+                files.append(self.aero.bemwake_method.get('a-ct-filename', [None] * 3)[0])
+        for dll in [self.dll[dll] for dll in self.get('dll', {}).keys()]:
+            files.append(dll.filename[0])
+        if 'wind' in self:
+            files.append(self.wind.get('user_defined_shear', [None])[0])
+            files.append(self.wind.get('wind.user_defined_shear_turbulence', [None])[0])
+        if 'wakes' in self:
+            files.append(self.wind.get('use_specific_deficit_file', [None])[0])
+            files.append(self.wind.get('write_ct_cq_file', [None])[0])
+            files.append(self.wind.get('write_final_deficits', [None])[0])
+        if 'hydro' in self:
+            if 'water_properties' in self.hydro:
+                files.append(self.hydro.water_properties.get('water_kinematics_dll', [None])[0])
+        if 'soil' in self:
+            if 'soil_element' in self.soil:
+                files.append(self.soil.soil_element.get('datafile', [None])[0])
+        if 'force' in self:
+            files.append(self.force.get('dll', [None])[0])
+
+        return [f for f in set(files) if f]
+
+    def output_files(self):
+        files = []
+        for k, index in [('simulation/logfile', 0),
+                         ('simulation/animation', 0),
+                         ('simulation/visualization', 0),
+                         ('new_htc_structure/beam_output_file_name', 0),
+                         ('new_htc_structure/body_output_file_name', 0),
+                         ('new_htc_structure/struct_inertia_output_file_name', 0),
+                         ('new_htc_structure/body_eigenanalysis_file_name', 0),
+                         ('new_htc_structure/constraint_output_file_name', 0),
+                         ('new_htc_structure/structure_eigenanalysis_file_name', 0),
+                         ('new_htc_structure/system_eigenanalysis', 0),
+                         ('output_at_time/filename', 0),
+                         ('turb_export/filename_u', 0),
+                         ('turb_export/filename_v', 0),
+                         ('turb_export/filename_w', 0)]:
+            line = self.get(k)
+            if line:
+                files.append(line[index])
+        dataformat = self.output.get('data_format', 'hawc_ascii')
+        res_filename = self.output.filename[0]
+        if dataformat == "gtsdf" or dataformat == "gtsdf64":
+            files.append(res_filename + ".hdf5")
+        elif dataformat == "flex_int":
+            files.append(res_filename + ".int")
+            files.append(os.path.join(os.path.dirname(res_filename), 'sensor'))
         else:
-            log = stderr
-        if "error" in log.lower():
-            raise Exception ("Simulation failed: %s" % (log[:log.lower().index("error") + 1000]))
+            files.append(res_filename + ".sel")
+            files.append(res_filename + ".dat")
 
-    def add_sensor(self, sensor, nr=None):
-        if nr is None:
-            nr = len(self.output.sensors)
-        line, *comments = sensor.split(";")
-        comments = ";".join(comments).rstrip()
-        self.output.sensors.insert(nr, ("%s;\t%s" % (line.strip(), comments)).rstrip())
+        for key in [k for k in self.contents.keys() if k.startswith("output_at_time")]:
+            files.append(self[key]['filename'][0])
+        return [f for f in files if f]
 
+    def turbulence_files(self):
+        files = [self.get('wind.%s.filename_%s' % (type, comp), [None])[0] for type in ['mann', 'flex'] for comp in ['u', 'v', 'w']]
+        return [f for f in files if f]
 
-    def add_mann_turbulence(self, L=29.4, ae23=1, Gamma=3.9, seed=1001, high_frq_compensation=True,
-                            filenames=None,
-                            no_grid_points=(4096, 32, 32), box_dimension=(6000, 100, 100),
-                            std_scaling=(1, .8, .5)):
-        wind = self.add_section('wind')
-        wind.turb_format = (1, "0=none, 1=mann,2=flex")
-        mann = wind.add_section('mann')
-        mann.create_turb_parameters = ("%.2f %.3f %.2f %d %d" % (L, ae23, Gamma, seed, high_frq_compensation), "L, alfaeps, gamma, seed, highfrq compensation")
-        if filenames is None:
-            filenames = ["./turb/turb_wsp%d_s%04d%s.bin" % (float(self.wind.wsp), seed, c) for c in ['u', 'v', 'w']]
-        if isinstance(filenames, str):
-            filenames = ["./turb/%s_s%04d%s.bin" % (filenames, seed, c) for c in ['u', 'v', 'w']]
-        for filename, c in zip(filenames, ['u', 'v', 'w']):
-            setattr(mann, 'filename_%s' % c, filename)
-        for c, n, dim in zip(['u', 'v', 'w'], no_grid_points, box_dimension):
-            setattr(mann, 'box_dim_%s' % c, "%d %.4f" % (n, dim / (n - 1)))
-        if std_scaling is None:
-            mann.dont_scale = 1
-        else:
-            try:
-                del mann.dont_scale
-            except KeyError:
-                pass
-            mann.std_scaling = "%f %f %f" % std_scaling
 
 
-empty_htc = """begin simulation;
-    time_stop 600;
-    solvertype    1;    (newmark)
-    on_no_convergence continue;
-    convergence_limits 1E3 1.0 1E-7; ; . to run again, changed 07/11
-    begin newmark;
-      deltat    0.02;
-    end newmark;
-end simulation;
-;
-;----------------------------------------------------------------------------------------------------------------------------------------------------------------
-;
-begin new_htc_structure;
-  begin orientation;
-  end orientation;
-  begin constraint;
-  end constraint;
-end new_htc_structure;
-;
-;----------------------------------------------------------------------------------------------------------------------------------------------------------------
-;
-begin wind ;
-  density                 1.225 ;
-  wsp                     10   ;
-  tint                    1;
-  horizontal_input        1     ;            0=false, 1=true
-  windfield_rotations     0 0.0 0.0 ;    yaw, tilt, rotation
-  center_pos0             0 0 -30 ; hub heigth
-  shear_format            1   0;0=none,1=constant,2=log,3=power,4=linear
-  turb_format             0     ;  0=none, 1=mann,2=flex
-  tower_shadow_method     0     ;  0=none, 1=potential flow, 2=jet
-end wind;
-;
-;----------------------------------------------------------------------------------------------------------------------------------------------------------------
-;
-begin dll;
-end dll;
-;
-;----------------------------------------------------------------------------------------------------------------------------------------------------------------
-;
-begin output;
-  general time;
-end output;
-exit;"""
 
 if "__main__" == __name__:
-    f = HTCFile(r"C:\mmpe\hawc2\models\DTU10MWRef\htc\dtu_10mw_rwt.htc")
-    print (f.section2str(f['new_htc_structure']['main_body'][0]))
-    f.simulate("hawc2_path")
-
+    f = HTCFile(r"C:\mmpe\HAWC2\Hawc2_model\htc\NREL_5MW_reference_wind_turbine_launcher_test.htc")
+    print ("\n".join(f.output_files()))
 
 
diff --git a/wetb/hawc2/tests/test_files/test.htc b/wetb/hawc2/tests/test_files/test.htc
deleted file mode 100644
index 8b493130355be4985435681b1831b1b8307bce36..0000000000000000000000000000000000000000
--- a/wetb/hawc2/tests/test_files/test.htc
+++ /dev/null
@@ -1,773 +0,0 @@
-; DTU_10MW_RWT, cpav, 17th Friday 2015
-; 
-begin simulation;
-  time_stop     100;
-  solvertype    1;    (newmark)
-  on_no_convergence continue;
-  convergence_limits 1E3 1.0 1E-7; ; . to run again, changed 07/11
-  logfile ./logfiles/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004.log;
-; visualization ./visualization/dlc12_wsp10_wdir000_s1004.hdf5;
-  begin newmark;
-    deltat    0.02;  
-  end newmark;
-end simulation;
-;
-;---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
-begin new_htc_structure;
-;--------------------------------------------------------------------------------------------------
-;  beam_output_file_name  ./res_eigen/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004/dlc12_wsp10_wdir000_s1004_beam.dat;
-;  body_output_file_name  ./res_eigen/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004/dlc12_wsp10_wdir000_s1004_body.dat;
-;  struct_inertia_output_file_name ./res_eigen/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004/dlc12_wsp10_wdir000_s1004_struct.dat;
-;  body_eigenanalysis_file_name ./res_eigen/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004/dlc12_wsp10_wdir000_s1004_body_eigen.dat;
-;  structure_eigenanalysis_file_name ./res_eigen/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004/dlc12_wsp10_wdir000_s1004_strc_eigen.dat;
-;---------------------------------------------------------------------------------------------------
- begin main_body;         tower 115m
-    name        tower;            
-    type        timoschenko;
-    nbodies     1;
-    node_distribution     c2_def;
-    damping_posdef   0.0 0.0 0.0 4.12E-03 4.12E-03 4.5E-04; Mx My Mz Kx Ky Kz , M´s raises overall level, K´s raises high freguency level "tuned by Larh"
-     begin timoschenko_input;
-      filename ./data/DTU_10MW_RWT_Tower_st.dat;
-      set 1 2; 
-    end timoschenko_input;
-    begin c2_def;              Definition of centerline (main_body coordinates)
-      nsec 11;
-      sec	1	0	0	0.00	0;  x,y,z,twist
-      sec	2	0	0	-11.50	0;
-      sec	3	0	0	-23.00	0;
-      sec	4	0	0	-34.50	0;
-      sec	5	0	0	-46.00	0;
-      sec	6	0	0	-57.50	0;
-      sec	7	0	0	-69.00	0;
-      sec	8	0	0	-80.50	0;
-      sec	9	0	0	-92.00	0;
-      sec	10	0	0	-103.50	0;
-      sec	11	0	0	-115.63	0;	  
-     end c2_def;
-    end main_body;
-;
-  begin main_body;
-    name        towertop;              
-    type        timoschenko;
-    nbodies     1;
-    node_distribution     c2_def;
-    damping_posdef  0.0  0.0  0.0  7.00E-03  7.00E-03  7.00E-03;   "changed by Larh"	
-	concentrated_mass	2.0	0.0	2.6870E+00	3.0061E-01	4.4604E+05	4.1060E+06	4.1060E+05	4.1060E+06;	Nacelle mass and inertia "corrected by Anyd 25/4/13"
-	begin timoschenko_input;
-      filename ./data/DTU_10MW_RWT_Towertop_st.dat;
-      set 1 2;                
-    end timoschenko_input;
-    begin c2_def;              Definition of centerline (main_body coordinates)
-      nsec 2;
-      sec 1 0.0 0.0  0.0    0.0; x,y,z,twist
-      sec 2 0.0 0.0 -2.75   0.0; 
-    end c2_def;
-  end main_body;
-;
-  begin main_body;
-    name        shaft;              
-    type        timoschenko;
-    nbodies     1;
-    node_distribution     c2_def;
-	damping_posdef  0.0 0.0 0.0 4.65E-04  4.65E-04  3.983E-03; "tuned by Anyd 23/5/13 to 31.45 log decr. damping for free free with stiff rotor and tower"
-    concentrated_mass	1.0	0.0	0.0	0.0	0.0	0.0	0.0	3.751E+06;	generator equivalent slow shaft "re_tuned by Anyd 20/2/13"  
-    concentrated_mass	5.0	0.0	0.0	0.0	1.0552E+05	0.0	0.0	3.257E+05;	hub mass and inertia;	"re_tuned by Anyd 20/2/13"  
-	begin timoschenko_input;
-      filename ./data/DTU_10MW_RWT_Shaft_st.dat;
-      set 1 1;                
-    end timoschenko_input;
-    begin c2_def;              Definition of centerline (main_body coordinates)
-      nsec 5;
-      sec 1 0.0 0.0 0.0 0.0; Tower top x,y,z,twist
-      sec 2 0.0 0.0 -1.5 0.0; 
-      sec 3 0.0 0.0 -3.0 0.0; 
-      sec 4 0.0 0.0 -4.4 0.0; Main bearing
-      sec 5 0.0 0.0 -7.1 0.0; Rotor centre
-    end c2_def;
-  end main_body;	
-;
-  begin main_body;
-    name        hub1;              
-    type        timoschenko;
-    nbodies     1;
-    node_distribution     c2_def;
-    damping_posdef  0.0  0.0  0.0  3.00E-06  3.00E-06  2.00E-05;   "changed by Larh"	
-	begin timoschenko_input;
-      filename ./data/DTU_10MW_RWT_Hub_st.dat;
-      set 1 2;                
-    end timoschenko_input;
-    begin c2_def;              Definition of centerline (main_body coordinates)
-      nsec 2;
-      sec 1 0.0 0.0 0.0 0.0; x,y,z,twist
-      sec 2 0.0 0.0 2.8 0.0; 
-    end c2_def;
-  end main_body;
-;
-begin main_body;
-  name           hub2;
-  copy_main_body hub1;
-end main_body;
-;
-begin main_body;
-  name        blade1;
-  type        timoschenko;
-  nbodies     10;
-  node_distribution     c2_def;
-  damping_posdef     0.0 0.0 0.0 0.00153 0.00255 0.00033;
-  begin timoschenko_input;
-    filename data/2Bdown-rR1.08_blade_st.dat;
-    set 1 1;
-  end timoschenko_input;
-   begin c2_def;
-    nsec 20;
-    sec 1  -6.48506643395348917053e-16  5.04432273032044074237e-05 2.39808173319033927116e-16 -1.02444066874147825530e+01;
-    sec 2  -1.77803489746453341307e-03  1.40884010924257948444e-02 4.94005896339658523431e+00 -1.03091808614494873098e+01;
-    sec 3  -1.29212241029686869531e-01  5.79344574853726257402e-02 1.04152655253544850211e+01 -1.03512581325657002651e+01;
-    sec 4  -6.50220227984423693179e-01  1.59254321735797399473e-01 1.63759726688984237342e+01 -8.39274960342848785899e+00;
-    sec 5  -1.10016152136135403339e+00  2.09976513503588618770e-01 2.27401393284814510309e+01 -5.29939281517982863079e+00;
-    sec 6  -1.27609842156438824112e+00  2.52497605662293733708e-01 2.93954065626978966463e+01 -3.67457815074469085204e+00;
-    sec 7  -1.26200198053285372879e+00  3.08809307184219228315e-01 3.62056325665537315217e+01 -2.38384593727400062591e+00;
-    sec 8  -1.12902484623288623666e+00  3.89613109385942235630e-01 4.30213648789366942538e+01 -1.07640254791781408983e+00;
-    sec 9  -9.75642487443318273677e-01  5.00517978918732286964e-01 4.96926697536713462000e+01 3.99910621631581308932e-01;
-    sec 10  -8.30703689432845115981e-01  6.43627562673231068402e-01 5.60820487321786202983e+01 1.90120197901677179253e+00;
-    sec 11  -7.03732321571815977457e-01  8.14873082490295441715e-01 6.20751462106500326854e+01 3.28366369604164543006e+00;
-    sec 12  -5.97896788566067871606e-01  1.00643157409663430712e+00 6.75876008339258476099e+01 4.46194140922395110493e+00;
-    sec 13  -5.12851158579595400866e-01  1.20836579160246815334e+00 7.25674388984144798087e+01 5.41647291969291710956e+00;
-    sec 14  -4.46215476488487916562e-01  1.41156599583795405728e+00 7.69934419594975452128e+01 6.17190016755864956366e+00;
-    sec 15  -3.94337497995550290142e-01  1.60817569136336380176e+00 8.08706180936091385547e+01 6.77035476874162256422e+00;
-    sec 16  -3.51792123394631617295e-01  1.79298858887296819198e+00 8.42241469170983663162e+01 7.23511092753480955508e+00;
-    sec 17  -3.07790697631454057692e-01  1.96360524492743881986e+00 8.70930265569473078813e+01 7.57092772105627531687e+00;
-    sec 18  -2.56218346285707054832e-01  2.11879327890513113886e+00 8.95242977444024887745e+01 7.76961278403044897090e+00;
-    sec 19  -1.94041837542441558684e-01  2.25830640717902486614e+00 9.15683243220642566484e+01 7.83441475282797217261e+00;
-    sec 20  -1.24300073691619730742e-01  2.38167115113771243884e+00 9.32752800000000092950e+01 7.79502842679776009049e+00;
-  end c2_def;
-end main_body;
-begin main_body;
-  name           blade2;
-  copy_main_body blade1;
-end main_body;
-;-------------------------------------------------------------------------------------------------------------------------------                   
-;
-  begin orientation;
-    begin base;
-      body   tower;
-      inipos        0.0 0.0 0.0;         initial position of node 1
-      body_eulerang 0.0 0.0 0.0;
-    end base;
-; 
-    begin relative;
-      body1  tower last;
-      body2  towertop 1;
-      body2_eulerang 0.0 0.0 0.0; 
-    end relative;
-;
-    begin relative;
-      body1  towertop last;
-      body2  shaft 1;
-      body2_eulerang 90.0 0.0 0.0;
-      body2_eulerang -5.0 0.0 0.0;    5 deg tilt angle
-      body2_eulerang 0.0 0.0 0;
-      mbdy2_ini_rotvec_d1 0.0 0.0 -1.0 0.5; mbdy2_ini_rotvec_d1 0.0 0.0 -1.0 0.5; 
-    end relative;
-;
-begin relative;
-    body1 shaft last;
-    body2 hub1 1;
-    body2_eulerang -90.000000 0.000000 0.000000;
-;body2_eulerang 0.000000 0.000000 0.000000;
-; body2_eulerang 2.500000 0.000000 0.000000;
-  end relative;
-  begin relative;
-    body1 shaft last;
-    body2 hub2 1;
-    body2_eulerang -90.000000 0.000000 0.000000;
-    body2_eulerang 0.000000 180.000000 0.000000;
-; body2_eulerang 2.500000 0.000000 0.000000;
-  end relative;
-  begin relative;
-    body1 hub1 last;
-    body2 blade1 1;
-    body2_eulerang 0.000000 0.000000 0.000000;
-  end relative;
-  begin relative;
-    body1 hub2 last;
-    body2 blade2 1;
-    body2_eulerang 0.000000 0.000000 0.000000;
-  end relative;
-end orientation;
-;-------------------------------------------------------------------------------------------------------------------------------
-begin constraint;   
-;
-    begin fix0;  fixed to ground in translation and rotation of node 1
-      body tower;
-    end fix0;
-;
-     begin fix1; tower towertop
-		   body1 tower last;
-		   body2 towertop 1;
-		 end fix1;
-begin fix1; shaft hub
-    body1 shaft last;
-    body2 hub1 1;
-  end fix1;
-  begin fix1;
-    body1 shaft last;
-    body2 hub2 1;
-  end fix1;
-   ;
-    begin bearing1;                       free bearing
-      name  shaft_rot;
-      body1 towertop last;
-      body2 shaft 1;
-      bearing_vector 2 0.0 0.0 -1.0;        x=coo (0=global.1=body1.2=body2) vector in body2 coordinates where the free rotation is present
-   end bearing1; 
-;
-;    begin bearing3;                       free bearing
-;      name  shaft_rot;
-;      body1 towertop last;
-;      body2 shaft 1;
-;      bearing_vector 2 0.0 0.0 -1.0;        x=coo (0=global.1=body1.2=body2) vector in body2 coordinates where the free rotation is present
-;      omegas 0.0;
-;   end bearing3; 
-;
-  begin bearing2;
-    name pitch1;
-    body1 hub1 last;
-    body2 blade1 1;
-    bearing_vector 2 0.000 0.000 -1.000;
-  end bearing2;
-  begin bearing2;
-    name pitch2;
-    body1 hub2 last;
-    body2 blade2 1;
-    bearing_vector 2 0.000 0.000 -1.000;
-  end bearing2;
-end constraint;
-end new_htc_structure;
-;---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
-begin wind;
-  density                 1.225;
-  wsp                     10;
-  tint                    0.2096;
-  horizontal_input        1;
-  windfield_rotations     0 0.0 0.0;    yaw, tilt, rotation
-  center_pos0             0.0 0.0 -119; hub heigth
-  shear_format            3 0.2; 
-  turb_format             1;  0=none, 1=mann,2=flex
-  tower_shadow_method     3;  0=none, 1=potential flow, 2=jet
-  scale_time_start        0; 
-  wind_ramp_factor   0.0 100 0.8 1.0;
-; iec_gust;
-;
-;  wind_ramp_abs  400.0  401.0  0.0   1.0;   wsp. after the step:  5.0 
-;  wind_ramp_abs  501.0  502.0  0.0   1.0;   wsp. after the step:  6.0 
-;  wind_ramp_abs  602.0  603.0  0.0   1.0;   wsp. after the step:  7.0 
-;  wind_ramp_abs  703.0  704.0  0.0   1.0;   wsp. after the step:  8.0 
-;  wind_ramp_abs  804.0  805.0  0.0   1.0;   wsp. after the step:  9.0 
-;  wind_ramp_abs  905.0  906.0  0.0   1.0;   wsp. after the step: 10.0 
-;  wind_ramp_abs  1006.0  1007.0  0.0   1.0;   wsp. after the step: 11.0 
-;  wind_ramp_abs  1107.0  1108.0  0.0   1.0;   wsp. after the step: 12.0 
-;  wind_ramp_abs  1208.0  1209.0  0.0   1.0;   wsp. after the step: 13.0 
-;  wind_ramp_abs  1309.0  1310.0  0.0   1.0;   wsp. after the step: 14.0 
-;  wind_ramp_abs  1410.0  1411.0  0.0   1.0;   wsp. after the step: 15.0 
-;  wind_ramp_abs  1511.0  1512.0  0.0   1.0;   wsp. after the step: 16.0 
-;  wind_ramp_abs  1612.0  1613.0  0.0   1.0;   wsp. after the step: 17.0 
-;  wind_ramp_abs  1713.0  1714.0  0.0   1.0;   wsp. after the step: 18.0 
-;  wind_ramp_abs  1814.0  1815.0  0.0   1.0;   wsp. after the step: 19.0 
-;  wind_ramp_abs  1915.0  1916.0  0.0   1.0;   wsp. after the step: 20.0 
-;  wind_ramp_abs  2016.0  2017.0  0.0   1.0;   wsp. after the step: 21.0 
-;  wind_ramp_abs  2117.0  2118.0  0.0   1.0;   wsp. after the step: 22.0 
-;  wind_ramp_abs  2218.0  2219.0  0.0   1.0;   wsp. after the step: 23.0 
-;  wind_ramp_abs  2319.0  2320.0  0.0   1.0;   wsp. after the step: 24.0 
-;  wind_ramp_abs  2420.0  2421.0  0.0   1.0;   wsp. after the step: 25.0 
-;
-  begin mann;
-    create_turb_parameters 29.4 1.0 3.9 1004 1.0;      L, alfaeps, gamma, seed, highfrq compensation
-    filename_u    ./turb/turb_wsp10_s1004u.bin; 
-    filename_v    ./turb/turb_wsp10_s1004v.bin; 
-    filename_w    ./turb/turb_wsp10_s1004w.bin; 
-    box_dim_u    1024 0.8544921875; 
-    box_dim_v    32 6.5; 
-    box_dim_w    32 6.5; 
-    std_scaling   1.0 0.7 0.5; 
-  end mann; 
-;
-  begin tower_shadow_potential_2;
-    tower_mbdy_link tower;
-    nsec  2;
-    radius      0.0  4.15;
-    radius     115.63 2.75; (radius)
-  end tower_shadow_potential_2;
-end wind;
-;
-begin aerodrag;
-  begin aerodrag_element;
-    mbdy_name tower;
-    aerodrag_sections uniform 10;
-    nsec 2;
-    sec 0.0 0.6 8.3;  tower bottom
-    sec 115.63 0.6 5.5;  tower top (diameter)
-  end aerodrag_element;
-;
-  begin aerodrag_element;        Nacelle drag side
-    mbdy_name shaft;
-    aerodrag_sections uniform 2;
-    nsec 2;
-    sec 0.0   0.8 10.0;  
-    sec 7.01  0.8 10.0;  
-  end aerodrag_element;
-end aerodrag;
-;
-begin aero; 
-  nblades  2;
-  hub_vec shaft -3;         rotor rotation vector (normally shaft composant directed from pressure to sustion side)
-  link 1 mbdy_c2_def blade1;
-  link 2 mbdy_c2_def blade2;
-;  link 3 mbdy_c2_def blade3;
-  ae_filename        ./data/2Bdown-rR1.08_ae.dat;
-  pc_filename        ./data/2Bup_AEP095_pc.dat;
-  induction_method   1;     0=none, 1=normal
-  aerocalc_method    1;     0=ingen aerodynamic, 1=med aerodynamic
-  aerosections       50; def. 50
-  ae_sets            1 1 1;
-  tiploss_method     1;     0=none, 1=prandtl
-  dynstall_method    2;     0=none, 1=stig øye method,2=mhh method
-;  
-end aero; 
-;-------------------------------------------------------------------------------------------------  
-begin dll;
-; 
-  begin type2_dll; 
-    name risoe_controller;
-    filename  ./control/risoe_controller.dll;
-    dll_subroutine_init init_regulation;
-    dll_subroutine_update update_regulation;
-    arraysizes_init  52 1;
-    arraysizes_update  12 100;
-	begin init;
-; Overall parameters
-      constant   1 10000.0; Rated power [kW]                         
-      constant   2   0.628; Minimum rotor speed [rad/s]
-      constant   3   1.005; Rated rotor speed [rad/s]
-      constant   4  15.6E+06; Maximum allowable generator torque [Nm]
-      constant   5  110.0; Minimum pitch angle, theta_min [deg], 
-							; if |theta_min|>90, then a table of <wsp,theta_min> is read;
-							; from a file named 'wptable.n', where n=int(theta_min)
-      constant   6  82.0; Maximum pitch angle [deg]
-      constant   7  10.0; Maximum pitch velocity operation [deg/s]
-      constant   8   0.4; Frequency of generator speed filter [Hz]
-      constant   9   0.7; Damping ratio of speed filter [-]
-      constant  10  2.42; Frequency of free-free DT torsion mode [Hz], if zero no notch filter used
-; Partial load control parameters
-      constant  11   0.108212E+08; Optimal Cp tracking K factor [Nm/(rad/s)^2],;
-                         ; Qg=K*Omega^2, K=eta*0.5*rho*A*Cp_opt*R^3/lambda_opt^3                     
-      constant  12   3.237E+07; Proportional gain of torque controller [Nm/(rad/s)]
-      constant  13   7.263E+06; Integral gain of torque controller [Nm/rad]
-      constant  14   0.0; Differential gain of torque controller [Nm/(rad/s^2)]
-;     Full load control parameters
-      constant  15   2; Generator control switch [1=constant power, 2=constant torque]
-      constant  16   5.525E-01; Proportional gain of pitch controller [rad/(rad/s)]
-      constant  17   1.817E-01; Integral gain of pitch controller [rad/rad]
-      constant  18   0.0; Differential gain of pitch controller [rad/(rad/s^2)]
-      constant  19   0.4e-8; Proportional power error gain [rad/W]
-      constant  20   0.4e-8; Integral power error gain [rad/(Ws)]
-      constant  21 	 1.113E+01; Coefficient of linear term in aerodynamic gain scheduling, KK1 [deg]
-      constant  22 	 4.791E+02; Coefficient of quadratic term in aerodynamic gain scheduling, KK2 [deg^2] &
-							; (if zero, KK1 = pitch angle at double gain)
-      constant  23   1.3; Relative speed for double nonlinear gain [-]
-;     Cut-in simulation parameters
-      constant  24  -1; Cut-in time [s]
-      constant  25  1.0; Time delay for soft start of torque [1/1P]
-;     Cut-out simulation parameters
-      constant  26  -1; Cut-out time [s]
-      constant  27   5.0; Time constant for linear torque cut-out [s]
-      constant  28  1; Stop type [1=normal, 2=emergency]
-      constant  29  1.0; Time delay for pitch stop after shut-down signal [s]
-      constant  30  3; Maximum pitch velocity during initial period of stop [deg/s]
-      constant  31  3.0; Time period of initial pitch stop phase [s] (maintains pitch speed specified in constant 30)
-      constant  32  4; Maximum pitch velocity during final phase of stop [deg/s]
-;     Expert parameters (keep default values unless otherwise given)
-      constant  33   2.0; Lower angle above lowest minimum pitch angle for switch [deg]
-      constant  34   2.0; Upper angle above lowest minimum pitch angle for switch [deg], if equal then hard switch
-      constant  35  95.0; Ratio between filtered speed and reference speed for fully open torque limits [%]
-      constant  36   2.0; Time constant of 1st order filter on wind speed used for minimum pitch [1/1P]
-      constant  37   1.0; Time constant of 1st order filter on pitch angle used for gain scheduling [1/1P]
-;     Drivetrain damper
-      constant  38   0.0; Proportional gain of active DT damper [Nm/(rad/s)], requires frequency in input 10
-;	  Over speed
-	  constant  39  250.0; Overspeed percentage before initiating turbine controller alarm (shut-down) [%]
-;     Additional non-linear pitch control term (not used when all zero)
-	  constant  40   0.0; Err0 [rad/s] 
-	  constant  41   0.0; ErrDot0 [rad/s^2]
-	  constant  42   0.0; PitNonLin1 [rad/s]
-;     Storm control command
-	  constant 43   28.0; Wind speed 'Vstorm' above which derating of rotor speed is used [m/s]
-	  constant 44   28.0; Cut-out wind speed (only used for derating of rotor speed in storm) [m/s]	  
-;     Safety system parameters
-	  constant 45   300.0; Overspeed percentage before initiating safety system alarm (shut-down) [%]
-	  constant 46    1.5; Max low-pass filtered tower top acceleration level [m/s^2] - max in DLC 1.3=1.1 m/s^2
-;     Turbine parameter
-	  constant 47  192.19808; Nominal rotor diameter [m]
-;     Parameters for rotor inertia reduction in variable speed region
-      constant 48    0.0; Proportional gain on rotor acceleration in variable speed region [Nm/(rad/s^2)] (not used when zero)
-;     Parameters for alternative partial load controller with PI regulated TSR tracking
-      constant 49    0.0; Optimal tip speed ratio [-] (only used when K=constant 11 = 0 otherwise  Qg=K*Omega^2 is used)
-;     Parameters for adding aerodynamic drivetrain damping on gain scheduling
-      constant 50    0.0; Proportional gain of aerodynamic DT damping [Nm/(rad/s)]
-      constant 51    0.0; Coefficient of linear term in aerodynamic DT damping scheduling, KK1 [deg]
-      constant 52    0.0; Coefficient of quadratic term in aerodynamic DT damping scheduling, KK2 [deg^2]
-	end init;
-;
-    begin output;
-      general time; [s]     
-      constraint bearing1 shaft_rot 1 only 2; Drivetrain speed [rad/s]
-      constraint bearing2 pitch1 1 only 1; [rad]         
-      constraint bearing2 pitch2 1 only 1; [rad]
-      constraint bearing2 pitch2 1 only 1; [rad]	! Changed from pitch 3 - Keep the line for the output order
-      wind free_wind 1 0.0 0.0 -119; Global coordinates at hub height
-	  dll inpvec 2 2; Elec. power from generator servo .dll
-	  dll inpvec 2 8; Grid state flag from generator servo .dll
-	  mbdy state acc tower 10 1.0 global only 1; Tower top x-acceleration [m/s^2]
-	  mbdy state acc tower 10 1.0 global only 2; Tower top y-acceleration [m/s^2]
-    end output;     
-  end type2_dll;
-;
-   begin type2_dll;
-     name generator_servo;
-     filename  ./control/generator_servo.dll;
-     dll_subroutine_init init_generator_servo;
-     dll_subroutine_update update_generator_servo;
-     arraysizes_init  7 1;
-     arraysizes_update  4 8;
- 	begin init;
-       constant 1  20.0; Frequency of 2nd order servo model of generator-converter system [Hz]   
-       constant 2  0.9; Damping ratio 2nd order servo model of generator-converter system [-]
-       constant 3 15.6E+06; Maximum allowable LSS torque (pull-out torque) [Nm]
-       constant 4 0.94; Generator efficiency [-]
-       constant 5 1.0; Gearratio [-]
-       constant 6 0.0; Time for half value in softstart of torque [s]
-       constant 7 1000; Time for grid loss [s]
-     end init;
-;
-     begin output;
-       general time;   Time [s]    
-       dll inpvec 1 1;   Electrical torque reference [Nm]  
-       constraint bearing1 shaft_rot 1 only 2;   Generator LSS speed [rad/s]   
-       mbdy momentvec shaft 1 1 shaft only 3;   Shaft moment [kNm] (Qshaft)
-     end output;
-;
-     begin actions;    
-        mbdy moment_int shaft 1 -3 shaft towertop 2;   Generator LSS torque [Nm]
-     end actions;
-   end type2_dll;
-;
-   begin type2_dll;
-     name mech_brake;
-     filename  ./control/mech_brake.dll;
-     dll_subroutine_init init_mech_brake;
-     dll_subroutine_update update_mech_brake;
-     arraysizes_init    7 1;
-     arraysizes_update  4 6;
- 	begin init;
-      constant 1 2727252.0; Fully deployed maximum brake torque [Nm]
-      constant 2     100.0; Parameter alpha used in Q = tanh(omega*alpha), typically 1e2/Omega_nom
-      constant 3       0.625; Delay time for before brake starts to deploy [s] - from 5MW*1P_5/1P_10
-      constant 4       0.75; Time for brake to become fully deployed [s]
-     end init;
-;
-     begin output;
-	   general time; Time [s]
-	   constraint bearing1 shaft_rot 1 only 2; Generator LSS speed [rad/s]
-	   dll inpvec 1 25; Command to deploy mechanical disc brake [0,1]
-     end output;
-;
-     begin actions;    
-        mbdy moment_int shaft 1 3 shaft towertop 2;   Generator LSS torque [Nm]
-     end actions;
-   end type2_dll;
-;
-  begin type2_dll;
-    name servo_with_limits;
-    filename  ./control/servo_with_limits.dll;
-    dll_subroutine_init init_servo_with_limits;
-    dll_subroutine_update update_servo_with_limits;
-    arraysizes_init  10 1;
-    arraysizes_update  5 9;
-	begin init;
-      constant 1   3; Number of blades [-]
-      constant 2   1.0; Frequency of 2nd order servo model of pitch system [Hz]
-      constant 3   0.7; Damping ratio 2nd order servo model of pitch system [-]
-      constant 4  10.0; Max. pitch speed [deg/s]
-      constant 5  15.0; Max. pitch acceleration [deg/s^2]
-      constant 6  -5.0; Min. pitch angle [deg] 
-      constant  7 90.0; Max. pitch angle [deg] 	  
-	  constant  8 1000; Time for pitch runaway [s]
-	  constant  9 -1; Time for stuck blade 1 [s]
-	  constant 10 0; Angle of stuck blade 1 [deg]
-	end init;
-    begin output;
-      general time;  Time                         [s]     
-       dll inpvec 1 2;  Pitch1 demand angle          [rad]
-       dll inpvec 1 3;  Pitch2 demand angle          [rad]
-       dll inpvec 1 4;  Pitch3 demand angle          [rad]
-       dll inpvec 1 26;  Flag for emergency pitch stop         [0=off/1=on]
-    end output;           
-;
-    begin actions;    
-      constraint bearing2 angle pitch1; Angle pitch1 bearing    [rad]
-      constraint bearing2 angle pitch2; Angle pitch2 bearing    [rad]
-      general ignore 1;
-    end actions;                      
-  end type2_dll;
-;
-;	--- DLL for tower-blade tip distance --;
-  begin type2_dll;
-    name disttowtip;
-    filename  ./control/towclearsens.dll;
-    dll_subroutine_init initialize;
-    dll_subroutine_update update;
-    arraysizes_init  1 1;
-    arraysizes_update  12 4;
-	begin init;
-	  constant  1  3.79; Tower radius close to downward blade tip [m] 
-	end init;
-    begin output;
-	  mbdy state pos tower    3 0.62 global; [1,2,3]. Tower position: 30.18 m
-	  mbdy state pos blade1  19 1.0 global; [4,5,6]
-	  mbdy state pos blade2  19 1.0 global; [7,8,9]
-	  mbdy state pos blade2  19 1.0 global; [10,11,12]
-    end output;           
-  end type2_dll;
-end dll;
-;
-;---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
-;
-begin output;
-  filename ./res/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004;
-;time 100 700;
-  data_format  hawc_binary;
-  buffer 1;
-;
-  general time;  
-  general constant 1.0;	constant 1.0 - to mesure activity of flap in terms of displacement
-  constraint bearing1 shaft_rot 2; angle and angle velocity 
-  constraint bearing2 pitch1 5;    angle and angle velocity 
-  constraint bearing2 pitch2 5;    angle and angle velocity 
-;  constraint bearing2 pitch3 5;    angle and angle velocity 
-  aero omega;
-  aero torque;
-  aero power;
-  aero thrust;
-  wind free_wind 1 0.0 0.0 -119; local wind at fixed position: coo (1=global,2=non-rotation rotor coo.), pos x, pos y, pos z
-; Moments:
-  mbdy momentvec tower  1 1  tower # tower base;
-  mbdy momentvec tower  10 2 tower # tower yaw bearing;
-  mbdy momentvec shaft  4 1  shaft # main bearing;
-; Displacements and accellerations
-  mbdy state pos tower 10 1.0 global only 1 # Tower top FA displ; 
-  mbdy state pos tower 10 1.0 global only 2 # Tower top SS displ; 
-  mbdy state acc tower 10 1.0 global only 1 # Tower top FA acc; 
-  mbdy state acc tower 10 1.0 global only 2 # Tower top SS acc; 
-;  
-  mbdy state pos blade1  19 1.0 global # gl blade 1 tip pos;
-  mbdy state pos blade2  19 1.0 global # gl blade 2 tip pos;
-;  mbdy state pos blade3  26 1.0 global # gl blade 3 tip pos;
-  mbdy state pos blade1  19 1.0 blade1 # blade 1 tip pos;
-;
-  mbdy state pos tower    3 0.62 global; [1,2,3]. Tower position: 30.18 m  
-; - Monitor Aerodynamics -;
-  aero windspeed 3 1 1 72.5;
-  aero alfa 1 72.5;
-  aero alfa 2 72.5; 
-  aero alfa 3 72.5; 
-  aero cl 1 72.5;
-  aero cl 2 72.5;
-  aero cl 3 72.5;
-  aero cd 1 72.5;
-  aero cd 2 72.5;
-  aero cd 3 72.5;    
-; - Main Controller - 
-; Output to controller
-; dll outvec 1 1 # time;
-; dll outvec 1 2 # slow speed shaft rad/s;
-; dll outvec 1 3 # pitch angle 1;
-; dll outvec 1 4 # pitch angle 2;
-; dll outvec 1 5 # pitch angle 3;
-; dll outvec 1 6 # WSP_x_global;
-; dll outvec 1 7 # WSP_y_global;
-; dll outvec 1 8 # WSP_z_global;
-; dll outvec 1 9 # Elec. pwr;
-; dll outvec 1 10 # Grid flag;
-; Input from controller
-  dll inpvec 1  1 # Generator torque reference            [Nm];
-  dll inpvec 1  2 # Pitch angle reference of blade 1      [rad];
-  dll inpvec 1  3 # Pitch angle reference of blade 2      [rad];
-;  dll inpvec 1  4 # Pitch angle reference of blade 3      [rad];
-; dll inpvec 1  5 # Power reference                       [W];
-; dll inpvec 1  6 # Filtered wind speed                   [m/s];
-; dll inpvec 1  7 # Filtered rotor speed                  [rad/s];
-; dll inpvec 1  8 # Filtered rotor speed error for torque [rad/s];
-; dll inpvec 1  9 # Bandpass filtered rotor speed         [rad/s];
-; dll inpvec 1 10 # Proportional term of torque contr.    [Nm];
-; dll inpvec 1 11 # Integral term of torque controller    [Nm];
-; dll inpvec 1 12 # Minimum limit of torque               [Nm];
-; dll inpvec 1 13 # Maximum limit of torque               [Nm];
-  dll inpvec 1 14 # Torque limit switch based on pitch    [-];
-; dll inpvec 1 15 # Filtered rotor speed error for pitch  [rad/s];
-; dll inpvec 1 16 # Power error for pitch                 [W];
-; dll inpvec 1 17 # Proportional term of pitch controller [rad];
-; dll inpvec 1 18 # Integral term of pitch controller     [rad];
-; dll inpvec 1 19 # Minimum limit of pitch                [rad];
-; dll inpvec 1 20 # Maximum limit of pitch                [rad];
-  dll inpvec 1 21 # Torque reference from DT dammper      [Nm];
-  dll inpvec 1 22 # Status signal                         [-];
-; dll inpvec 1 23 # Total added pitch rate                [rad/s];  
-  dll inpvec 1 24 # Filtered Mean pitch for gain sch      [rad];  
-  dll inpvec 1 25 # Flag for mechnical brake              [0=off/1=on];
-  dll inpvec 1 26 # Flag for emergency pitch stop         [0=off/1=on];
-  dll inpvec 1 27 # LP filtered acceleration level        [m/s^2];
-;; Output to generator model
-; dll outvec 2 1  # time;
-; dll outvec 2 2  # Electrical torque reference [Nm];
-; dll outvec 2 3  # omega LSS;
-; Input from generator model
-   dll inpvec 2 1  # Mgen LSS [Nm];
-   dll inpvec 2 2  # Pelec W;
-   dll inpvec 2 3  # Mframe;
-   dll inpvec 2 4  # Mgen HSS;
-   dll inpvec 2 5  # Generator Pmech kW;
-   dll inpvec 2 6  # Filtered Gen speed;
-   dll inpvec 2 7  # Resulting Eff;
-   dll inpvec 2 8  # Grid flag;
-; Output to mechanical brake
-   dll inpvec 3 1 # Brake torque [Nm];
-;; Input from mechanical brake
-; dll outvec 3 1 # Time [s];
-; dll outvec 3 2 # Generator LSS speed [rad/s];
-; dll outvec 3 3 # Deploy brake;
-;; Output to pitch servo
-; dll outvec 4 1 # time;
-; dll outvec 4 2 # pitchref 1;
-; dll outvec 4 3 # pitchref 2;
-; dll outvec 4 4 # pitchref 3;
-; dll outvec 4 5 # Emerg. stop;
-; Input from pitch servo
-   dll inpvec 4 1 # pitch 1;
-   dll inpvec 4 2 # pitch 2;
-;   dll inpvec 4 3 # pitch 3;
-; Check tower clearence
-   dll inpvec 5 1 # Bltip tow min d [m];
-; - Check on flap control:
-;; - From flap controller: - 
-; dll type2_dll cyclic_flap_controller inpvec 1	# Ref flap signal bl 1 [deg];
-; dll type2_dll cyclic_flap_controller inpvec 2	# Ref flap signal bl 2 [deg];
-; dll type2_dll cyclic_flap_controller inpvec 3	# Ref flap signal bl 3 [deg];
-;; - Mbc values
-; dll type2_dll cyclic_flap_controller inpvec 4	# momvec mbc cos [kNm];
-; dll type2_dll cyclic_flap_controller inpvec 5	# momvec mbc sin [kNm];
-; dll type2_dll cyclic_flap_controller inpvec 6	# momvec mbc filt cos [kNm];
-; dll type2_dll cyclic_flap_controller inpvec 7	# momvec mbc filt sin [kNm];
-; dll type2_dll cyclic_flap_controller inpvec 8	# flap mbc cos [deg];
-; dll type2_dll cyclic_flap_controller inpvec 9	# flap mbc sin [deg];
-;; - Check Gains -;
-; dll type2_dll cyclic_flap_controller inpvec 10	# lead angle [deg];	
-; dll type2_dll cyclic_flap_controller inpvec 11	# scaling on rat pow [-];	
-; dll type2_dll cyclic_flap_controller inpvec 12	# actual kp [deg/kNm];	
-; dll type2_dll cyclic_flap_controller inpvec 13	# actual ki [deg/kNms];	
-; dll type2_dll cyclic_flap_controller inpvec 14	# actual kd [deg s/kNm];	
-;; - Actual deflections -
-;  aero beta 1 1;
-;  aero beta 2 1;
-;  aero beta 3 1;   
-;; - Mbc values
-; dll type2_dll cyclic_flap_controller inpvec 4	# momvec mbc cos [kNm];
-; dll type2_dll cyclic_flap_controller inpvec 5	# momvec mbc sin [kNm];
-; dll type2_dll cyclic_flap_controller inpvec 6	# momvec mbc filt cos [kNm];
-; dll type2_dll cyclic_flap_controller inpvec 7	# momvec mbc filt sin [kNm];
-; dll type2_dll cyclic_flap_controller inpvec 8	# flap mbc cos [deg];
-; dll type2_dll cyclic_flap_controller inpvec 9	# flap mbc sin [deg];
-; sectional blade loads
-mbdy forcevec blade1 1 1 local # blade 1 local e coo;
-mbdy forcevec blade1 2 1 local # blade 1 local e coo;
-mbdy forcevec blade1 3 1 local # blade 1 local e coo;
-mbdy forcevec blade1 4 1 local # blade 1 local e coo;
-mbdy forcevec blade1 5 1 local # blade 1 local e coo;
-mbdy forcevec blade1 6 1 local # blade 1 local e coo;
-mbdy forcevec blade1 7 1 local # blade 1 local e coo;
-mbdy forcevec blade1 8 1 local # blade 1 local e coo;
-mbdy forcevec blade1 9 1 local # blade 1 local e coo;
-mbdy forcevec blade1 10 1 local # blade 1 local e coo;
-mbdy forcevec blade1 11 1 local # blade 1 local e coo;
-mbdy forcevec blade1 12 1 local # blade 1 local e coo;
-mbdy forcevec blade1 13 1 local # blade 1 local e coo;
-mbdy forcevec blade1 14 1 local # blade 1 local e coo;
-mbdy forcevec blade1 15 1 local # blade 1 local e coo;
-mbdy forcevec blade1 16 1 local # blade 1 local e coo;
-mbdy forcevec blade1 17 1 local # blade 1 local e coo;
-mbdy forcevec blade1 18 1 local # blade 1 local e coo;
-mbdy forcevec blade1 19 1 local # blade 1 local e coo;
-mbdy forcevec blade1 19 2 local # blade 1 local e coo;
-mbdy momentvec blade1 1 1 local # blade 1 local e coo;
-mbdy momentvec blade1 2 1 local # blade 1 local e coo;
-mbdy momentvec blade1 3 1 local # blade 1 local e coo;
-mbdy momentvec blade1 4 1 local # blade 1 local e coo;
-mbdy momentvec blade1 5 1 local # blade 1 local e coo;
-mbdy momentvec blade1 6 1 local # blade 1 local e coo;
-mbdy momentvec blade1 7 1 local # blade 1 local e coo;
-mbdy momentvec blade1 8 1 local # blade 1 local e coo;
-mbdy momentvec blade1 9 1 local # blade 1 local e coo;
-mbdy momentvec blade1 10 1 local # blade 1 local e coo;
-mbdy momentvec blade1 11 1 local # blade 1 local e coo;
-mbdy momentvec blade1 12 1 local # blade 1 local e coo;
-mbdy momentvec blade1 13 1 local # blade 1 local e coo;
-mbdy momentvec blade1 14 1 local # blade 1 local e coo;
-mbdy momentvec blade1 15 1 local # blade 1 local e coo;
-mbdy momentvec blade1 16 1 local # blade 1 local e coo;
-mbdy momentvec blade1 17 1 local # blade 1 local e coo;
-mbdy momentvec blade1 18 1 local # blade 1 local e coo;
-mbdy momentvec blade1 19 1 local # blade 1 local e coo;
-mbdy momentvec blade1 19 2 local # blade 1 local e coo;
-mbdy forcevec blade1 1 1 blade1 # blade 1 blade1 e coo;
-mbdy forcevec blade1 2 1 blade1 # blade 1 blade1 e coo;
-mbdy forcevec blade1 3 1 blade1 # blade 1 blade1 e coo;
-mbdy forcevec blade1 4 1 blade1 # blade 1 blade1 e coo;
-mbdy forcevec blade1 5 1 blade1 # blade 1 blade1 e coo;
-mbdy forcevec blade1 6 1 blade1 # blade 1 blade1 e coo;
-mbdy forcevec blade1 7 1 blade1 # blade 1 blade1 e coo;
-mbdy forcevec blade1 8 1 blade1 # blade 1 blade1 e coo;
-mbdy forcevec blade1 9 1 blade1 # blade 1 blade1 e coo;
-mbdy forcevec blade1 10 1 blade1 # blade 1 blade1 e coo;
-mbdy forcevec blade1 11 1 blade1 # blade 1 blade1 e coo;
-mbdy forcevec blade1 12 1 blade1 # blade 1 blade1 e coo;
-mbdy forcevec blade1 13 1 blade1 # blade 1 blade1 e coo;
-mbdy forcevec blade1 14 1 blade1 # blade 1 blade1 e coo;
-mbdy forcevec blade1 15 1 blade1 # blade 1 blade1 e coo;
-mbdy forcevec blade1 16 1 blade1 # blade 1 blade1 e coo;
-mbdy forcevec blade1 17 1 blade1 # blade 1 blade1 e coo;
-mbdy forcevec blade1 18 1 blade1 # blade 1 blade1 e coo;
-mbdy forcevec blade1 19 1 blade1 # blade 1 blade1 e coo;
-mbdy forcevec blade1 19 2 blade1 # blade 1 blade1 e coo;
-mbdy momentvec blade1 1 1 blade1 # blade 1 blade1 e coo;
-mbdy momentvec blade1 2 1 blade1 # blade 1 blade1 e coo;
-mbdy momentvec blade1 3 1 blade1 # blade 1 blade1 e coo;
-mbdy momentvec blade1 4 1 blade1 # blade 1 blade1 e coo;
-mbdy momentvec blade1 5 1 blade1 # blade 1 blade1 e coo;
-mbdy momentvec blade1 6 1 blade1 # blade 1 blade1 e coo;
-mbdy momentvec blade1 7 1 blade1 # blade 1 blade1 e coo;
-mbdy momentvec blade1 8 1 blade1 # blade 1 blade1 e coo;
-mbdy momentvec blade1 9 1 blade1 # blade 1 blade1 e coo;
-mbdy momentvec blade1 10 1 blade1 # blade 1 blade1 e coo;
-mbdy momentvec blade1 11 1 blade1 # blade 1 blade1 e coo;
-mbdy momentvec blade1 12 1 blade1 # blade 1 blade1 e coo;
-mbdy momentvec blade1 13 1 blade1 # blade 1 blade1 e coo;
-mbdy momentvec blade1 14 1 blade1 # blade 1 blade1 e coo;
-mbdy momentvec blade1 15 1 blade1 # blade 1 blade1 e coo;
-mbdy momentvec blade1 16 1 blade1 # blade 1 blade1 e coo;
-mbdy momentvec blade1 17 1 blade1 # blade 1 blade1 e coo;
-mbdy momentvec blade1 18 1 blade1 # blade 1 blade1 e coo;
-mbdy momentvec blade1 19 1 blade1 # blade 1 blade1 e coo;
-mbdy momentvec blade1 19 2 blade1 # blade 1 blade1 e coo;
-end output;
-;
-exit;
\ No newline at end of file
diff --git a/wetb/hawc2/tests/test_htc_file.py b/wetb/hawc2/tests/test_htc_file.py
index ec018d1590524a3850dd7e70d25784e1baebd56e..9c5f5293287fca0e243fb27bd91b5f178ec49190 100644
--- a/wetb/hawc2/tests/test_htc_file.py
+++ b/wetb/hawc2/tests/test_htc_file.py
@@ -7,7 +7,7 @@ import os
 import unittest
 
 from datetime import datetime
-from wetb.hawc2.htc_file import HTCFile
+from wetb.hawc2.htc_file import HTCFile, HTCLine
 
 os.chdir(os.path.relpath(".", __file__))
 
@@ -20,15 +20,17 @@ class Test(unittest.TestCase):
 
     def setUp(self):
         unittest.TestCase.setUp(self)
-        self.testfilepath = "tests/test_files/"
+        self.testfilepath = "tests/test_files/htcfiles/"
 
-    def test_htc_file(self):
-        with open(self.testfilepath + 'test.htc') as fid:
+
+    def check_htc_file(self, f):
+
+        with open(f) as fid:
             orglines = fid.readlines()
 
-        htcfile = HTCFile(self.testfilepath + "test.htc")
+        htcfile = HTCFile(f)
         newlines = str(htcfile).split("\n")
-        #htcfile.save(self.testfilepath + 'tmp.htc')
+        htcfile.save(self.testfilepath + 'tmp.htc')
         #with open(self.testfilepath + 'tmp.htc') as fid:
         #    newlines = fid.readlines()
 
@@ -43,27 +45,41 @@ class Test(unittest.TestCase):
                 print ()
         assert len(orglines) == len(newlines)
 
+    def test_htc_files(self):
+        for f in ['test3.htc']:
+            self.check_htc_file(self.testfilepath + f)
+
+
     def test_htc_file_get(self):
-        htcfile = HTCFile(self.testfilepath + "test.htc")
-        self.assertEqual(htcfile['simulation']['logfile'][0], './logfiles/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004.log')
-        self.assertEqual(htcfile['simulation/logfile'], './logfiles/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004.log')
-        self.assertEqual(htcfile.simulation.logfile, './logfiles/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004.log')
-        self.assertEqual(float(htcfile.simulation.newmark.deltat), 0.02)
-        self.assertEqual(htcfile.simulation.newmark, "deltat\t   0.02;\n")
-        s = """time_stop\t    100;\nsolvertype\t   1"""
+        htcfile = HTCFile(self.testfilepath + "test3.htc")
+        self.assertEqual(htcfile['simulation']['time_stop'][0], 200)
+        self.assertEqual(htcfile['simulation/time_stop'][0], 200)
+        self.assertEqual(htcfile['simulation.time_stop'][0], 200)
+        self.assertEqual(htcfile.simulation.time_stop[0], 200)
+        self.assertEqual(htcfile.dll.type2_dll.name[0], "risoe_controller")
+        self.assertEqual(htcfile.dll.type2_dll__2.name[0], "risoe_controller2")
+        s = """begin simulation;\n  time_stop\t200;"""
         self.assertEqual(str(htcfile.simulation)[:len(s)], s)
 
+    def test_htc_file_get2(self):
+        htcfile = HTCFile(self.testfilepath + "test.htc")
+        self.assertEqual(htcfile['simulation']['logfile'][0], './logfiles/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004.log')
+        self.assertEqual(htcfile['simulation/logfile'][0], './logfiles/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004.log')
+        self.assertEqual(htcfile['simulation.logfile'][0], './logfiles/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004.log')
+        self.assertEqual(htcfile.simulation.logfile[0], './logfiles/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004.log')
+        self.assertEqual(htcfile.simulation.newmark.deltat[0], 0.02)
 
     def test_htc_file_set(self):
         htcfile = HTCFile(self.testfilepath + "test.htc")
-        time_stop = int(htcfile.simulation.time_stop)
+        time_stop = htcfile.simulation.time_stop[0]
         htcfile.simulation.time_stop = time_stop * 2
-        self.assertEqual(int(htcfile.simulation.time_stop), 2 * time_stop)
+        self.assertEqual(htcfile.simulation.time_stop[0], 2 * time_stop)
+        self.assertEqual(htcfile.simulation.time_stop.__class__, HTCLine)
 
     def test_htc_file_set_key(self):
         htcfile = HTCFile(self.testfilepath + "test.htc")
         htcfile.simulation.name = "value"
-        self.assertEqual(htcfile.simulation.name, "value")
+        self.assertEqual(htcfile.simulation.name[0], "value")
 
     def test_htc_file_del_key(self):
         htcfile = HTCFile(self.testfilepath + "test.htc")
@@ -84,20 +100,23 @@ class Test(unittest.TestCase):
     def test_add_section(self):
         htcfile = HTCFile()
         htcfile.wind.add_section('mann')
-        htcfile.wind.mann.create_turb_parameters = ("29.4 1.0 3.9 1004 1.0", "L, alfaeps, gamma, seed, highfrq compensation")
-        self.assertTrue(htcfile.wind.mann.create_turb_parameters.startswith('29.4'))
+        htcfile.wind.mann.add_line("create_turb_parameters", [29.4, 1.0, 3.9, 1004, 1.0], "L, alfaeps, gamma, seed, highfrq compensation")
+        self.assertEqual(htcfile.wind.mann.create_turb_parameters[0], 29.4)
+        self.assertEqual(htcfile.wind.mann.create_turb_parameters[3], 1004)
+        self.assertEqual(htcfile.wind.mann.create_turb_parameters.comments, "L, alfaeps, gamma, seed, highfrq compensation")
 
     def test_add_mann(self):
         htcfile = HTCFile()
         htcfile.add_mann_turbulence(30.1, 1.1, 3.3, 102, False)
-        s = """create_turb_parameters\t30.10 1.100 3.30 102 0;\tL, alfaeps, gamma, seed, highfrq compensation
-filename_u\t./turb/turb_wsp10_s0102u.bin;
-filename_v\t./turb/turb_wsp10_s0102v.bin;
-filename_w\t./turb/turb_wsp10_s0102w.bin;
-box_dim_u\t4096 1.4652;
-box_dim_v\t32 3.2258;
-box_dim_w\t32 3.2258;
-std_scaling\t1.000000 0.800000 0.500000;"""
+        s = """begin mann;
+  create_turb_parameters\t30.1 1.1 3.3 102 0;\tL, alfaeps, gamma, seed, highfrq compensation
+  filename_u\t./turb/turb_wsp10_s0102u.bin;
+  filename_v\t./turb/turb_wsp10_s0102v.bin;
+  filename_w\t./turb/turb_wsp10_s0102w.bin;
+  box_dim_u\t4096 1.4652;
+  box_dim_v\t32 3.2258;
+  box_dim_w\t32 3.2258;
+  std_scaling\t1.000000 0.800000 0.500000;"""
         for a, b in zip(s.split("\n"), str(htcfile.wind.mann).split("\n")):
             self.assertEqual(a, b)
 
@@ -105,14 +124,72 @@ std_scaling\t1.000000 0.800000 0.500000;"""
     def test_sensors(self):
         htcfile = HTCFile()
         htcfile.set_name("test")
-        htcfile.add_sensor('wind free_wind 1 0 0 -30')
-        s = """filename\t./res/test;
-general time;
-wind free_wind 1 0 0 -30;"""
+        htcfile.output.add_sensor('wind', 'free_wind', [1, 0, 0, -30])
+        s = """begin output;
+  filename\t./res/test;
+  general time;
+  wind free_wind\t1 0 0 -30;"""
         for a, b in zip(s.split("\n"), str(htcfile.output).split("\n")):
             self.assertEqual(a, b)
         #print (htcfile)
 
+
+    def test_output_at_time(self):
+        htcfile = HTCFile(self.testfilepath + "test2.htc")
+        self.assertTrue('begin output_at_time aero 15.0;' in str(htcfile))
+
+
+    def test_output_files(self):
+        htcfile = HTCFile(self.testfilepath + "test.htc")
+        output_files = htcfile.output_files()
+        #print (htcfile.output)
+        for f in ['./logfiles/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004.log',
+                  './visualization/dlc12_wsp10_wdir000_s1004.hdf5',
+                  './animation/structure_aero_control_turb.dat',
+                  './res_eigen/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004/dlc12_wsp10_wdir000_s1004_beam.dat',
+                  './res_eigen/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004/dlc12_wsp10_wdir000_s1004_body.dat',
+                  './res_eigen/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004/dlc12_wsp10_wdir000_s1004_struct.dat',
+                  './res_eigen/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004/dlc12_wsp10_wdir000_s1004_body_eigen.dat',
+                  './res_eigen/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004/dlc12_wsp10_wdir000_s1004_strc_eigen.dat',
+                  './res/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004.sel',
+                  './res/dlc12_iec61400-1ed3/dlc12_wsp10_wdir000_s1004.dat',
+                  './res/rotor_check_inipos',
+                  './res/rotor_check_inipos2']:
+            try:
+                output_files.remove(f)
+            except ValueError:
+                raise ValueError(f + " is not in list")
+        self.assertFalse(output_files)
+
+    def test_turbulence_files(self):
+        htcfile = HTCFile(self.testfilepath + "dlc14_wsp10_wdir000_s0000.htc")
+        self.assertEqual(htcfile.turbulence_files(), ['./turb/turb_wsp10_s0000u.bin', './turb/turb_wsp10_s0000v.bin', './turb/turb_wsp10_s0000w.bin'])
+
+    def test_input_files(self):
+        htcfile = HTCFile(self.testfilepath + "test.htc")
+        input_files = htcfile.input_files()
+        #print (htcfile.output)
+        for f in ['./data/DTU_10MW_RWT_Tower_st.dat',
+                  './data/DTU_10MW_RWT_Towertop_st.dat',
+                  './data/DTU_10MW_RWT_Shaft_st.dat',
+                  './data/DTU_10MW_RWT_Hub_st.dat',
+                  'data/2Bdown-rR1.08_blade_st.dat',
+                  './data/2Bdown-rR1.08_ae.dat',
+                  './data/2Bup_AEP095_pc.dat',
+                  './control/risoe_controller.dll',
+                  './control/generator_servo.dll',
+                  './control/mech_brake.dll',
+                  './control/servo_with_limits.dll',
+                  './control/towclearsens.dll',
+                  'tests/test_files/htcfiles/test.htc'
+                  ]:
+            try:
+                input_files.remove(f)
+            except ValueError:
+                raise ValueError(f + " is not in list")
+        self.assertFalse(input_files)
+
+
 if __name__ == "__main__":
     #import sys;sys.argv = ['', 'Test.testName']
     unittest.main()