diff --git a/VERSION b/VERSION
index fcdb2e1..05f4c08 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-4.0.0
+4.0.1-dev0
diff --git a/docs/.gitignore b/docs/.gitignore
index d1adcde..e67364c 100644
--- a/docs/.gitignore
+++ b/docs/.gitignore
@@ -1,2 +1,2 @@
 _book/
-venv-xosdocs
+venv_xosdocs
diff --git a/docs/Makefile b/docs/Makefile
index 86248c0..8888328 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -49,11 +49,15 @@
 
 swagger: swagger_clean swagger_docs swagger_serve_spec
 
-venv-xosdocs:
-	./venv-xosdocs.sh
+venv_xosdocs:
+	virtualenv -p python3 $@ ;\
+    source ./$@/bin/activate ;\
+    pip install --upgrade pip ;\
+    pip install -e ../lib/xos-genx
 
-swagger_docs: venv-xosdocs
-	bash -c 'source $(DOCSDIR)venv-xosdocs/bin/activate && python $(DOCSDIR)scripts/swagger_docs.py'
+swagger_docs: venv_xosdocs
+	source ./$</bin/activate ; set -u ;\
+    python $(DOCSDIR)scripts/swagger_docs.py
 
 swagger_clean:
 	rm -rf swagger/specs/*
diff --git a/docs/scripts/swagger_docs.py b/docs/scripts/swagger_docs.py
index 7a01bc7..f22d1c2 100644
--- a/docs/scripts/swagger_docs.py
+++ b/docs/scripts/swagger_docs.py
@@ -12,6 +12,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+from __future__ import print_function
+
 import os
 import traceback
 from xosgenx.generator import XOSProcessor, XOSProcessorArgs
@@ -23,13 +25,14 @@
 class Args:
     pass
 
+
 def generate_swagger_docs(xproto):
 
     # if not os.path.isfile(xproto):
     #     print "ERROR: Couldn't find xproto file for %s at: %s" % (service, xproto)
     #     return
 
-    print "Generating swagger docs for %s" % (xproto)
+    print("Generating swagger docs for %s" % (xproto))
     args = XOSProcessorArgs()
     args.files = xproto
     args.target = 'swagger.xtarget'
@@ -40,9 +43,10 @@
     try:
         XOSProcessor.process(args)
     except Exception:
-        print "ERROR: Couldn't generate swagger specs"
+        print("ERROR: Couldn't generate swagger specs")
         traceback.print_exc()
 
+
 def get_xproto_recursively(root):
     files = []
     items = os.listdir(root)
@@ -63,9 +67,7 @@
         elif os.path.isfile(item_abs_path) and ".xproto" in item_abs_path:
             files.append(item_abs_path)
 
-    protos = [f for f in files if "xproto" in f]
-
-    protos = sorted(protos)
+    protos = sorted([f for f in files if "xproto" in f])
 
     # remove the core xproto...
     core_proto = None
@@ -81,12 +83,6 @@
     return protos
 
 
-def main():
-
-    protos = get_xproto_recursively(REPO_DIR)
-
-    generate_swagger_docs(protos)
-
-
 if __name__ == '__main__':
-    main()
+    protos = get_xproto_recursively(REPO_DIR)
+    generate_swagger_docs(protos)
diff --git a/docs/venv-xosdocs.sh b/docs/venv-xosdocs.sh
deleted file mode 100755
index ca51fef..0000000
--- a/docs/venv-xosdocs.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env bash
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-set -e -o pipefail
-
-BASEDIR=$(pwd)
-VENVDIR=venv-xosdocs
-
-# create venv if it's not yet there
-if [ ! -d "$BASEDIR/$VENVDIR" ]; then
-  echo "Setting up virtualenv for XOS Swagger Docs"
-  virtualenv -q $BASEDIR/$VENVDIR --no-site-packages
-  source $BASEDIR/$VENVDIR/bin/activate
-  pip install --upgrade pip
-  echo "Virtualenv created."
-fi
-
-# activate the virtual env
-if [ ! $VIRTUAL_ENV ]; then
-  source $BASEDIR/$VENVDIR/bin/activate
-  echo "Virtualenv activated."
-fi
-
-# install pip packages
-pip install -e $BASEDIR/$VENVDIR/../../lib/xos-genx
diff --git a/lib/xos-genx/xosgenx/jinja2_extensions/base.py b/lib/xos-genx/xosgenx/jinja2_extensions/base.py
index 26564bb..5f24f40 100644
--- a/lib/xos-genx/xosgenx/jinja2_extensions/base.py
+++ b/lib/xos-genx/xosgenx/jinja2_extensions/base.py
@@ -482,7 +482,8 @@
         c_list = []
 
         for c in eval(xproto_unquote(f["options"]["choices"])):
-            c_list.append(c[0])
+            if c[0] is not None:
+                c_list.append(c[0])
 
         return sorted(c_list)
     else:
