diff --git a/src/__main__.py b/src/__main__.py
index 729f2061f64ab1496b079195f458624745244f4c..9c51d4af510bfa985562cf2f70d58cd2db659bfd 100644
--- a/src/__main__.py
+++ b/src/__main__.py
@@ -3,19 +3,19 @@
 #
 # Copyright (c) 2011 Pawel Szostek (pawel.szostek@cern.ch)
 #
-#    This source code is free software you can redistribute it
+#    This source code is free software; you can redistribute it
 #    and/or modify it in source code form under the terms of the GNU
 #    General Public License as published by the Free Software
-#    Foundation either version 2 of the License, or (at your option)
+#    Foundation; either version 2 of the License, or (at your option)
 #    any later version.
 #
 #    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY without even the implied warranty of
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 #    GNU General Public License for more details.
 #
 #    You should have received a copy of the GNU General Public License
-#    along with this program if not, write to the Free Software
+#    along with this program; if not, write to the Free Software
 #    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 #
 # Modified to allow ISim simulation by Lucas Russo (lucas.russo@lnls.br)
@@ -68,7 +68,7 @@ def main():
     default=None, help="List all files in a from of a space-separated string")
 
     parser.add_option("--merge-cores=name", default=None, dest="merge_cores",
-        help="Merges entire synthesizable content of an project into a pair of VHDL/Verilog files")
+		help="Merges entire synthesizable content of an project into a pair of VHDL/Verilog files")
 
     parser.add_option("--ise-proj", action="store_true", dest="ise_proj",
     default=None, help="create/update an ise project including list of project"
@@ -110,28 +110,27 @@ def main():
     global_mod.options = options
 
     #HANDLE PROJECT INDEPENDENT OPTIONS
-    if options.manifest_help is True:
+    if options.manifest_help == True:
         from manifest_parser import ManifestParser
         ManifestParser().help()
         quit()
 
-    if options.print_version is True:
+    if options.print_version == True:
         p.print_version()
         quit()
   # Check later if a simulation tool should have been specified
-    if options.make_isim is True:
+    if options.make_isim == True:
         global_mod.sim_tool = "isim"
-    elif options.make_vsim is True:
+    elif options.make_vsim == True:
         global_mod.sim_tool = "vsim"
     p.info("Simulation tool: " + str(global_mod.sim_tool))
 
     p.vprint("LoadTopManifest")
 
-    pool = ModulePool()
     pool.new_module(parent=None, url=os.getcwd(), source="local", fetchto=".")
 
     # Setting top_module as top module of design (ModulePool class)
-    if pool.get_top_module().manifest is None:
+    if pool.get_top_module().manifest == None:
         p.rawprint("No manifest found. At least an empty one is needed")
         p.rawprint("To see some help, type hdlmake --help")
         quit()
diff --git a/src/configparser.py b/src/configparser.py
index c2cddb7ef9e44e24428cde9a26b102a28b0288a3..085e987282c17b820c8d2f92d374f7b1b1931ffe 100644
--- a/src/configparser.py
+++ b/src/configparser.py
@@ -2,19 +2,19 @@
 #
 # Copyright (c) 2011 Pawel Szostek (pawel.szostek@cern.ch)
 #
-#    This source code is free software you can redistribute it
+#    This source code is free software; you can redistribute it
 #    and/or modify it in source code form under the terms of the GNU
 #    General Public License as published by the Free Software
-#    Foundation either version 2 of the License, or (at your option)
+#    Foundation; either version 2 of the License, or (at your option)
 #    any later version.
 #
 #    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY without even the implied warranty of
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 #    GNU General Public License for more details.
 #
 #    You should have received a copy of the GNU General Public License
-#    along with this program if not, write to the Free Software
+#    along with this program; if not, write to the Free Software
 #    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 #
 
@@ -23,7 +23,6 @@ import sys
 import StringIO
 import contextlib
 
-
 @contextlib.contextmanager
 def stdoutIO(stdout=None):
     old = sys.stdout
@@ -33,13 +32,12 @@ def stdoutIO(stdout=None):
     yield stdout
     sys.stdout = old
 
-
 class ConfigParser(object):
     """Class for parsing python configuration files
 
     Case1: Normal usage
     >>> f = open("test.py", "w")
-    >>> f.write('modules = {"local":"/path/to/local", "svn":"path/to/svn"} ')
+    >>> f.write('modules = {"local":"/path/to/local", "svn":"path/to/svn"}; ')
     >>> f.write('fetchto = ".."' )
     >>> f.close()
     >>> p = ConfigParser()
@@ -145,15 +143,16 @@ class ConfigParser(object):
                 elif key == "default":
                     self.default = others["default"]
                 elif key == "type":
-                    self.add_type(type_obj=others["type"])
+                    self.add_type(type_obj=others["type"]) 
                 else:
                     raise ValueError("Option not recognized: " + key)
 
         def add_type(self, type_obj):
             self.types.append(type(type_obj))
 
-    def __init__(self, description=None):
-        if description is None:
+
+    def __init__(self, description = None):
+        if description != None:
             if not isinstance(description, str):
                 raise ValueError("Description should be a string!")
         self.description = description
@@ -169,25 +168,25 @@ class ConfigParser(object):
 
     def __getitem__(self, name):
         if name in self.__names():
-            return [x for x in self.options if x is None and x.name == name][0]
+            return [x for x in self.options if x!= None and x.name == name][0]
         else:
             raise RuntimeError("No such option as " + str(name))
 
     def help(self):
         p.rawprint("Variables available in a manifest:")
         for opt in self.options:
-            if opt is None:
+            if opt == None:
                 p.rawprint("")
                 continue
 
-            line = '  {0:15} {1:29} {2:45}{3}{4:10}'
+            line = '  {0:15}; {1:29}; {2:45}{3}{4:10}'
             try:
                 tmp_def = opt.default
                 if tmp_def == "":
                     tmp_def = '""'
-                line = line.format(opt.name, str(opt.types), opt.help, ', default=', tmp_def)
-            except AttributeError:  # no default value
-                line = line.format(opt.name, str(opt.types), opt.help, "", "")
+                line = line.format(opt.name, str(opt.types), opt.help,', default=', tmp_def)
+            except AttributeError: #no default value
+                line = line.format(opt.name, str(opt.types), opt.help, "","")
             p.rawprint(line)
 
     def add_option(self, name, **others):
@@ -218,7 +217,7 @@ class ConfigParser(object):
     def add_config_file(self, config_file):
         if self.config_file is not None:
             raise RuntimeError("Config file should be added only once")
-
+        
         import os
         if not os.path.exists(config_file):
             raise RuntimeError("Config file doesn't exists: " + config_file)
@@ -229,16 +228,16 @@ class ConfigParser(object):
         self.arbitrary_code += code + '\n'
 
     def __names(self):
-        return [o.name for o in self.options if o is None]
+        return [o.name for o in self.options if o != None]
 
     def parse(self):
         options = {}
         ret = {}
 
-        if self.config_file is not None:
-            with open(self.config_file, "r") as config_file:
-                content = config_file.readlines()
-                content = ''.join(content)
+        if self.config_file is not None: 
+	    with open(self.config_file, "r") as config_file:
+	        content = open(self.config_file, "r").readlines()
+            content = ''.join(content)
         else:
             content = ''
         content = self.arbitrary_code + '\n' + content
@@ -275,14 +274,14 @@ class ConfigParser(object):
                     p.rawprint("> " + line)
             #print "out:", s.getvalue()
         except SyntaxError as e:
-            p.error("Invalid syntax in the manifest file " + self.config_file + ":\n" + str(e))
+            p.error("Invalid syntax in the manifest file " + self.config_file+ ":\n" + str(e))
             quit()
         except:
             p.error("Encountered unexpected error while parsing " + self.config_file)
-            p.rawprint(str(sys.exc_info()[0]) + ':' + str(sys.exc_info()[1]))
+            p.rawprint(str(sys.exc_info()[0]) +':'+ str(sys.exc_info()[1]))
             quit()
 
-        for opt_name, val in list(options.items()):  # check delivered options
+        for opt_name, val in list(options.items()): #check delivered options
             if opt_name.startswith('__'):
                 continue
             if opt_name not in self.__names():
@@ -301,15 +300,15 @@ class ConfigParser(object):
                 try:
                     for key in val:
                         if key not in self[opt_name].allowed_keys:
-                            raise RuntimeError("Encountered unallowed key: " + key + " for options '" + opt_name + "'")
-                except AttributeError:  # no allowed_keys member - don't perform any check
+                            raise RuntimeError("Encountered unallowed key: " +key+ " for options '"+opt_name+"'")
+                except AttributeError: #no allowed_keys member - don't perform any check
                     pass
 
-        for opt in self.options:  # set values for not listed items with defaults
+        for opt in self.options: #set values for not listed items with defaults
             try:
                 if opt.name not in ret:
                     ret[opt.name] = opt.default
-            except AttributeError:  # no default value in the option
+            except AttributeError: #no default value in the option
                 pass
         return ret
 
@@ -319,4 +318,4 @@ def _test():
     doctest.testmod()
 
 if __name__ == "__main__":
-    _test()
+    _test()
\ No newline at end of file
diff --git a/src/connection.py b/src/connection.py
index a4b9af6794e7367a0b0b0c049c787cfaf1ead929..a6a9dd32ad007cb45a68b78fc9e476293f8b9d64 100644
--- a/src/connection.py
+++ b/src/connection.py
@@ -2,19 +2,19 @@
 #
 # Copyright (c) 2011 Pawel Szostek (pawel.szostek@cern.ch)
 #
-#    This source code is free software you can redistribute it
+#    This source code is free software; you can redistribute it
 #    and/or modify it in source code form under the terms of the GNU
 #    General Public License as published by the Free Software
-#    Foundation either version 2 of the License, or (at your option)
+#    Foundation; either version 2 of the License, or (at your option)
 #    any later version.
 #
 #    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY without even the implied warranty of
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 #    GNU General Public License for more details.
 #
 #    You should have received a copy of the GNU General Public License
-#    along with this program if not, write to the Free Software
+#    along with this program; if not, write to the Free Software
 #    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 #
 
@@ -25,11 +25,11 @@ import msg as p
 
 class Connection:
     def __init__(self, ssh_user, ssh_server):
-        #if ssh_user is None:
+        #if ssh_user == None:
         #    ssh_user = os.getenv("HDLMAKE_USER")
         self.ssh_user = ssh_user
 
-        #if ssh_server is None:
+        #if ssh_server == None:
         #    ssh_server = os.getenv("HDLMAKE_SERVER")
         self.ssh_server = ssh_server
 
@@ -37,7 +37,7 @@ class Connection:
         return self.ssh_user + '@' + self.ssh_server
 
     def __data_given(self):
-        return self.ssh_user is None and self.ssh_server is None
+        return self.ssh_user != None and self.ssh_server != None
 
     def __check(self):
         if not self.__data_given():
@@ -57,7 +57,7 @@ class Connection:
         """
         self.__check()
         #create a new catalogue on remote machine
-        if dest_folder is None:
+        if dest_folder == None:
             dest_folder = ''.join(random.choice(string.ascii_letters + string.digits) for x in range(8)) 
         mkdir_cmd = 'mkdir -p ' + dest_folder 
         import msg as p
diff --git a/src/dep_solver.py b/src/dep_solver.py
index 26674dde52a3a09621fac871bf8fbd7196e9e788..fd5677e5306b64571b65c475d6f4a74067bad614 100644
--- a/src/dep_solver.py
+++ b/src/dep_solver.py
@@ -2,19 +2,19 @@
 #
 # Copyright (c) 2011 Pawel Szostek (pawel.szostek@cern.ch)
 #
-#    This source code is free software you can redistribute it
+#    This source code is free software; you can redistribute it
 #    and/or modify it in source code form under the terms of the GNU
 #    General Public License as published by the Free Software
-#    Foundation either version 2 of the License, or (at your option)
+#    Foundation; either version 2 of the License, or (at your option)
 #    any later version.
 #
 #    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY without even the implied warranty of
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 #    GNU General Public License for more details.
 #
 #    You should have received a copy of the GNU General Public License
-#    along with this program if not, write to the Free Software
+#    along with this program; if not, write to the Free Software
 #    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 #
 # Modified to allow ISim simulation by Lucas Russo (lucas.russo@lnls.br)
@@ -25,16 +25,16 @@ import os.path
 
 class IDependable:
     def __init__(self):
-        self.dep_index = 0
-        self._dep_fixed = False
-        self.__dep_provides = []
-        self.__dep_requires = []
-        self.__dep_depends_on = []
+        self.dep_index = 0;
+        self._dep_fixed = False;
+        self.__dep_provides = [];
+        self.__dep_requires = [];
+        self.__dep_depends_on = [];
         pass
 
     #use proxy template here
     def get_dep_provides(self):
-        if self._dep_fixed is False:
+        if self._dep_fixed == False:
             self.__create_deps()
 #        self._dep_fixed = True
         return self.__dep_provides
@@ -44,7 +44,7 @@ class IDependable:
     dep_provides = property(get_dep_provides, set_dep_provides)
 
     def get_dep_requires(self):
-        if self._dep_fixed is False:
+        if self._dep_fixed == False:
             self.__create_deps()
  #       self._dep_fixed = True
         return self.__dep_requires
@@ -66,7 +66,7 @@ class IDependable:
 
 class DependencySolver:
     def __init__(self):
-        self.entities = {}
+        self.entities = {};
 
     def __lookup_post_provider(self, files, start_index, file):
         requires = file.dep_requires
@@ -235,8 +235,8 @@ class DependencySolver:
 
 
 
-        newobj = sf.SourceFileSet()
-        newobj.add(f_nondep)
+        newobj = sf.SourceFileSet();
+        newobj.add(f_nondep);
         for f in fset:
             try:
                 if not f._dep_fixed:
diff --git a/src/fetch.py b/src/fetch.py
index 698519f015fe92b12fd9101eb7bfc49788e53373..9f7d6c4eed4edcf7fc5e1658fb1de2110fea4018 100644
--- a/src/fetch.py
+++ b/src/fetch.py
@@ -3,19 +3,19 @@
 #
 # Copyright (c) 2011 Pawel Szostek (pawel.szostek@cern.ch)
 #
-#    This source code is free software you can redistribute it
+#    This source code is free software; you can redistribute it
 #    and/or modify it in source code form under the terms of the GNU
 #    General Public License as published by the Free Software
-#    Foundation either version 2 of the License, or (at your option)
+#    Foundation; either version 2 of the License, or (at your option)
 #    any later version.
 #
 #    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY without even the implied warranty of
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 #    GNU General Public License for more details.
 #
 #    You should have received a copy of the GNU General Public License
-#    along with this program if not, write to the Free Software
+#    along with this program; if not, write to the Free Software
 #    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 #
 
@@ -24,13 +24,12 @@ import msg as p
 import path
 import global_mod
 
-
 class ModulePool(list):
     class ModuleFetcher:
         def __init__(self):
             pass
-
         def fetch_single_module(self, module):
+            import global_mod
             new_modules = []
             p.vprint("Fetching module: " + str(module))
 
@@ -38,8 +37,8 @@ class ModulePool(list):
                 p.vprint("ModPath: " + module.path)
             else:
                 p.printhr()
-                p.info("Fetching module: " + str(module) +
-                       " [parent: " + str(module.parent) + "]")
+                p.info("Fetching module: " + str(module) +\
+                    " [parent: " + str(module.parent) + "]")
                 if module.source == "svn":
                     p.info("[svn] Fetching to " + module.fetchto)
                     self.__fetch_from_svn(module)
@@ -83,14 +82,14 @@ class ModulePool(list):
                 os.mkdir(module.fetchto)
 
             cur_dir = os.getcwd()
-            if module.branch is None:
+            if module.branch == None:
                 module.branch = "master"
 
             basename = path.url_basename(module.url)
             mod_path = os.path.join(module.fetchto, basename)
 
             if basename.endswith(".git"):
-                basename = basename[:-4]  # remove trailing .git
+                basename = basename[:-4] #remove trailing .git
 
             if module.isfetched:
                 update_only = True
@@ -122,6 +121,7 @@ class ModulePool(list):
             module.path = mod_path
             return rval
 
+
     def __init__(self, *args):
         list.__init__(self, *args)
         self.top_module = None
@@ -145,7 +145,7 @@ class ModulePool(list):
             return [m for m in self if m.url == url][0]
         else:
             if self.global_fetch:            # if there is global fetch parameter (HDLMAKE_COREDIR env variable)
-                fetchto = self.global_fetch  # screw module's particular fetchto
+                fetchto  = self.global_fetch # screw module's particular fetchto
             elif global_mod.top_module:
                 fetchto = global_mod.top_module.fetchto
 
@@ -169,7 +169,7 @@ class ModulePool(list):
         self.append(new_module)
         return True
 
-    def fetch_all(self, unfetched_only=False):
+    def fetch_all(self, unfetched_only = False):
         fetcher = self.ModuleFetcher()
         fetch_queue = [m for m in self]
 
@@ -185,11 +185,11 @@ class ModulePool(list):
                 new_modules = fetcher.fetch_single_module(cur_mod)
             for mod in new_modules:
                 if not mod.isfetched:
-                    p.vprint("Appended to fetch queue: " + str(mod.url))
+                    p.vprint("Appended to fetch queue: " +str(mod.url))
                     self._add(mod)
                     fetch_queue.append(mod)
                 else:
-                    p.vprint("NOT appended to fetch queue: " + str(mod.url))
+                    p.vprint("NOT appended to fetch queue: " +str(mod.url))
 
     def build_global_file_list(self):
         from srcfile import SourceFileSet
diff --git a/src/flow.py b/src/flow.py
index 3139fe0a07f82ae4cecbdfaef18c65cf9592e807..d5a22c2342c0ea20bd2347631c5f841b192eb43f 100644
--- a/src/flow.py
+++ b/src/flow.py
@@ -60,7 +60,7 @@ class ISEProject:
     class StringBuffer(list):
         def __init__(self):
             self.append("")
-            self.__blank = re.compile("^[     \n]+$")
+            self.__blank = re.compile("^[ \t\n]+$")
 
         def write(self, what):
             if what == "":
@@ -255,7 +255,7 @@ class ISEProject:
         self.__output_libs(self.xml_libs)
         output_file = open(filename, "w")
         string_buffer = self.StringBuffer()
-        self.xml_doc.writexml(string_buffer, newl = "\n", addindent="    ")
+        self.xml_doc.writexml(string_buffer, newl = "\n", addindent="\t")
         output_file.write('\n'.join(string_buffer))
         output_file.close()
 
@@ -292,7 +292,7 @@ class ISEProject:
 class ModelsiminiReader(object):
 
     def __init__(self, path = None):
-        if path is None:
+        if path == None:
             path = self.modelsim_ini_dir() + "/modelsim.ini"
         self.path = path
 
@@ -316,7 +316,7 @@ class ModelsiminiReader(object):
                 reading_libraries = True
                 continue
             if re.search(new_section, line):
-                if reading_libraries is True:
+                if reading_libraries == True:
                 #reading_libraries = False
                     break
                 else:
@@ -336,7 +336,7 @@ class ModelsiminiReader(object):
 
 class XilinxsiminiReader(object):
     def __init__(self, path = None):
-        if path is None:
+        if path == None:
             path = self.xilinxsim_ini_dir() + "/xilinxsim.ini"
         self.path = path
 
diff --git a/src/flow_altera.py b/src/flow_altera.py
index 6509750448886d055f0d3d7ce17467e6a6e48402..08603026abbcabb3175ad725e181d0068bf4c274 100644
--- a/src/flow_altera.py
+++ b/src/flow_altera.py
@@ -3,19 +3,19 @@
 #
 # Copyright (c) 2011 Pawel Szostek (pawel.szostek@cern.ch)
 #
-#    This source code is free software you can redistribute it
+#    This source code is free software; you can redistribute it
 #    and/or modify it in source code form under the terms of the GNU
 #    General Public License as published by the Free Software
-#    Foundation either version 2 of the License, or (at your option)
+#    Foundation; either version 2 of the License, or (at your option)
 #    any later version.
 #
 #    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY without even the implied warranty of
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 #    GNU General Public License for more details.
 #
 #    You should have received a copy of the GNU General Public License
-#    along with this program if not, write to the Free Software
+#    along with this program; if not, write to the Free Software
 #    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 #
 
@@ -28,34 +28,34 @@ class _QuartusProjectProperty:
     "set_global_assignment": SET_GLOBAL_ASSIGNMENT}
 
     def __init__(self, command, what=None, name=None, name_type=None, from_=None, to=None, section_id=None):
-    self.command = command
-    self.what = what
-    self.name = name
-    self.name_type = name_type
-    self.from_ = from_
-    self.to = to
-    self.section_id = section_id
+	self.command = command
+	self.what = what
+	self.name = name
+	self.name_type = name_type
+	self.from_ = from_
+	self.to = to
+	self.section_id = section_id
 
     def emit(self):
-    words = []
-    words.append(dict([(b,a) for a,b in self.t.items()])[self.command])
-
-    if self.what is None:
-        words.append(self.what)
-    if self.name is None:
-        words.append("-name")
-        words.append(self.name_type)
-        words.append(self.name)
-    if self.from_ is None:
-        words.append("-from")
-        words.append(self.from_)
-    if self.to is None:
-        words.append("-to")
-        words.append(self.to)
-    if self.section_id is None:
-        words.append("-section_id")
-        words.append(self.section_id)
-    return ' '.join(words)
+	words = []
+	words.append(dict([(b,a) for a,b in self.t.items()])[self.command])
+
+	if self.what != None:
+	    words.append(self.what)
+	if self.name != None:
+	    words.append("-name")
+	    words.append(self.name_type)
+	    words.append(self.name)
+	if self.from_ != None:
+	    words.append("-from")
+	    words.append(self.from_)
+	if self.to != None:
+	    words.append("-to")
+	    words.append(self.to)
+	if self.section_id != None:
+	    words.append("-section_id")
+	    words.append(self.section_id)
+	return ' '.join(words)
 
 
 class QuartusProject:
@@ -73,7 +73,7 @@ class QuartusProject:
         f.write(self.__emit_files())
         f.write(self.__emit_scripts())
         f.close()
-        f = open(self.filename+'.qpf', "w")
+        f = open(self.filename+'.qpf', "w");
         f.write("PROJECT_REVISION = \"" + self.filename + "\"\n")
         f.close()
 
@@ -110,7 +110,7 @@ class QuartusProject:
  
     def add_property(self, val):
         #don't save files (they are unneeded)
-        if val.name_type is None and "_FILE" in val.name_type:
+        if val.name_type != None and "_FILE" in val.name_type:
             return
         self.properties.append(val)
 
@@ -166,7 +166,7 @@ class QuartusProject:
                     i = i+1
                     continue
             prop = QPP(command=command, what=what, name=name,
-          name_type=name_type, from_=from_, to=to, section_id=section_id)
+	      name_type=name_type, from_=from_, to=to, section_id=section_id)
 
             self.add_property(prop)
         f.close()
@@ -180,7 +180,7 @@ class QuartusProject:
 
         for key in family_names:
             if re.match(key, syn_device.upper()):
-                family = family_names[key]
+                family = family_names[key];
                 
         devstring = (syn_device +syn_package+syn_grade).upper()
         QPP =_QuartusProjectProperty
diff --git a/src/global_mod.py b/src/global_mod.py
index 76e2efb0aae6869ffa15bdb7426ab231c93c0adf..9333691b25a86709879f02fd45f8f35db0a849e4 100644
--- a/src/global_mod.py
+++ b/src/global_mod.py
@@ -3,19 +3,19 @@
 #
 # Copyright (c) 2011 Pawel Szostek (pawel.szostek@cern.ch)
 #
-#    This source code is free software you can redistribute it
+#    This source code is free software; you can redistribute it
 #    and/or modify it in source code form under the terms of the GNU
 #    General Public License as published by the Free Software
-#    Foundation either version 2 of the License, or (at your option)
+#    Foundation; either version 2 of the License, or (at your option)
 #    any later version.
 #
 #    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY without even the implied warranty of
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 #    GNU General Public License for more details.
 #
 #    You should have received a copy of the GNU General Public License
-#    along with this program if not, write to the Free Software
+#    along with this program; if not, write to the Free Software
 #    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 #
 # Modified to allow ISim simulation by Lucas Russo (lucas.russo@lnls.br)
diff --git a/src/hdlmake_kernel.py b/src/hdlmake_kernel.py
index 7dd5fecbf2196f6f3ec6399bcf7f6ebeeebcfaf3..2349b432adc0b771bdfc0c141052d9ef93fa9696 100644
--- a/src/hdlmake_kernel.py
+++ b/src/hdlmake_kernel.py
@@ -3,19 +3,19 @@
 #
 # Copyright (c) 2011 Pawel Szostek (pawel.szostek@cern.ch)
 #
-#    This source code is free software you can redistribute it
+#    This source code is free software; you can redistribute it
 #    and/or modify it in source code form under the terms of the GNU
 #    General Public License as published by the Free Software
