diff --git a/git_utils.py b/git_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..4fdd83b230ece394285a60ec7ddb0c8e96b5809a
--- /dev/null
+++ b/git_utils.py
@@ -0,0 +1,97 @@
+'''
+Created on 28. jul. 2017
+
+@author: mmpe
+'''
+import os
+import subprocess
+
+
+def _run_git_cmd(cmd, git_repo_path=None):
+    git_repo_path = git_repo_path or os.getcwd()
+    if not os.path.isdir(os.path.join(git_repo_path, ".git")):
+        raise Warning("'%s' does not appear to be a Git repository." % git_repo_path)
+    try:
+        process = subprocess.Popen(cmd,
+                                   stdout=subprocess.PIPE,
+                                   stderr=subprocess.PIPE,
+                                   universal_newlines=True,
+                                   cwd=os.path.abspath(git_repo_path))
+        stdout, stderr = process.communicate()
+        if process.returncode != 0:
+            raise EnvironmentError("%s\n%s" % (stdout, stderr))
+        return stdout.strip()
+
+    except EnvironmentError as e:
+        raise e
+        raise Warning("unable to run git")
+
+
+def get_git_version(git_repo_path=None):
+    cmd = ["git", "describe", "--tags", "--dirty", "--always"]
+    return _run_git_cmd(cmd, git_repo_path)
+
+
+def get_tag(git_repo_path=None, verbose=False):
+    tag = _run_git_cmd(['git', 'describe', '--tags', '--always', '--abbrev=0'], git_repo_path)
+    if verbose:
+        print(tag)
+    return tag
+
+
+def set_tag(tag, push, git_repo_path=None):
+    _run_git_cmd(["git", "tag", tag], git_repo_path)
+    if push:
+        _run_git_cmd(["git", "push"], git_repo_path)
+        _run_git_cmd(["git", "push", "--tags"], git_repo_path)
+
+
+def update_git_version(version_module, git_repo_path=None):
+    """Update <version_module>.__version__ to git version"""
+
+    version_str = get_git_version(git_repo_path)
+    assert os.path.isfile(version_module.__file__)
+    with open(version_module.__file__, "w") as fid:
+        fid.write("__version__ = '%s'" % version_str)
+
+    # ensure file is written, closed and ready
+    with open(version_module.__file__) as fid:
+        fid.read()
+    return version_str
+
+
+def write_vers(vers_file='wetb/__init__.py', repo=None, skip_chars=1):
+    if not repo:
+        repo = os.getcwd()
+    version = get_tag(repo)[skip_chars:]
+    print('Writing version: {} in {}'.format(version, vers_file))
+    with open(vers_file, 'r') as f:
+        lines = f.readlines()
+    for n, l in enumerate(lines):
+        if l.startswith('__version__'):
+            lines[n] = "__version__ = '{}'\n".format(version)
+    for n, l in enumerate(lines):
+        if l.startswith('__release__'):
+            lines[n] = "__release__ = '{}'\n".format(version)
+    with open(vers_file, 'w') as f:
+        f.write(''.join(lines))
+    return version
+
+
+def rename_dist_file():
+    for f in os.listdir('dist'):
+        if f.endswith('whl'):
+            split = f.split('linux')
+            new_name = 'manylinux1'.join(split)
+            old_path = os.path.join('dist', f)
+            new_path = os.path.join('dist', new_name)
+            os.rename(old_path, new_path)
+
+
+def main():
+    """Example of how to run (pytest-friendly)"""
+    if __name__ == '__main__':
+        pass
+
+
+main()
diff --git a/setup.py b/setup.py
index 1a11e3207a41648bf67924350bf6175a0b7b782b..3b0d8ed48b55a6464071ce66aa192539b8e3232d 100644
--- a/setup.py
+++ b/setup.py
@@ -5,13 +5,17 @@ Setup file for Topfarm2
 
 
 import os
+from git_utils import write_vers
 from setuptools import setup, find_packages
 
+repo = os.path.dirname(__file__)
+version = write_vers(vers_file='topfarm/__init__.py', repo=repo, skip_chars=1)
+
 def read(fname):
     return open(os.path.join(os.path.dirname(__file__), fname)).read()
 
 setup(name='topfarm', 
-      version='2.0.3',  
+      version=version,  
       description='Topfarm - Wind farm optimization using OpenMDAO',
 	  long_description=read('README'),
       url='https://gitlab.windenergy.dtu.dk/TOPFARM/topfarm2',
diff --git a/topfarm/__init__.py b/topfarm/__init__.py
index 8270eabd0af814f719de8ae708a4d5e356813392..6b86a02f1512486a09e7b017f7be263cc073cdcc 100644
--- a/topfarm/__init__.py
+++ b/topfarm/__init__.py
@@ -1,8 +1,8 @@
 from ._topfarm import *
 from .deprectated_topfarm_problems import *
 
-__version__ = '2.0.3'
-__release__ = '2.0.3'
+__version__ = 'filled by setup.py'
+__release__ = 'filled by setup.py'
 
 
 x_key = 'x'