setup.py is automatically generated based on the version
diff --git a/scripts/packages/BUILD b/scripts/packages/BUILD
index 881d9b5..257b1f4 100644
--- a/scripts/packages/BUILD
+++ b/scripts/packages/BUILD
@@ -312,7 +312,7 @@
     name = "generate-pyheron-package",
     srcs = [
         "pyheron/requirements.txt", 
-        "pyheron/setup.py",
+        "pyheron/setup.py.template",
     ] + generated_release_files,
     outs = generated_pyheron_egg_file,
     stamp = 1,
@@ -326,6 +326,11 @@
         'echo $$TMP_DIR',
         'export PYHERON_DIR=$$TMP_DIR/pyheron',
         'export PYHERON_UNZIP=$$TMP_DIR/unzipped',
+        'export HERON_VERSION=$$(grep version $$RELEASE_FILE_DIR/$(location :release.yaml) | awk \'{print $$3}\')',
+        'export HERON_VERSION=$$(echo $$HERON_VERSION | sed -e "s/^\'//" -e "s/\'$$//")',
+        'export HERON_VERSION=$$(echo $$HERON_VERSION | grep "[0-9]*\.[0-9]*\.[0-9]*")',
+        'export HERON_VERSION=$$([[ -z $$HERON_VERSION ]] && echo "0.0.0" || echo $$HERON_VERSION)',
+        'echo $$HERON_VERSION',
         'mkdir -p $$TMP_DIR $$PYHERON_DIR',
         'unzip -qd $$PYHERON_UNZIP $(location //heron/pyheron/src/python:pyheron-package)',
         'find $$PYHERON_UNZIP -name "*.pyc" -exec rm {} \;',
@@ -333,12 +338,16 @@
         'rm -rf $$PYHERON_UNZIP/heron/pyheron',
         'mv $$PYHERON_UNZIP/heron $$PYHERON_DIR/heron',
         'cp $(SRCS) $$PYHERON_DIR',
-        'ls -l',
         'echo "PyHeron toplevel directory: $$PYHERON_DIR"',
         'cd $$PYHERON_DIR',
+        'sed "s/VERSION/$$HERON_VERSION/" setup.py.template > setup.py',
+        'rm setup.py.template',
+        'tree $$PYHERON_DIR',
+        '/usr/bin/env python2.7 setup.py sdist',
         '/usr/bin/env python2.7 setup.py bdist_wheel',
         'ls -l $$PYHERON_DIR/dist',
         'cp $$PYHERON_DIR/dist/pyheron-*-py2-*.whl $$OUTPUT_DIR',
+        'cp $$PYHERON_DIR/dist/pyheron-*.tar.gz $$OUTPUT_DIR',
         'touch $$OUTPUT_DIR/pyheron.whl',
         'rm -rf $$TMP_DIR',
     ]),
diff --git a/scripts/packages/pyheron/setup.py b/scripts/packages/pyheron/setup.py.template
similarity index 66%
rename from scripts/packages/pyheron/setup.py
rename to scripts/packages/pyheron/setup.py.template
index b509d42..c3548d7 100644
--- a/scripts/packages/pyheron/setup.py
+++ b/scripts/packages/pyheron/setup.py.template
@@ -3,28 +3,10 @@
 from setuptools import setup, find_packages
 
 package_name = "pyheron"
-dummy_release_version = "0.0.0"
+release_version = "VERSION"
 
 # read the requirements file
 here = os.path.abspath(os.path.dirname(__file__))
-
-# get the version from release yaml file
-release_yaml = os.path.join(here, 'release.yaml')
-with open(release_yaml, 'r') as f:
-  file_lines = f.readlines()
-  for line in file_lines:
-    split_line = line.strip().split(" : ")
-    if 'version' in split_line[0]:
-      version =  split_line[1].strip("'")
-release_version = version.replace("/", "_")
-print release_version
-
-# if it is being build out of a branch, we give 0.0.0 version
-if re.search('[a-zA-Z]', release_version):
-  release_version = dummy_release_version
-print release_version
-
-# read the requirements file
 requirement_file = os.path.join(here, 'requirements.txt')
 with open(requirement_file, 'r') as f:
   raw_requirements = f.read().strip()
@@ -45,7 +27,7 @@
 
   url='https://github.com/twitter/heron',
 
-  author='Heron Release Team',
+  author='Heron Team',
   author_email='heronstreaming@gmail.com',
 
   classifiers=[