-#    Foundation either version 2 of the License, or (at your option)
+#    Foundation; either version 2 of the License, or (at your option)
 #    any later version.
 #
 #    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY without even the implied warranty of
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 #    GNU General Public License for more details.
 #
 #    You should have received a copy of the GNU General Public License
-#    along with this program if not, write to the Free Software
+#    along with this program; if not, write to the Free Software
 #    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 #
 # Modified to allow ISim simulation by Lucas Russo (lucas.russo@lnls.br)
@@ -59,16 +59,16 @@ class HdlmakeKernel(object):
                 raise RuntimeError("Unrecognized or not specified simulation tool: "+ str(tm.use_compiler))
                 quit()
             # Force declaration of sim_tool varible in Manifest
-            #if tm.sim_tool is None:
-            #    p.error("sim_tool variable must be defined in the manifest")
-            #    quit()
+            #if tm.sim_tool == None:
+            #	p.error("sim_tool variable must be defined in the manifest")
+            #	quit()
             ## Make distintion between isim and vsim simulators
             #if tm.sim_tool == "vsim":
-            #           self.generate_modelsim_makefile()
+            #       	self.generate_modelsim_makefile()
             #elif tm.sim_tool == "isim":
-            #    self.generate_isim_makefile()
+            #	self.generate_isim_makefile()
             #else:
-            #    raise RuntimeError("Unrecognized sim tool: "+tm.sim_tool)
+            #	raise RuntimeError("Unrecognized sim tool: "+tm.sim_tool)
         elif tm.action == "synthesis":
             if tm.syn_project is None:
                 p.error("syn_project variable must be defined in the manifest")
@@ -127,8 +127,8 @@ class HdlmakeKernel(object):
           p.echo(str([str(m) for m in self.modules_pool.modules if not m.isfetched]))
           quit()
         top_module = pool.get_top_module()
-        flist = pool.build_global_file_list()
-        flist_sorted = solver.solve(flist)
+        flist = pool.build_global_file_list();
+        flist_sorted = solver.solve(flist);
         #self.make_writer.generate_modelsim_makefile(flist_sorted, top_module)
         self.make_writer.generate_vsim_makefile(flist_sorted, top_module)
 
@@ -144,8 +144,8 @@ class HdlmakeKernel(object):
             p.echo(str([str(m) for m in self.modules_pool.modules if not m.isfetched]))
             quit()
         top_module = pool.get_top_module()
-        flist = pool.build_global_file_list()
-        flist_sorted = solver.solve(flist)
+        flist = pool.build_global_file_list();
+        flist_sorted = solver.solve(flist);
         self.make_writer.generate_isim_makefile(flist_sorted, top_module)
 
     def generate_iverilog_makefile(self):
@@ -173,7 +173,7 @@ class HdlmakeKernel(object):
         self.make_writer.generate_ise_makefile(top_mod=self.modules_pool.get_top_module(), ise_path=ise_path)
 
     def generate_remote_synthesis_makefile(self):
-        if self.connection.ssh_user is None or self.connection.ssh_server is None:
+        if self.connection.ssh_user == None or self.connection.ssh_server == None:
             p.warning("Connection data is not given. "
                 "Accessing environmental variables in the makefile")
         p.info("Generating makefile for remote synthesis.")
@@ -186,7 +186,7 @@ class HdlmakeKernel(object):
         ise_path = self.__figure_out_ise_path()
         tcl = self.__search_tcl_file()
 
-        if tcl is None:
+        if tcl == None:
             self.__generate_tcl()
             tcl = "run.tcl"
         files = self.modules_pool.build_very_global_file_list()
@@ -229,7 +229,7 @@ class HdlmakeKernel(object):
             self.__create_new_quartus_project()
 
     def __figure_out_ise_path(self):
-        if self.options.force_ise is None:
+        if self.options.force_ise != None:
             if self.options.force_ise == 0:
                 ise = self.__check_ise_version()
             else:
@@ -247,7 +247,7 @@ class HdlmakeKernel(object):
         return ise_path
 
     def __is_xilinx_screwed(self):
-        if self.__check_ise_version() is None:
+        if self.__check_ise_version() == None:
             return True
         else:
             return False
@@ -387,7 +387,7 @@ class HdlmakeKernel(object):
 
         files = self.modules_pool.build_very_global_file_list()
 #        tcl = self.__search_tcl_file()
-#        if tcl is None:
+#        if tcl == None:
         self.__generate_tcl()
         tcl = "run.tcl"
 
@@ -411,7 +411,7 @@ class HdlmakeKernel(object):
         os.chdir(cur_dir)
 
     def __search_tcl_file(self, directory = None):
-        if directory is None:
+        if directory == None:
             directory = "."
         filenames = os.listdir(directory)
         tcls = []
@@ -438,7 +438,7 @@ class HdlmakeKernel(object):
         remove_list.reverse() #we will remove modules in backward order
         if len(remove_list):
             for m in remove_list:
-                p.rawprint("    " + m.url + " [from: " + m.path + "]")
+                p.rawprint("\t" + m.url + " [from: " + m.path + "]")
                 m.remove_dir_from_disk()
         else:
             p.info("There are no modules to be removed")
@@ -469,23 +469,23 @@ class HdlmakeKernel(object):
             p.echo(str([str(m) for m in self.modules_pool.modules if not m.isfetched]))
             quit()
 
-        flist = pool.build_global_file_list()
-        flist_sorted = solver.solve(flist)
+        flist = pool.build_global_file_list();
+        flist_sorted = solver.solve(flist);
 #        if not os.path.exists(self.options.merge_cores):
  #           os.makedirs(self.options.merge_cores)
         base = self.options.merge_cores
 
         f_out = open(base+".vhd", "w")
-        f_out.write("\n\n\n\n")
-        f_out.write("------------------------------ WARNING -------------------------------\n")
-        f_out.write("-- This code has been generated by hdlmake --merge-cores option     --\n")
-        f_out.write("-- It is provided for your convenience, to spare you from adding    --\n")
-        f_out.write("-- lots of individual source files to ISE/Modelsim/Quartus projects --\n")
-        f_out.write("-- mainly for Windows users. Please DO NOT MODIFY this file. If you --\n")
-        f_out.write("-- need to change something inside, edit the original source file   --\n")
-        f_out.write("-- and re-genrate the merged version!                               --\n")
-        f_out.write("----------------------------------------------------------------------\n")
-        f_out.write("\n\n\n\n")
+        f_out.write("\n\n\n\n");
+        f_out.write("------------------------------ WARNING -------------------------------\n");
+        f_out.write("-- This code has been generated by hdlmake --merge-cores option     --\n");
+        f_out.write("-- It is provided for your convenience, to spare you from adding    --\n");
+        f_out.write("-- lots of individual source files to ISE/Modelsim/Quartus projects --\n");
+        f_out.write("-- mainly for Windows users. Please DO NOT MODIFY this file. If you --\n");
+        f_out.write("-- need to change something inside, edit the original source file   --\n");
+        f_out.write("-- and re-genrate the merged version!                               --\n");
+        f_out.write("----------------------------------------------------------------------\n");
+        f_out.write("\n\n\n\n");
 
         for vhdl in flist_sorted.filter(VHDLFile):
             f_out.write("\n\n--- File: %s ----\n\n" % vhdl.rel_path())
@@ -495,16 +495,16 @@ class HdlmakeKernel(object):
 
         f_out = open(base+".v", "w")
 
-        f_out.write("\n\n\n\n")
-        f_out.write("////////////////////////////// WARNING ///////////////////////////////\n")
-        f_out.write("// This code has been generated by hdlmake --merge-cores option     //\n")
-        f_out.write("// It is provided for your convenience, to spare you from adding    //\n")
-        f_out.write("// lots of individual source files to ISE/Modelsim/Quartus projects //\n")
-        f_out.write("// mainly for Windows users. Please DO NOT MODIFY this file. If you //\n")
-        f_out.write("// need to change something inside, edit the original source file   //\n")
-        f_out.write("// and re-genrate the merged version!                               //\n")
-        f_out.write("//////////////////////////////////////////////////////////////////////\n")
-        f_out.write("\n\n\n\n")
+        f_out.write("\n\n\n\n");
+        f_out.write("////////////////////////////// WARNING ///////////////////////////////\n");
+        f_out.write("// This code has been generated by hdlmake --merge-cores option     //\n");
+        f_out.write("// It is provided for your convenience, to spare you from adding    //\n");
+        f_out.write("// lots of individual source files to ISE/Modelsim/Quartus projects //\n");
+        f_out.write("// mainly for Windows users. Please DO NOT MODIFY this file. If you //\n");
+        f_out.write("// need to change something inside, edit the original source file   //\n");
+        f_out.write("// and re-genrate the merged version!                               //\n");
+        f_out.write("//////////////////////////////////////////////////////////////////////\n");
+        f_out.write("\n\n\n\n");
 
         for vlog in flist_sorted.filter(VerilogFile):
             f_out.write("\n\n//    File: %s     \n\n" % vlog.rel_path())
diff --git a/src/makefile_writer.py b/src/makefile_writer.py
index 7c6bb003b4e048bfceae6305540884fd3cf4d375..c1eb8c8453706f94e0e9c5e6138ef78918f1a63b 100644
--- a/src/makefile_writer.py
+++ b/src/makefile_writer.py
@@ -3,19 +3,19 @@
 #
 # Copyright (c) 2011 Pawel Szostek (pawel.szostek@cern.ch)
 #
-#    This source code is free software you can redistribute it
+#    This source code is free software; you can redistribute it
 #    and/or modify it in source code form under the terms of the GNU
 #    General Public License as published by the Free Software
-#    Foundation either version 2 of the License, or (at your option)
+#    Foundation; either version 2 of the License, or (at your option)
 #    any later version.
 #
 #    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY without even the implied warranty of
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 #    GNU General Public License for more details.
 #
 #    You should have received a copy of the GNU General Public License
-#    along with this program if not, write to the Free Software
+#    along with this program; if not, write to the Free Software
 #    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 #
 # Modified to allow ISim simulation by Lucas Russo (lucas.russo@lnls.br)
@@ -49,7 +49,7 @@ class MakefileWriter(object):
         self._file.write(line)
 
     def writeln(self, text=None):
-        if text is None:
+        if text == None:
             self._file.write("\n")
         else:
             self._file.write(text+"\n")
@@ -60,7 +60,7 @@ class MakefileWriter(object):
 
     def generate_remote_synthesis_makefile(self, files, name, cwd, user, server, ise_path):
         import path
-        if name is None:
+        if name == None:
             import random
             name = ''.join(random.choice(string.ascii_letters + string.digits) for x in range(8))
         user_tmpl = "USER:={0}"
@@ -69,21 +69,21 @@ class MakefileWriter(object):
         remote_name_tmpl = "R_NAME:={0}"
         files_tmpl = "FILES := {0}"
 
-        if user is None:
+        if  user == None:
             user_tmpl = user_tmpl.format("$(HDLMAKE_USER)#take the value from the environment")
             test_tmpl = """__test_for_remote_synthesis_variables:
 ifeq (x$(USER),x)
-    @echo "Remote synthesis user is not set. You can set it by editing variable USER in the makefile." && false
+\t@echo "Remote synthesis user is not set. You can set it by editing variable USER in the makefile." && false
 endif
 ifeq (x$(SERVER),x)
-    @echo "Remote synthesis server is not set. You can set it by editing variable SERVER in the makefile." && false
+\t@echo "Remote synthesis server is not set. You can set it by editing variable SERVER in the makefile." && false
 endif
 """
         else:
             user_tmpl = user_tmpl.format(user)
-            test_tmpl = "__test_for_remote_synthesis_variables:\n        true #dummy\n"
+            test_tmpl = "__test_for_remote_synthesis_variables:\n\t\ttrue #dummy\n"
 
-        if server is None:
+        if server == None:
             server_tmpl = server_tmpl.format("$(HDLMAKE_SERVER)#take the value from the environment")
         else:
             server_tmpl = server_tmpl.format(server)
@@ -109,21 +109,21 @@ endif
 
         mkdir_cmd = "ssh $(USER)@$(SERVER) 'mkdir -p $(R_NAME)'"
         rsync_cmd = "rsync -e 'ssh -p $(PORT)' -Ravl $(foreach file, $(FILES), $(shell readlink -f $(file))) $(USER)@$(SERVER):$(R_NAME)"
-        send_cmd = "__send:\n        {0}\n        {1}".format(mkdir_cmd, rsync_cmd)
+        send_cmd = "__send:\n\t\t{0}\n\t\t{1}".format(mkdir_cmd, rsync_cmd)
         self.writeln(send_cmd)
         self.writeln("")
 
         tcl = "run.tcl"
-        synthesis_cmd = "__do_synthesis:\n        "
+        synthesis_cmd = "__do_synthesis:\n\t\t"
         synthesis_cmd += "ssh $(USER)@$(SERVER) 'cd $(R_NAME)$(CWD) && {0}xtclsh {1}'"
         self.writeln(synthesis_cmd.format(ise_path, tcl))
 
         self.writeln()
-        send_back_cmd = "__send_back: \n        cd .. && rsync -av $(USER)@$(SERVER):$(R_NAME)$(CWD) . && cd $(CWD)"
+        send_back_cmd = "__send_back: \n\t\tcd .. && rsync -av $(USER)@$(SERVER):$(R_NAME)$(CWD) . && cd $(CWD)"
         self.write(send_back_cmd)
         self.write("\n\n")
 
-        cln_cmd = "cleanremote:\n        ssh $(USER)@$(SERVER) 'rm -rf $(R_NAME)'"
+        cln_cmd = "cleanremote:\n\t\tssh $(USER)@$(SERVER) 'rm -rf $(R_NAME)'"
         self.writeln("#target for removing stuff from the remote location")
         self.writeln(cln_cmd)
         self.writeln()
@@ -183,25 +183,25 @@ run.tcl
         mk_text2 = """
 #target for performing local synthesis
 local:
-        echo "project open $(PROJECT)" > run.tcl
-        echo "process run {Generate Programming File} -force rerun_all" >> run.tcl
+\t\techo "project open $(PROJECT)" > run.tcl
+\t\techo "process run {Generate Programming File} -force rerun_all" >> run.tcl
 """
 
         mk_text3 = """
 #target for cleaing all intermediate stuff
 clean:
-        rm -f $(ISE_CRAP)
-        rm -rf xst xlnx_auto_*_xdb iseconfig _xmsgs _ngo
+\t\trm -f $(ISE_CRAP)
+\t\trm -rf xst xlnx_auto_*_xdb iseconfig _xmsgs _ngo
 
 #target for cleaning final files
 mrproper:
-        rm -f *.bit *.bin *.mcs
+\t\trm -f *.bit *.bin *.mcs
 
 """
         self.initialize()
         self.write(mk_text.format(top_mod.syn_top, top_mod.syn_project))
 
-        xtcl_tmp = "        {0}xtclsh run.tcl"
+        xtcl_tmp = "\t\t{0}xtclsh run.tcl"
         self.write(mk_text2)
         self.writeln(xtcl_tmp.format(ise_path))
         self.writeln()
@@ -224,10 +224,10 @@ mrproper:
             basename = module.basename
             if module.source == "svn":
                 self.write("__"+basename+"_fetch:\n")
-                self.write("        ")
-                self.write("PWD=$(shell pwd) ")
-                self.write("cd " + rp(module.fetchto) + ' ')
-                c = "svn checkout {0}{1} {2}"
+                self.write("\t\t")
+                self.write("PWD=$(shell pwd); ")
+                self.write("cd " + rp(module.fetchto) + '; ')
+                c = "svn checkout {0}{1} {2};"
                 if module.revision:
                     c=c.format(module.url, "@"+module.revision, module.basename)
                 else:
@@ -237,16 +237,16 @@ mrproper:
 
             elif module.source == "git":
                 self.write("__"+basename+"_fetch:\n")
-                self.write("        ")
-                self.write("PWD=$(shell pwd) ")
-                self.write("cd " + rp(module.fetchto) + ' ')
-                self.write("if [ -d " + basename + " ] then cd " + basename + ' ')
-                self.write("git pull ")
+                self.write("\t\t")
+                self.write("PWD=$(shell pwd); ")
+                self.write("cd " + rp(module.fetchto) + '; ')
+                self.write("if [ -d " + basename + " ]; then cd " + basename + '; ')
+                self.write("git pull; ")
                 if module.revision:
-                    self.write("git checkout " + module.revision +'')
-                self.write("else git clone "+ module.url + ' fi ')
+                    self.write("git checkout " + module.revision +';')
+                self.write("else git clone "+ module.url + '; fi; ')
                 if module.revision:
-                    self.write("git checkout " + module.revision + '')
+                    self.write("git checkout " + module.revision + ';')
                 self.write("cd $(PWD) \n\n")
 
     def generate_iverilog_makefile(self, fileset, top_module, modules_pool):
@@ -280,7 +280,7 @@ mrproper:
             # self.write(target_name+': ')
             # self.write(vl.rel_path() + ' ')
             # self.writeln("$("+target_name+"_deps)")
-            # self.write("        $(VERILOG_COMP) -y"+vl.library)
+            # self.write("\t\t$(VERILOG_COMP) -y"+vl.library)
             # if isinstance(vl, SVFile):
             #     self.write(" -sv ")
             # incdir = " "
@@ -309,15 +309,15 @@ mrproper:
             self.writeln(bt+'syn_deps = '+ ' '.join([f.rel_path() for f in bt_syn_deps]))
             if not os.path.exists(bt+".ucf"):
                 print "WARNING: The file " +bt+".ucf doesn't exist!"
-            self.writeln(bt+".bit:    "+bt+".v $("+bt+"syn_deps) "+bt+".ucf")
+            self.writeln(bt+".bit:\t"+bt+".v $("+bt+"syn_deps) "+bt+".ucf")
             part=(global_mod.top_module.syn_device+'-'+
                   global_mod.top_module.syn_package+
                   global_mod.top_module.syn_grade)
-            self.writeln("    PART="+part+" $(SYNTH) "+bt+" $^")
-            self.writeln("    mv _xilinx/"+bt+".bit $@")
+            self.writeln("\tPART="+part+" $(SYNTH) "+bt+" $^")
+            self.writeln("\tmv _xilinx/"+bt+".bit $@")
 
         self.writeln("clean:")
-        self.writeln("        rm -f "+" ".join(target_list)+"\n        rm -rf _xilinx")
+        self.writeln("\t\trm -f "+" ".join(target_list)+"\n\t\trm -rf _xilinx")
 
 
     def generate_vsim_makefile(self, fileset, top_module):
@@ -338,9 +338,9 @@ $(VERILOG_OBJ): $(VHDL_OBJ)
 $(VHDL_OBJ): $(LIB_IND) modelsim.ini
 
 modelsim.ini: $(MODELSIM_INI_PATH)/modelsim.ini
-        cp $< .
+\t\tcp $< .
 clean:
-        rm -rf ./modelsim.ini $(LIBS)
+\t\trm -rf ./modelsim.ini $(LIBS)
 .PHONY: clean
 
 """
@@ -388,7 +388,7 @@ clean:
 
         for lib in libs:
             self.write(lib+"/."+lib+":\n")
-            self.write(' '.join(["    (vlib",  lib, "&&", "vmap", "-modelsimini modelsim.ini",
+            self.write(' '.join(["\t(vlib",  lib, "&&", "vmap", "-modelsimini modelsim.ini",
             lib, "&&", "touch", lib+"/."+lib,")"]))
 
             self.write(' '.join(["||", "rm -rf", lib, "\n"]))
@@ -399,7 +399,7 @@ clean:
             self.write(os.path.join(vl.library, vl.purename, '.'+vl.purename+"_"+vl.extension())+': ')
             self.write(vl.rel_path() + ' ')
             self.writeln(' '.join([f.rel_path() for f in vl.dep_depends_on]))
-            self.write("        vlog -work "+vl.library)
+            self.write("\t\tvlog -work "+vl.library)
             self.write(" $(VLOG_FLAGS) ")
             if isinstance(vl, SVFile):
                 self.write(" -sv ")
@@ -408,7 +408,7 @@ clean:
             incdir += " "
             self.write(incdir)
             self.writeln(vl.vlog_opt+" $<")
-            self.write("        @mkdir -p $(dir $@)")
+            self.write("\t\t@mkdir -p $(dir $@)")
             self.writeln(" && touch $@ \n\n")
         self.write("\n")
 
@@ -422,8 +422,8 @@ clean:
                 name = dep_file.purename
                 self.write(" \\\n"+ os.path.join(dep_file.library, name, "."+name+"_vhd"))
             self.writeln()
-            self.writeln(' '.join(["        vcom $(VCOM_FLAGS)", vhdl.vcom_opt, "-work", lib, "$< "]))
-            self.writeln("        @mkdir -p $(dir $@) && touch $@\n")
+            self.writeln(' '.join(["\t\tvcom $(VCOM_FLAGS)", vhdl.vcom_opt, "-work", lib, "$< "]))
+            self.writeln("\t\t@mkdir -p $(dir $@) && touch $@\n")
             self.writeln()
 
 # Modification here
@@ -447,15 +447,15 @@ $(VERILOG_OBJ): $(LIB_IND) xilinxsim.ini
 $(VHDL_OBJ): $(LIB_IND) xilinxsim.ini
 
 xilinxsim.ini: $(XILINX_INI_PATH)/xilinxsim.ini
-        cp $< .
-fuse: 
+\t\tcp $< .
+fuse: ;
 ifeq ($(TOP_MODULE),)
-        @echo \"Environment variable TOP_MODULE not set!\"
+\t\t@echo \"Environment variable TOP_MODULE not set!\"
 else
-        fuse work.$(TOP_MODULE) -intstyle ise -incremental -o $(FUSE_OUTPUT)
+\t\tfuse work.$(TOP_MODULE) -intstyle ise -incremental -o $(FUSE_OUTPUT)
 endif
 clean:
-        rm -rf ./xilinxsim.ini $(LIBS) fuse.xmsgs fuse.log fuseRelaunch.cmd isim isim.log \
+\t\trm -rf ./xilinxsim.ini $(LIBS) fuse.xmsgs fuse.log fuseRelaunch.cmd isim isim.log \
 isim.wdb
 .PHONY: clean
 
@@ -506,14 +506,14 @@ isim.wdb
         #.ini file.
         for lib in libs:
             self.write(lib+"/."+lib+":\n")
-            self.write(' '.join(["    (mkdir", lib, "&&", "touch", lib+"/."+lib+" "]))
+            self.write(' '.join(["\t(mkdir", lib, "&&", "touch", lib+"/."+lib+" "]))
             #self.write(' '.join(["&&", "echo", "\""+lib+"="+lib+"/."+lib+"\" ", ">>", "xilinxsim.ini) "]))
             self.write(' '.join(["&&", "echo", "\""+lib+"="+lib+"\" ", ">>", "xilinxsim.ini) "]))
             self.write(' '.join(["||", "rm -rf", lib, "\n"]))
             self.write('\n')
 
             # Modify xilinxsim.ini file by including the extra local libraries
-            #self.write(' '.join(["    (echo """, lib+"="+lib+"/."+lib, ">>", "${XILINX_INI_PATH}/xilinxsim.ini"]))
+            #self.write(' '.join(["\t(echo """, lib+"="+lib+"/."+lib, ">>", "${XILINX_INI_PATH}/xilinxsim.ini"]))
 
         #rules for all _primary.dat files for sv
         #incdir = ""
@@ -526,7 +526,7 @@ isim.wdb
             self.write(os.path.join(comp_obj, '.'+vl.purename+"_"+vl.extension())+': ')
             self.write(vl.rel_path() + ' ')
             self.writeln(' '.join([f.rel_path() for f in vl.dep_depends_on]))
-            self.write("        vlogcomp -work "+vl.library+"=./"+vl.library)
+            self.write("\t\tvlogcomp -work "+vl.library+"=./"+vl.library)
             self.write(" $(VLOGCOMP_FLAGS) ")
             #if isinstance(vl, SVFile):
             #    self.write(" -sv ")
@@ -535,7 +535,7 @@ isim.wdb
             #incdir += " "
             self.write(" -i ".join(vl.include_dirs) + " ")
             self.writeln(vl.vlog_opt+" $<")
-            self.write("        @mkdir -p $(dir $@)")
+            self.write("\t\t@mkdir -p $(dir $@)")
             self.writeln(" && touch $@ \n\n")
         self.write("\n")
 
@@ -549,8 +549,8 @@ isim.wdb
             #self.write(os.path.join(lib, purename, "."+purename+"_"+ vhdl.extension()) + ": "+ vhdl.rel_path()+" " + os.path.join(lib, purename, "."+purename) + '\n')
             #self.writeln(".PHONY: " + os.path.join(comp_obj, "."+purename+"_"+ vhdl.extension()))
             self.write(os.path.join(comp_obj, "."+purename+"_"+ vhdl.extension()) + ": "+ vhdl.rel_path()+" " + os.path.join(lib, purename, "."+purename) + '\n')
-            self.writeln(' '.join(["        vhpcomp $(VHPCOMP_FLAGS)", vhdl.vcom_opt, "-work", lib+"=./"+lib, "$< "]))
-            self.writeln("        @mkdir -p $(dir $@) && touch $@\n")
+            self.writeln(' '.join(["\t\tvhpcomp $(VHPCOMP_FLAGS)", vhdl.vcom_opt, "-work", lib+"=./"+lib, "$< "]))
+            self.writeln("\t\t@mkdir -p $(dir $@) && touch $@\n")
             self.writeln()
             # dependency meta-target. This rule just list the dependencies of the above file
             #if len(vhdl.dep_depends_on) != 0:
@@ -562,7 +562,7 @@ isim.wdb
                 name = dep_file.purename
                 self.write(" \\\n"+ os.path.join(dep_file.library, name, "."+name+ "_" + vhdl.extension()))
             self.write('\n')
-            self.writeln("        @mkdir -p $(dir $@) && touch $@\n")
+            self.writeln("\t\t@mkdir -p $(dir $@) && touch $@\n")
 
     def __get_rid_of_incdirs(self, vlog_opt):
         vlog_opt_vsim = self.__get_rid_of_vsim_incdirs(vlog_opt)
diff --git a/src/manifest_parser.py b/src/manifest_parser.py
index d0b852bbc3abbab511f1d96b0a2350a2b9c1bf32..80a2da1db3fa7a0ac54ea7f18762abd31f0b5b17 100644
--- a/src/manifest_parser.py
+++ b/src/manifest_parser.py
@@ -2,19 +2,19 @@
 #
 # Copyright (c) 2011 Pawel Szostek (pawel.szostek@cern.ch)
 #
-#    This source code is free software you can redistribute it
+#    This source code is free software; you can redistribute it
 #    and/or modify it in source code form under the terms of the GNU
 #    General Public License as published by the Free Software
-#    Foundation either version 2 of the License, or (at your option)
+#    Foundation; either version 2 of the License, or (at your option)
 #    any later version.
 #
 #    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY without even the implied warranty of
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 #    GNU General Public License for more details.
 #
 #    You should have received a copy of the GNU General Public License
-#    along with this program if not, write to the Free Software
+#    along with this program; if not, write to the Free Software
 #    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 #
 
@@ -23,12 +23,12 @@ import os
 from configparser import ConfigParser
 
 class Manifest:
-    def __init__(self, path=None, url=None):
+    def __init__(self, path = None, url = None):
         if not isinstance(path, str):
             raise ValueError("Path must be an instance of str")
-        if path is None and url is None:
+        if path == None and url == None:
             raise ValueError("When creating a manifest a path or an URL must be given")
-        if path is None and url is None:
+        if path != None and url == None:
             self.url = path
         if path_mod.is_abs_path(path):
             self.path = path
@@ -37,32 +37,31 @@ class Manifest:
 
     def __str__(self):
         return self.url
-
     def exists(self):
         return os.path.exists(self.path)
 
 
 class ManifestParser(ConfigParser):
     def __init__(self):
-        ConfigParser.__init__(self, description="Configuration options description")
+        ConfigParser.__init__(self,description="Configuration options description")
         self.add_option('fetchto', default=None, help="Destination for fetched modules", type='')
         #self.add_option('root_module', default=None, help="Path to root module for currently parsed", type='')
 
         self.add_delimiter()
         self.add_option('syn_name', default=None, help="Name of the folder at remote synthesis machine", type='')
-        self.add_option('syn_device', default=None, help="Target FPGA device", type='')
-        self.add_option('syn_grade', default=None, help="Speed grade of target FPGA", type='')
-        self.add_option('syn_package', default=None, help="Package variant of target FPGA", type='')
-        self.add_option('syn_top', default=None, help="Top level module for synthesis", type='')
-        self.add_option('syn_project', default=None, help="Project file (.xise, .ise, .qpf)", type='')
+        self.add_option('syn_device', default=None, help = "Target FPGA device", type = '');
+        self.add_option('syn_grade', default=None, help = "Speed grade of target FPGA", type = '');
+        self.add_option('syn_package', default=None, help = "Package variant of target FPGA", type = '');
+        self.add_option('syn_top', default=None, help = "Top level module for synthesis", type = '');
+        self.add_option('syn_project', default=None, help = "Project file (.xise, .ise, .qpf)", type = '');
 
         self.add_delimiter()
-        self.add_option('include_dirs', default=None, help="Include dirs for Verilog sources", type=[])
-        self.add_type('include_dirs', type="")
+        self.add_option('include_dirs', default=None, help="Include dirs for Verilog sources", type = [])
+        self.add_type('include_dirs', type = "")
 
         self.add_delimiter()
 # Modification here!
-#        self.add_option('sim_tool', default=None, help = "Simulation tool to be used (isim/vsim)", type = '')
+#		self.add_option('sim_tool', default=None, help = "Simulation tool to be used (isim/vsim)", type = '');
         self.add_option('vsim_opt', default="", help="Additional options for vsim", type='')
         self.add_option('vcom_opt', default="", help="Additional options for vcom", type='')
         self.add_option('vlog_opt', default="", help="Additional options for vlog", type='')
@@ -107,7 +106,7 @@ class ManifestParser(ConfigParser):
         return ConfigParser.parse(self)
 
     def print_help(self):
-        ConfigParser.help(self)
+        ConfigParser.help()
 
     def search_for_package(self):
         """
@@ -121,12 +120,12 @@ class ManifestParser(ConfigParser):
         except UnicodeDecodeError:
             return []
 
-        package_pattern = re.compile("^[     ]*package[     ]+([^     ]+)[     ]+is[     ]*$")
+        package_pattern = re.compile("^[ \t]*package[ \t]+([^ \t]+)[ \t]+is[ \t]*$")
 
         ret = []
         for line in text:
             m = re.match(package_pattern, line)
-            if m is None:
+            if m != None:
                 ret.append(m.group(1))
 
         f.close()
diff --git a/src/module.py b/src/module.py
index 0a11a91aa54b315a43a6d12713be6aa4cb022e60..0dc9723f7cd713a169d448a7e33f5b8621783cb9 100644
--- a/src/module.py
+++ b/src/module.py
@@ -2,19 +2,19 @@
 #
 # Copyright (c) 2011 Pawel Szostek (pawel.szostek@cern.ch)
 #
-#    This source code is free software you can redistribute it
+#    This source code is free software; you can redistribute it
 #    and/or modify it in source code form under the terms of the GNU
 #    General Public License as published by the Free Software
-#    Foundation either  2 of the License, or (at your option)
+#    Foundation; either  2 of the License, or (at your option)
 #    any later version.
 #
 #    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY without even the implied warranty of
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 #    GNU General Public License for more details.
 #
 #    You should have received a copy of the GNU General Public License
-#    along with this program if not, write to the Free Software
+#    along with this program; if not, write to the Free Software
 #    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 #
 
@@ -23,8 +23,7 @@ import msg as p
 import os
 import global_mod
 from manifest_parser import Manifest, ManifestParser
-from srcfile import SourceFileSet, SourceFileFactory
-
+from srcfile import SourceFileSet, SourceFileFactory 
 
 class Module(object):
     @property
@@ -32,13 +31,13 @@ class Module(object):
         return self._source
 
     @source.setter
-    def source_set(self, value):
-        if value not in ["svn", "git", "local"]:
+    def source(self, value):
+        if value not in ["svn","git","local"]:
             raise ValueError("Inproper source: " + value)
         self._source = value
 
     @source.deleter
-    def source_del(self):
+    def source(self):
         del self._source
 ###
     @property
@@ -72,19 +71,6 @@ class Module(object):
         self._files = None
         self.manifest = None
         self.incl_makefiles = []
-        self.syn_grade = None
-        self.syn_top = None
-        self.syn_name = None
-        self.syn_package = None
-        self.syn_project = None
-        self.use_compiler = None
-        self.files = None
-        self.sim_only_files = None
-        self.bit_file_targets = None
-        self.vsim_opt = None
-        self.syn_device = None
-        self.iverilog_opt = None
-
         if source != "local":
             self.url, self.branch, self.revision = path.url_parse(url)
         else:
@@ -92,7 +78,7 @@ class Module(object):
 
         if source == "local" and not os.path.exists(url):
             p.error("Path to the local module doesn't exist:\n" + url
-                    + "\nThis module was instantiated in: " + str(parent))
+            + "\nThis module was instantiated in: " + str(parent))
             quit()
 
         if source == "local":
@@ -106,7 +92,7 @@ class Module(object):
                 self.path = None
                 self.isfetched = False
 
-        if self.path is None:
+        if self.path != None:
             self.manifest = self.__search_for_manifest()
         else:
             self.manifest = None
@@ -135,14 +121,14 @@ class Module(object):
         for filename in os.listdir(self.path):
             if filename == "manifest.py" or filename == "Manifest.py":
                 if not os.path.isdir(filename):
-                    p.vprint("*** found manifest for module "+self.path)
+                    p.vprint("*** found manifest for module "+self.path);
                     manifest = Manifest(path=os.path.abspath(os.path.join(self.path, filename)))
                     return manifest
         return None
 
     def __make_list(self, sth):
-        if sth is not None:
-            if not isinstance(sth, (list, tuple)):
+        if sth != None:
+            if not isinstance(sth, (list,tuple)):
                 sth = [sth]
         else:
             sth = []
@@ -153,6 +139,7 @@ class Module(object):
             return
 
         import shutil
+        import os
 
         p.vprint("Removing " + self.path)
         shutil.rmtree(self.path)
@@ -164,29 +151,29 @@ class Module(object):
                 tmp = '/'.join(parts)
                 p.vprint("Trying to remove " + tmp)
                 os.rmdir(tmp)
-            except OSError:  # a catologue is not empty - we are done
+            except OSError: #a catologue is not empty - we are done
                 break
 
     def parse_manifest(self):
-        if self.isparsed is True or self.isfetched is False:
+        if self.isparsed == True or self.isfetched == False:
             return
-        if self.manifest is None:
+        if self.manifest == None:
             self.manifest = self.__search_for_manifest()
-        if self.path is None:
+        if self.path == None:
             raise RuntimeError()
         manifest_parser = ManifestParser()
 
-        # For non-top modules
-        if(self.parent is not None):
+		# For non-top modules
+        if(self.parent != None):
             manifest_parser.add_arbitrary_code("target=\""+str(global_mod.top_module.target)+"\"")
             manifest_parser.add_arbitrary_code("action=\""+str(global_mod.top_module.action)+"\"")
-            # syn_device and sim_tool will be set for non-top modules
+			# syn_device and sim_tool will be set for non-top modules
             manifest_parser.add_arbitrary_code("syn_device=\""+str(global_mod.top_module.syn_device)+"\"")
 
         manifest_parser.add_arbitrary_code("__manifest=\""+self.path+"\"")
         manifest_parser.add_arbitrary_code(global_mod.options.arbitrary_code)
 
-        if self.manifest is None:
+        if self.manifest == None:
             p.vprint("No manifest found in module "+str(self))
         else:
             manifest_parser.add_manifest(self.manifest)
@@ -199,13 +186,13 @@ class Module(object):
             p.echo("Error while parsing {0}:\n{1}: {2}.".format(self.manifest, type(ne), ne))
             quit()
 
-        if(opt_map["fetchto"] is not None):
+        if(opt_map["fetchto"] != None):
             fetchto = path_mod.rel2abs(opt_map["fetchto"], self.path)
             self.fetchto = fetchto
         else:
             fetchto = self.fetchto
 
-        if self.ise is None:
+        if self.ise == None:
             self.ise = "13.1"
 
         if "local" in opt_map["modules"]:
@@ -229,17 +216,17 @@ class Module(object):
         self.iverilog_opt = opt_map["iverilog_opt"]
         self.use_compiler = opt_map["use_compiler"]
         mkFileList = []
-        if opt_map["incl_makefiles"] is not None:
+        if opt_map["incl_makefiles"] != None:
             if isinstance(opt_map["incl_makefiles"], basestring):
                 mkFileList.append(opt_map["incl_makefiles"])
             else:
-                map(mkFileList.append, opt_map["incl_makefiles"])
+                map(lambda f: mkFileList.append(f), opt_map["incl_makefiles"])
         for f in mkFileList:
             if path_mod.is_abs_path(f):
                 print "Found and absolute path in manifest. Exiting .."
                 quit()
             else:
-                self.incl_makefiles.append(os.path.relpath(os.path.abspath(os.path.join(self.path, f))))
+                self.incl_makefiles.append(os.path.relpath(os.path.abspath(os.path.join(self.path,f))))
 
         #if self.vlog_opt == "":
         #    self.vlog_opt = global_mod.top_module.vlog_opt
@@ -252,23 +239,23 @@ class Module(object):
 
         self.library = opt_map["library"]
         self.include_dirs = []
-        if opt_map["include_dirs"] is not None:
+        if opt_map["include_dirs"] != None:
             if isinstance(opt_map["include_dirs"], basestring):
 #                self.include_dirs.append(opt_map["include_dirs"])
-                ll = os.path.relpath(os.path.abspath(os.path.join(self.path, opt_map["include_dirs"])))
+                ll = os.path.relpath(os.path.abspath(os.path.join(self.path,opt_map["include_dirs"])))
                 self.include_dirs.append(ll)
             else:
 #                self.include_dirs.extend(opt_map["include_dirs"])
-                ll = map(lambda x: os.path.relpath(os.path.abspath(os.path.join(self.path, x))),
+                ll = map(lambda x: os.path.relpath(os.path.abspath(os.path.join(self.path,x))),
                          opt_map["include_dirs"])
                 self.include_dirs.extend(ll)
 
-        for directory in self.include_dirs:
-            if path_mod.is_abs_path(directory):
+        for dir in self.include_dirs:
+            if path_mod.is_abs_path(dir):
                 p.warning(self.path + " contains absolute path to an include directory: " +
-                          directory)
-            if not os.path.exists(directory):
-                p.warning(self.path + " has an unexisting include directory: " + directory)
+                dir)
+            if not os.path.exists(dir):
+                p.warning(self.path + " has an unexisting include directory: " + dir)
 
         if opt_map["files"] == []:
             self.files = SourceFileSet()
@@ -283,11 +270,11 @@ class Module(object):
                     p.warning(path + " is an absolute path. Omitting.")
                 if not os.path.exists(path):
                     p.error("File listed in " + self.manifest.path + " doesn't exist: "
-                            + path + ".\nExiting.")
+                    + path +".\nExiting.")
                     quit()
 
             from srcfile import VerilogFile, VHDLFile
-            self.files = self.__create_file_list_from_paths(paths=paths)
+            self.files = self.__create_file_list_from_paths(paths=paths);
             for f in self.files:
                 if isinstance(f, VerilogFile):
                     f.vsim_opt = self.vsim_opt
@@ -307,13 +294,14 @@ class Module(object):
                     p.warning(path + " is an absolute path. Omitting.")
                 if not os.path.exists(path):
                     p.error("File listed in " + self.manifest.path + " doesn't exist: "
-                            + path + ".\nExiting.")
+                    + path +".\nExiting.")
                     quit()
+            from srcfile import VerilogFile, VHDLFile
             self.sim_only_files = self.__create_file_list_from_paths(paths=paths)
 
         self.bit_file_targets = SourceFileSet()
         if opt_map["bit_file_targets"] != []:
-            paths = []
+            paths=[]
             for path in opt_map["bit_file_targets"]:
                 if not path_mod.is_abs_path(path):
                     path = path_mod.rel2abs(path, self.path)
@@ -322,8 +310,9 @@ class Module(object):
                     p.warning(path + " is an absolute path. Omitting.")
                 if not os.path.exists(path):
                     p.error("File listed in " + self.manifest.path +
-                            " doesn't exist: " + path + ".\nExiting.")
+                            " doesn't exist: " + path +".\nExiting.")
                     quit()
+            from srcfile import VerilogFile, VHDLFile
             self.bit_file_targets = self.__create_file_list_from_paths(paths=paths)
 
         if "svn" in opt_map["modules"]:
@@ -347,15 +336,15 @@ class Module(object):
         self.target = opt_map["target"]
         self.action = opt_map["action"]
 
-        if opt_map["syn_name"] is None and opt_map["syn_project"] is not None:
-            self.syn_name = opt_map["syn_project"][:-5]  # cut out .xise from the end
+        if opt_map["syn_name"] == None and opt_map["syn_project"] != None:
+            self.syn_name = opt_map["syn_project"][:-5] #cut out .xise from the end
         else:
             self.syn_name = opt_map["syn_name"]
-        self.syn_device = opt_map["syn_device"]
-        self.syn_grade = opt_map["syn_grade"]
-        self.syn_package = opt_map["syn_package"]
-        self.syn_project = opt_map["syn_project"]
-        self.syn_top = opt_map["syn_top"]
+        self.syn_device = opt_map["syn_device"];
+        self.syn_grade = opt_map["syn_grade"];
+        self.syn_package= opt_map["syn_package"];
+        self.syn_project = opt_map["syn_project"];
+        self.syn_top = opt_map["syn_top"];
 
         self.isparsed = True
 
@@ -366,7 +355,7 @@ class Module(object):
         if not self.isfetched:
             return False
         for mod in self.submodules():
-            if mod.is_fetched_recursively() is False:
+            if mod.is_fetched_recursively() == False:
                 return False
         return True
 
@@ -380,7 +369,7 @@ class Module(object):
             if not cur_module.isfetched:
                 p.error("Unfetched module in modules list: " + str(cur_module))
                 quit()
-            if cur_module.manifest is None:
+            if cur_module.manifest == None:
                 p.vprint("No manifest in " + str(cur_module))
                 continue
             cur_module.parse_manifest()
@@ -406,8 +395,8 @@ class Module(object):
         srcs = SourceFileSet()
         for p in paths:
             if os.path.isdir(p):
-                directory = os.listdir(p)
-                for f_dir in directory:
+                dir = os.listdir(p)
+                for f_dir in dir:
                     f_dir = os.path.join(self.path, p, f_dir)
                     if not os.path.isdir(f_dir):
                         srcs.add(sff.new(f_dir, self.library, self.vcom_opt, self.vlog_opt, self.include_dirs))
@@ -419,6 +408,6 @@ class Module(object):
         f_set = SourceFileSet()
         modules = self.make_list_of_modules()
         for m in modules:
-            f_set.add(m.files)
+            f_set.add(m.files);
 
         return f_set
diff --git a/src/msg.py b/src/msg.py
index 87483d774fd1c740fbe05ec9a136a7ce54be8f1c..8494fe4eaf22e2616ecd3e165e3f9bc1c0823956 100644
--- a/src/msg.py
+++ b/src/msg.py
@@ -3,19 +3,19 @@
 #
 # Copyright (c) 2011 Pawel Szostek (pawel.szostek@cern.ch)
 #
-#    This source code is free software you can redistribute it
+#    This source code is free software; you can redistribute it
 #    and/or modify it in source code form under the terms of the GNU
 #    General Public License as published by the Free Software
-#    Foundation either version 2 of the License, or (at your option)
+#    Foundation; either version 2 of the License, or (at your option)
 #    any later version.
 #
 #    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY without even the implied warranty of
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 #    GNU General Public License for more details.
 #
 #    You should have received a copy of the GNU General Public License
-#    along with this program if not, write to the Free Software
+#    along with this program; if not, write to the Free Software
 #    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 #
 
@@ -49,7 +49,7 @@ def echo(msg):
     rawprint(msg)
 
 def vprint(msg):
-    if global_mod.options.verbose is True:
+    if global_mod.options.verbose == True:
         echo(msg)
 
 def pprint(msg):
@@ -57,7 +57,7 @@ def pprint(msg):
     pp.pprint(msg)
 
 def vpprint(msg):
-    if global_mod.options.verbose is True:
+    if global_mod.options.verbose == True:
         pp = prettyprinter.PrettyPrinter(indent = 2)
         pp.pprint(msg)
 
diff --git a/src/new_dep_solver.py b/src/new_dep_solver.py
index 00f1ab3a8701858b7709561c17906b9918850aaf..1ec7a5a184d63cd320ffd35cc818e839626d6710 100755
--- a/src/new_dep_solver.py
+++ b/src/new_dep_solver.py
@@ -2,70 +2,70 @@
 
 
 class DepRelation:
-    PROVIDE = 1
-    USE = 2
-    
-    ENTITY = 1
-    PACKAGE = 2
-    INCLUDE = 3
+	PROVIDE = 1
+	USE = 2
+	
+	ENTITY = 1
+	PACKAGE = 2
+	INCLUDE = 3
 
-    def __init__(self, obj_name, direction, rel_type):
-        self.direction = direction
-        self.rel_type = rel_type
-        self.obj_name = obj_name
-    
-    def satisfies(self, rel_b):
-        if(rel_b.direction == self.USE):
-            return True
-        elif(self.direction == self.PROVIDE and rel_b.rel_type == self.rel_type and rel_b.obj_name == self.obj_name):
-            return True
-        return False    
+	def __init__(self, obj_name, direction, rel_type):
+		self.direction = direction
+		self.rel_type = rel_type
+		self.obj_name = obj_name
+	
+	def satisfies(self, rel_b):
+		if(rel_b.direction == self.USE):
+			return True
+		elif(self.direction == self.PROVIDE and rel_b.rel_type == self.rel_type and rel_b.obj_name == self.obj_name):
+			return True
+		return False	
 
-    def __str__(self):
-        dstr = { self.USE : "Use", self.PROVIDE : "Provide" }
-        ostr = { self.ENTITY : "entity/module", self.PACKAGE : "package", self.INCLUDE : "include/header" }
-        return "%s %s '%s'" % (dstr[self.direction], ostr[self.rel_type], self.obj_name)
+	def __str__(self):
+		dstr = { self.USE : "Use", self.PROVIDE : "Provide" }
+		ostr = { self.ENTITY : "entity/module", self.PACKAGE : "package", self.INCLUDE : "include/header" }
+		return "%s %s '%s'" % (dstr[self.direction], ostr[self.rel_type], self.obj_name)
 
 class DepFile:
-    def __init__(self, filename, search_path=[]):
-        self.rels = []
-        self.filename = filename
-        parser = ParserFactory().create(self.filename, search_path)
-        parser.parse(self, self.filename)
+	def __init__(self, filename, search_path=[]):
+		self.rels = [];
+		self.filename = filename
+		parser = ParserFactory().create(self.filename, search_path)
+		parser.parse(self, self.filename)
 
-    def add_relation(self, rel):
-        self.rels.append(rel)        
-        
-    def satisfies(self, rels_b):
-        for r_mine in self.rels:
-                if not any(map(rels_b, lambda x: x.satisfies(r_mine))):
-                    return False
-    
-    def show_relations(self):
-        for r in self.rels:
-            print(str(r))
+	def add_relation(self, rel):
+		self.rels.append(rel);		
+		
+	def satisfies(self, rels_b):
+		for r_mine in self.rels:
+				if not any(map(rels_b, lambda x: x.satisfies(r_mine))):
+					return False
+	
+	def show_relations(self):
+		for r in self.rels:
+			print(str(r))
 
 class DepParser:
-    def __init__(self):
-        pass
-    
-    def parse(f, filename):
-        pass
+	def __init__(self):
+		pass
+	
+	def parse(f, filename):
+		pass
 
 class ParserFactory:
-    def create(self, filename, search_path):
-        import re
-        from vlog_parser import VerilogParser
-        from vhdl_parser import VHDLParser
+	def create(self, filename, search_path):
+		import re
+		from vlog_parser import VerilogParser
+		from vhdl_parser import VHDLParser
 
-        extension=re.match(re.compile(".+\.(\w+)$"), filename)
-        if(not extension):
-            throw ("Unecognized file format : %s" % filename)
-        extension = extension.group(1).lower()
-        if(extension in ["vhd", "vhdl"]):
-            return VHDLParser()
-        elif(extension in ["v", "sv"]):
-            vp = VerilogParser()
-            for d in search_path:
-                vp.add_search_path(d)
-            return vp
+		extension=re.match(re.compile(".+\.(\w+)$"), filename)
+		if(not extension):
+			throw ("Unecognized file format : %s" % filename);
+		extension = extension.group(1).lower()
+		if(extension in ["vhd", "vhdl"]):
+			return VHDLParser();
+		elif(extension in ["v", "sv"]):
+			vp = VerilogParser();
+			for d in search_path:
+				vp.add_search_path(d)
+			return vp
diff --git a/src/path.py b/src/path.py
index 3d38de0fa27c6f0fb1a9e70a9facc79c067e8b93..1ad3d21b5691ffc4d44c7a935bae62d980884b5d 100644
--- a/src/path.py
+++ b/src/path.py
@@ -3,19 +3,19 @@
 #
 # Copyright (c) 2011 Pawel Szostek (pawel.szostek@cern.ch)
 #
-#    This source code is free software you can redistribute it
+#    This source code is free software; you can redistribute it
 #    and/or modify it in source code form under the terms of the GNU
 #    General Public License as published by the Free Software
-#    Foundation either version 2 of the License, or (at your option)
+#    Foundation; either version 2 of the License, or (at your option)
 #    any later version.
 #
 #    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY without even the implied warranty of
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 #    GNU General Public License for more details.
 #
 #    You should have received a copy of the GNU General Public License
-#    along with this program if not, write to the Free Software
+#    along with this program; if not, write to the Free Software
 #    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 #
 
@@ -42,14 +42,14 @@ def url_parse(url):
     """
     Check if link to a repo seems to be correct. Filter revision number and branch
     """
-    """url_pat = re.compile("[     ]*([^     ]+?)[     ]*(::)?([^     @]+)?(@[     ]*(.+))?[     ]*")
+    """url_pat = re.compile("[ \t]*([^ \t]+?)[ \t]*(::)?([^ \t@]+)?(@[ \t]*(.+))?[ \t]*")
     url_match = re.match(url_pat, url)
-    if url_match is None:
+    if url_match == None:
         p.echo("Not a correct repo url: {0}. Skipping".format(url))
     url_clean = url_match.group(1)
-    if url_match.group(3) is None: #there is a branch
+    if url_match.group(3) != None: #there is a branch
       branch = url_match.group(3)
-    if url_match.group(5) is None: #there is a revision given
+    if url_match.group(5) != None: #there is a revision given
       rev = url_match.group(5)"""
     url_clean, branch, rev = None, None, None
     if "@@" in url:
@@ -113,7 +113,7 @@ def is_abs_path(path):
     return False
 
 def relpath(p1, p2 = None):
-    if p2 is None:
+    if p2 == None:
         p2 = os.getcwd()
     if p1 == p2:
         return '.'
diff --git a/src/srcfile.py b/src/srcfile.py
index 1a4f619453ce86909d8ff03a125219debc3b1ce5..907096f70dc93c0c72f9769c50d832ab168830d3 100644
--- a/src/srcfile.py
+++ b/src/srcfile.py
@@ -44,7 +44,7 @@ class File(object):
     
     def rel_path(self, dir=None):
         import path
-        if dir is None:
+        if dir == None:
             dir = os.getcwd()
         return path.relpath(self.path, dir)
 
@@ -151,7 +151,7 @@ class VHDLFile(SourceFile):
              #std_libs =  flow.MODELSIM_STANDARD_LIBS
                 print "I/O error: ({0})".format(e.message)
                 p.error("Picking standard Modelsim simulation libraries. Try to fix the error.")
-                std_libs = flow.MODELSIM_STANDARD_LIBS
+                std_libs = flow.MODELSIM_STARDAND_LIBS
         elif global_mod.top_module.action == "synthesis":
             print("setting std libs for synthesis...")
             if global_mod.top_module.target == "xilinx":
@@ -166,7 +166,7 @@ class VHDLFile(SourceFile):
         except UnicodeDecodeError:
             return []
 
-        use_pattern = re.compile("^[     ]*use[     ]+([^ ]+)[     ]*.*$")
+        use_pattern = re.compile("^[ \t]*use[ \t]+([^; ]+)[ \t]*;.*$")
         lib_pattern = re.compile("([^.]+)\.([^.]+)\.all")
 
         use_lines = []
@@ -180,7 +180,7 @@ class VHDLFile(SourceFile):
         ret = set() 
         for line in use_lines:
             m = re.match(lib_pattern, line)
-            if m is None:
+            if m != None:
                 #omit standard libraries
                 if (m.group(1)).lower() in std_libs:
                     continue
@@ -209,14 +209,14 @@ class VHDLFile(SourceFile):
         except UnicodeDecodeError:
             return []
 
-        package_pattern = re.compile("^[     ]*package[     ]+([^     ]+)[     ]+is[     ]*.*$")
+        package_pattern = re.compile("^[ \t]*package[ \t]+([^ \t]+)[ \t]+is[ \t]*.*$")
 
         ret = set() 
         for line in text:
             #identifiers and keywords are case-insensitive in VHDL
             line = line.lower()
             m = re.match(package_pattern, line)
-            if m is None:
+            if m != None:
                 ret.add((self.library.lower(), m.group(1).lower()))
 
         f.close()
@@ -289,12 +289,12 @@ class VerilogFile(SourceFile):
             text = f.readlines()
         except UnicodeDecodeError:
             return []
-        include_pattern = re.compile("^[     ]*`include[     ]+\"([^ \"]+)\".*$")
+        include_pattern = re.compile("^[ \t]*`include[ \t]+\"([^ \"]+)\".*$")
         ret = []
         for line in text:
             #in Verilog and SV identifiers are case-sensitive
             m = re.match(include_pattern, line)
-            if m is None:
+            if m != None:
                 ret.append(m.group(1))
         f.close()
         return ret
@@ -365,21 +365,21 @@ class SourceFileSet(list):
                 for f in files:
                     if f not in self:
                         self.append(f)
-            except TypeError:  # single file, not a list
+            except:  # single file, not a list
                 if files not in self:
                     self.append(files)
 
-    def filter(self, src_file_type):
+    def filter(self, type):
         out = SourceFileSet()
         for f in self:
-            if isinstance(f, src_file_type):
+            if isinstance(f, type):
                 out.add(f)
         return out
 
-    def inversed_filter(self, src_file_type):
+    def inversed_filter(self, type):
         out = SourceFileSet()
         for f in self:
-            if not isinstance(f, src_file_type):
+            if not isinstance(f, type):
                 out.add(f)
         return out
 
diff --git a/src/vlog_parser.py b/src/vlog_parser.py
index b6497239a2b836e8d2419975b5bec90d128d8399..ca606491fd2d642df2f983ea0fb73bbe25c0b937 100644
--- a/src/vlog_parser.py
+++ b/src/vlog_parser.py
@@ -6,234 +6,234 @@
 class VerilogPreprocessor:
 
 # Reserved verilog preprocessor keywords. The list is certainly not full
-    vpp_keywords = [ "define", "line", "include", "elsif", "ifdef", "endif", "else", "undef", "timescale" ]
+	vpp_keywords = [ "define", "line", "include", "elsif", "ifdef", "endif", "else", "undef", "timescale" ];
 
 # List of `include search paths
-    vpp_searchdir = ["."]
+	vpp_searchdir = ["."];
 
 # List of macro definitions
-    vpp_macros = []
+	vpp_macros = [];
 
 # Dictionary of files sub-included by each file parsed
-    vpp_filedeps = {}
+	vpp_filedeps = {}
 
   # Verilog `define class
-    class VL_Define:
-        def __init__(self, name, args, expansion):
-            self.name = name
-            self.args = args
-            self.expansion = expansion
-        
-    # Simple binary stack, for nested `ifdefs    evaluation
-    class VL_Stack:
-        def __init__(self):
-            self.stack = []
-        
-        def push(self, v):
-            self.stack.append(v)
-        
-        def pop(self):
-            return self.stack.pop()
-            
-        def all_true(self):
-            return (len(self.stack)==0 or all(self.stack))
-    
-        def flip(self):
-            self.push(not self.pop())
-    
-    def __init__(self):
-        self.vpp_stack = self.VL_Stack()
-
-    def find_macro(self, name):
-        for m in self.vpp_macros:
-            if(m.name == name):
-                return m
-        return None
-    
-    def comment_remover(self, s):
-        def replacer(match):
-            s = match.group(0)
-            if s.startswith('/'):
-                return ""
-            else:
-                return s
-        import re
-        pattern = re.compile('//.*?$|/\*.*?\*/|"(?:\\.|[^\\"])*"', re.DOTALL | re.MULTILINE )
-        return re.sub(pattern, replacer, s)
-
-    def degapize(self, s):
-        import re
-        lempty=re.compile("^\s*$")
-        cline = None
-        lines=[]
-        for l in s.splitlines(False):
-            if re.match(lempty, l) is None:
-                continue
-            if l.endswith('\\'):
-                if cline==None:
-                    cline=""
-                cline += l[:len(l)-1]
-                continue
-            elif cline:
-                l = cline+l
-                cline = None
-            else:
-                cline=None
-            lines.append(l)
-        return lines
-            
-    def search_include(self, filename, parent_dir=None):
-        import os
-#        print("Parent Dir %s" % parent_dir)
-        n = parent_dir+"/"+filename
-        if(os.path.isfile(n)):
-            return n
-        for prefix in self.vpp_searchdir:
-            n = prefix+"/"+filename
-            if(os.path.isfile(n)):
-                return n
-        raise Exception("Can't find %s in any of the include directories" % filename)
-
-    def parse_macro_def(self, m):
-        import re
-
-        name=m.group(1)
-        expansion=m.group(3)
-        if(m.group(2)):
-            params = m.group(2).split(",")
-        else:
-            params = []
-        if name in self.vpp_keywords:
-            raise Exception("Attempt to `define a reserved preprocessor keyword")
-        mdef=self.VL_Define(name, params, expansion)
-        self.vpp_macros.append(mdef)
-        return mdef
-
-    def preprocess_buf(self, buf, cur_file_name):
-        
-        import re
-
-        exps = { "include" : re.compile("^\s*`include\s+\"(.+)\""),    
-                         "define" : re.compile("^\s*`define\s+(\w+)(?:\(([\w\s,]*)\))?(.*)"),    
-                         "ifdef_elsif" : re.compile("^\s*`(ifdef|ifndef|elsif)\s+(\w+)\s*$"),    
-                       "endif_else" : re.compile("^\s*`(endif|else)\s*$") }
-
-        vl_macro_expand = re.compile("`(\w+)(?:\(([\w\s,]*)\))?") 
-
-        cur_iter = 0
-
-#        print("PP %s" %cur_file_name)
-#        print("BUF '%s'" %buf)
-        while True:
-            n_expansions = 0
-            new_buf = ""
-            cur_iter=cur_iter+1
-            if(cur_iter > 30):
-                raise Exception("Recursion level exceeded. Nested `includes?")
-            nc= self.comment_remover(buf)
-            for l in self.degapize(nc):
-#                print("LL : '%s'" % l)
-                matches = {}
-                last = None
-                for k in exps.iterkeys():
-                    matches[k] = re.match(exps[k], l)
-                    if(matches[k]):
-                        last = matches[k]
-            
-                if matches ["ifdef_elsif"]:
-                    cond_true = self.find_macro(last.group(2)) is None
-                    if(last.group(1)=="ifndef"):
-                        cond_true = not cond_true
-    # fixme: support `elsif construct
-                    elif(last.group(1)=="elsif"):
-                        self.vpp_stack.pop()
-                    self.vpp_stack.push(cond_true)
-
-                    continue
-                elif matches ["endif_else"]:
-                    if(last.group(1) == "endif"):
-                        self.vpp_stack.pop()
-                    else: # `else
-                        self.vpp_stack.flip()
-                    continue
-            
-                if not self.vpp_stack.all_true():
-                    continue
-            
-                if matches["include"]:
-                    import os
-                    path = self.search_include(last.group(1), os.path.dirname(cur_file_name))
-                    parsed= self.preprocess_buf(open(path,"r").read(), path)
-                    print("Parsed cur %s inc %s" % (cur_file_name, path))
-#                    print("IncBuf '%s'" % parsed)
-                    new_buf += parsed
-                    if(cur_file_name in self.vpp_filedeps.iterkeys()):
-#                        self.vpp_filedeps[cur_file_name].append(path)
-                        pass
-                    else:
-#                        pass
-                        self.vpp_filedeps[cur_file_name] = [path]
-                    
-                    continue
-                elif matches ["define"]:
-                    macro = self.parse_macro_def(last)
-                    continue
-                global n_repl
-                n_repl=0
-# the actual macro expansions (no args/vargs support yet, though)            
-                def do_expand(what):
-                    global n_repl
-#                    print("Expand %s" % what.group(1))
-                    if what.group(1) in self.vpp_keywords:
-#                        print("GotReserved")
-                        return '`'+what.group(1)
-                    m=self.find_macro(what.group(1))
-                    if m:
-                        n_repl += 1
-                        return m.expansion
-                    else:
-                        print("ERROR: No expansion for macro '`%s'\n" % what.group(1))
-                        pass
-                        #print("ignoring macro: %s" % what.group(1)) 
-
-                l=re.sub(vl_macro_expand, do_expand, l)
-                n_expansions+=n_repl
-                new_buf+=l+"\n"
-            if(n_expansions==0):
-                return new_buf
-            buf=new_buf
-
-    def define(self, name, expansion):
-        mdef=self.VL_Define(name, [], expansion)
-        self.vpp_macros.append(mdef)
-
-    def add_path(self, path):
-        self.vpp_searchdir.append(path)
-            
-    def preprocess(self, filename):
-        self.filename= filename
-        buf = open(filename,"r").read()
-        return self.preprocess_buf(buf, filename)
-
-    def find_first(self, f, l):
-        x=filter(f, l)
-        if x is None:
-            return x[0]
-        else:
-            return None
-
-    def get_file_deps(self):
-        deps=[]
-        for fs in self.vpp_filedeps.iterkeys():
-            for f in self.vpp_filedeps[fs]: 
-                deps.append(f)
-        return list(set(deps))
-            
+	class VL_Define:
+		def __init__(self, name, args, expansion):
+			self.name = name
+			self.args = args
+			self.expansion = expansion
+		
+	# Simple binary stack, for nested `ifdefs	evaluation
+	class VL_Stack:
+		def __init__(self):
+			self.stack = [];
+		
+		def push(self, v):
+			self.stack.append(v);
+		
+		def pop(self):
+			return self.stack.pop()
+			
+		def all_true(self):
+			return (len(self.stack)==0 or all(self.stack))
+	
+		def flip(self):
+			self.push(not self.pop())
+	
+	def __init__(self):
+		self.vpp_stack = self.VL_Stack();
+
+	def find_macro(self, name):
+		for m in self.vpp_macros:
+			if(m.name == name):
+				return m
+		return None
+	
+	def comment_remover(self, s):
+		def replacer(match):
+			s = match.group(0)
+			if s.startswith('/'):
+				return ""
+			else:
+				return s
+		import re
+		pattern = re.compile('//.*?$|/\*.*?\*/|"(?:\\.|[^\\"])*"', re.DOTALL | re.MULTILINE )
+		return re.sub(pattern, replacer, s)
+
+	def degapize(self, s):
+		import re
+		lempty=re.compile("^\s*$")
+		cline = None;
+		lines=[]
+		for l in s.splitlines(False):
+			if re.match(lempty, l) != None:
+				continue
+			if l.endswith('\\'):
+				if cline==None:
+					cline=""
+				cline += l[:len(l)-1]
+				continue
+			elif cline:
+				l = cline+l
+				cline = None
+			else:
+				cline=None
+			lines.append(l)
+		return lines
+			
+	def search_include(self, filename, parent_dir=None):
+		import os
+#		print("Parent Dir %s" % parent_dir)
+		n = parent_dir+"/"+filename
+		if(os.path.isfile(n)):
+			return n
+		for prefix in self.vpp_searchdir:
+			n = prefix+"/"+filename
+			if(os.path.isfile(n)):
+				return n
+		raise Exception("Can't find %s in any of the include directories" % filename)
+
+	def parse_macro_def(self, m):
+		import re
+
+		name=m.group(1)
+		expansion=m.group(3)
+		if(m.group(2)):
+			params = m.group(2).split(",")
+		else:
+			params = []
+		if name in self.vpp_keywords:
+			raise Exception("Attempt to `define a reserved preprocessor keyword")
+		mdef=self.VL_Define(name, params, expansion)
+		self.vpp_macros.append(mdef)
+		return mdef
+
+	def preprocess_buf(self, buf, cur_file_name):
+		
+		import re
+
+		exps = { "include" : re.compile("^\s*`include\s+\"(.+)\""),	
+						 "define" : re.compile("^\s*`define\s+(\w+)(?:\(([\w\s,]*)\))?(.*)"),	
+						 "ifdef_elsif" : re.compile("^\s*`(ifdef|ifndef|elsif)\s+(\w+)\s*$"),	
+					   "endif_else" : re.compile("^\s*`(endif|else)\s*$") }
+
+		vl_macro_expand = re.compile("`(\w+)(?:\(([\w\s,]*)\))?") 
+
+		cur_iter = 0
+
+#		print("PP %s" %cur_file_name)
+#		print("BUF '%s'" %buf)
+		while True:
+			n_expansions = 0
+			new_buf = ""
+			cur_iter=cur_iter+1
+			if(cur_iter > 30):
+				raise Exception("Recursion level exceeded. Nested `includes?")
+			nc= self.comment_remover(buf)
+			for l in self.degapize(nc):
+#				print("LL : '%s'" % l)
+				matches = {}
+				last = None
+				for k in exps.iterkeys():
+					matches[k] = re.match(exps[k], l)
+					if(matches[k]):
+						last = matches[k]
+			
+				if matches ["ifdef_elsif"]:
+					cond_true = self.find_macro(last.group(2)) != None
+					if(last.group(1)=="ifndef"):
+						cond_true = not cond_true;
+	# fixme: support `elsif construct
+					elif(last.group(1)=="elsif"):
+						self.vpp_stack.pop()
+					self.vpp_stack.push(cond_true)
+
+					continue
+				elif matches ["endif_else"]:
+					if(last.group(1) == "endif"):
+						self.vpp_stack.pop()
+					else: # `else
+						self.vpp_stack.flip()
+					continue
+			
+				if not self.vpp_stack.all_true():
+					continue
+			
+				if matches["include"]:
+					import os
+					path = self.search_include(last.group(1), os.path.dirname(cur_file_name))
+					parsed= self.preprocess_buf(open(path,"r").read(), path)
+					print("Parsed cur %s inc %s" % (cur_file_name, path))
+#					print("IncBuf '%s'" % parsed)
+					new_buf += parsed
+					if(cur_file_name in self.vpp_filedeps.iterkeys()):
+#						self.vpp_filedeps[cur_file_name].append(path)
+						pass
+					else:
+#						pass
+						self.vpp_filedeps[cur_file_name] = [path]
+					
+					continue
+				elif matches ["define"]:
+					macro = self.parse_macro_def(last)
+					continue
+				global n_repl
+				n_repl=0
+# the actual macro expansions (no args/vargs support yet, though)			
+				def do_expand(what):
+					global n_repl
+#					print("Expand %s" % what.group(1))
+					if what.group(1) in self.vpp_keywords:
+#						print("GotReserved")
+						return '`'+what.group(1)
+					m=self.find_macro(what.group(1))
+					if m:
+						n_repl += 1
+						return m.expansion
+					else:
+						print("ERROR: No expansion for macro '`%s'\n" % what.group(1))
+						pass
+						#print("ignoring macro: %s" % what.group(1)) 
+
+				l=re.sub(vl_macro_expand, do_expand, l)
+				n_expansions+=n_repl
+				new_buf+=l+"\n"
+			if(n_expansions==0):
+				return new_buf
+			buf=new_buf
+
+	def define(self, name, expansion):
+		mdef=self.VL_Define(name, [], expansion)
+		self.vpp_macros.append(mdef)
+
+	def add_path(self, path):
+		self.vpp_searchdir.append(path)
+			
+	def preprocess(self, filename):
+		self.filename= filename
+		buf = open(filename,"r").read()
+		return self.preprocess_buf(buf, filename)
+
+	def find_first(self, f, l):
+		x=filter(f, l)
+		if x != None:
+			return x[0]
+		else:
+			return None
+
+	def get_file_deps(self):
+		deps=[]
+		for fs in self.vpp_filedeps.iterkeys():
+			for f in self.vpp_filedeps[fs]: 
+				deps.append(f)
+		return list(set(deps))
+			
 from new_dep_solver import DepRelation, DepFile
 
 class VerilogParser:
 
-    reserved_words = ["accept_on",
+	reserved_words = ["accept_on",
 "alias",
 "always",
 "always_comb",
@@ -476,73 +476,73 @@ class VerilogParser:
 "xor"]
 
 
-    def __init__(self):
-        self.preproc = VerilogPreprocessor()
-
-    def add_search_path(self, path):
-        self.preproc.add_path(path)
-
-    def remove_procedural_blocks(self, buf):
-        buf = buf.replace("("," ( ")
-        buf = buf.replace(")"," ) ")
-        block_level = 0
-        paren_level = 0
-        buf2 = ""
-        prev_block_level = 0
-        prev_paren_level = 0
-        
-        for word in buf.split():
-            drop_last = False
-            
-            if(word == "begin"):
-                block_level += 1
-            elif (word == "end"):
-                drop_last = True
-                block_level -= 1
-    
-            if(block_level > 0 and not drop_last):
-                if (word == "("):
-                    paren_level += 1
-                elif (word == ")"):
-                    paren_level -= 1
-                    drop_last = True
-            
-#            print("w %s b %d p %d" % (word, block_level, paren_level))
-            if(drop_last):
-                buf2 += ""
-            if(not block_level and not paren_level and not drop_last):
-                buf2 += word + " "
-        
-        return buf2
-    
-    
-    
-
-    def parse(self, f_deps, filename):
-        import copy
-        buf= self.preproc.preprocess(filename)
-        f=open("preproc.v","w")
-        f.write(buf)
-        f.close()
-        self.preprocessed = copy.copy(buf)
-        includes = self.preproc.get_file_deps()
-
-        import re
-        m_inside_module = re.compile("(?:module|interface)\s+(\w+)\s*(?:\(.*?\))?\s*(.+?)(?:endmodule|endinterface)",re.DOTALL | re.MULTILINE)
-        m_instantiation = re.compile("(?:\A|\\s*)\s*(\w+)\s+(?:#\s*\(.*?\)\s*)?(\w+)\s*\(.*?\)\s*", re.DOTALL | re.MULTILINE)
-
-        def do_module(s):
-#            print("module %s" %s.group(1))
-            f_deps.add_relation(DepRelation(s.group(1), DepRelation.PROVIDE, DepRelation.ENTITY))
-            def do_inst(s):
-                mod_name = s.group(1)
-                if(mod_name in self.reserved_words):
-                    return
-#                print("-> instantiates %s as %s" % (s.group(1), s.group(2)))
-                f_deps.add_relation(DepRelation(s.group(1), DepRelation.USE, DepRelation.ENTITY))
-            re.subn(m_instantiation, do_inst, s.group(2))
-        re.subn(m_inside_module, do_module,  buf)
-
-        for f in self.preproc.vpp_filedeps:
-            f_deps.add_relation(DepRelation(f, DepRelation.USE, DepRelation.INCLUDE))
-        f_deps.add_relation(DepRelation(filename, DepRelation.PROVIDE, DepRelation.INCLUDE))
+	def __init__(self):
+		self.preproc = VerilogPreprocessor()
+
+	def add_search_path(self, path):
+		self.preproc.add_path(path)
+
+	def remove_procedural_blocks(self, buf):
+		buf = buf.replace("("," ( ")
+		buf = buf.replace(")"," ) ")
+		block_level = 0
+		paren_level = 0
+		buf2 = ""
+		prev_block_level = 0
+		prev_paren_level = 0
+		
+		for word in buf.split():
+			drop_last = False
+			
+			if(word == "begin"):
+				block_level += 1
+			elif (word == "end"):
+				drop_last = True
+				block_level -= 1
+	
+			if(block_level > 0 and not drop_last):
+				if (word == "("):
+					paren_level += 1
+				elif (word == ")"):
+					paren_level -= 1
+					drop_last = True
+			
+#			print("w %s b %d p %d" % (word, block_level, paren_level))
+			if(drop_last):
+				buf2 += ";";
+			if(not block_level and not paren_level and not drop_last):
+				buf2 += word + " ";
+		
+		return buf2
+	
+	
+	
+
+	def parse(self, f_deps, filename):
+		import copy
+		buf= self.preproc.preprocess(filename)
+		f=open("preproc.v","w")
+		f.write(buf);
+		f.close()
+		self.preprocessed = copy.copy(buf)
+		includes = self.preproc.get_file_deps()
+
+		import re
+		m_inside_module = re.compile("(?:module|interface)\s+(\w+)\s*(?:\(.*?\))?\s*;(.+?)(?:endmodule|endinterface)",re.DOTALL | re.MULTILINE)
+		m_instantiation = re.compile("(?:\A|\;\s*)\s*(\w+)\s+(?:#\s*\(.*?\)\s*)?(\w+)\s*\(.*?\)\s*", re.DOTALL | re.MULTILINE)
+
+		def do_module(s):
+#			print("module %s" %s.group(1))
+			f_deps.add_relation(DepRelation(s.group(1), DepRelation.PROVIDE, DepRelation.ENTITY))
+			def do_inst(s):
+				mod_name = s.group(1)
+				if(mod_name in self.reserved_words):
+					return
+#				print("-> instantiates %s as %s" % (s.group(1), s.group(2)))
+				f_deps.add_relation(DepRelation(s.group(1), DepRelation.USE, DepRelation.ENTITY))
+			re.subn(m_instantiation, do_inst, s.group(2))
+		re.subn(m_inside_module, do_module,  buf)
+
+		for f in self.preproc.vpp_filedeps:
+			f_deps.add_relation(DepRelation(f, DepRelation.USE, DepRelation.INCLUDE))
+		f_deps.add_relation(DepRelation(filename, DepRelation.PROVIDE, DepRelation.INCLUDE))