diff --git a/CMakeLists.txt b/CMakeLists.txt
index fafa1ea..0e8cdb1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,8 +2,8 @@
 cmake_minimum_required (VERSION 2.8)
 # 2.8 needed because of ExternalProject
 
-add_subdirectory(third_party/flatbuffers)
-add_subdirectory(third_party/antlr4/runtime/Cpp)
+add_subdirectory(third_party/flatbuffers EXCLUDE_FROM_ALL)
+add_subdirectory(third_party/antlr4/runtime/Cpp EXCLUDE_FROM_ALL)
 
 FIND_PACKAGE(SWIG REQUIRED)
 
@@ -47,6 +47,11 @@
 message(STATUS "PYTHON_EXECUTABLE = ${PYTHON_EXECUTABLE}")
 message(STATUS "PYTHON_INCLUDE_DIRS = ${PYTHON_INCLUDE_DIRS}")
 
+# Directories
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/dist/${CMAKE_BUILD_TYPE}/)
+set(CMAKE_BUILD_FILES_DIRECTORY ${dir})
+set(CMAKE_BUILD_DIRECTORY ${dir})
+
 # C++
 set(CMAKE_CXX_FLAGS                  "${CMAKE_CXX_FLAGS} ${MY_CXX_WARNING_FLAGS}")
 set(CMAKE_CXX_FLAGS_DEBUG          "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g ${MY_CXX_WARNING_FLAGS}")
@@ -78,7 +83,6 @@
 endif ()
 
 # Flatbuffer
-
 set(flatbuffer-GENERATED_SRC
   ${PROJECT_SOURCE_DIR}/src/Cache/header_generated.h
   ${PROJECT_SOURCE_DIR}/src/Cache/parser_generated.h
@@ -106,11 +110,11 @@
 find_package(Java)
 find_package(Java COMPONENTS Runtime)
 set(ANTLR_JAR_LOCATION ${PROJECT_SOURCE_DIR}/third_party/antlr4/antlr4-4.7.2-complete.jar)
-#
 
 enable_testing()
 #add_test(NAME GenerateFromGrammar COMMAND ${Java_JAVA_EXECUTABLE}  org.antlr.v4.Tool -Dlanguage=Cpp *.g4)
 
+add_custom_target(CreateDirectories)
 
 add_custom_target(GenerateParser DEPENDS ${PROJECT_SOURCE_DIR}/src/SourceCompile/VObjectTypes.cpp)
 add_custom_command(OUTPUT ${PROJECT_SOURCE_DIR}/src/SourceCompile/VObjectTypes.cpp
@@ -122,12 +126,7 @@
   COMMAND API/embed_python_api.tcl
   WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/src/"
   DEPENDS ${PROJECT_SOURCE_DIR}/grammar/SV3_1aPpLexer.g4 ${PROJECT_SOURCE_DIR}/grammar/SV3_1aSplitterLexer.g4 ${PROJECT_SOURCE_DIR}/grammar/SV3_1aPpParser.g4 ${PROJECT_SOURCE_DIR}/grammar/SV3_1aSplitterParser.g4 ${PROJECT_SOURCE_DIR}/src/API/slapi.i
-   )
-
-set(CMAKE_BUILD_FILES_DIRECTORY ${dir})
-set(CMAKE_BUILD_DIRECTORY ${dir})
-
-set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../dist/${CMAKE_BUILD_TYPE}/GNU-Linux/ )
+ )
 
 include_directories(
   ${PROJECT_SOURCE_DIR}/src/API
@@ -148,7 +147,6 @@
 )
 
 file(GLOB surelog_SRC
-
   ${PROJECT_SOURCE_DIR}/src/parser/SV3_1aLexer.cpp
   ${PROJECT_SOURCE_DIR}/src/parser/SV3_1aParserBaseListener.cpp
   ${PROJECT_SOURCE_DIR}/src/parser/SV3_1aParser.cpp
@@ -195,21 +193,46 @@
   )
 
 add_executable(surelog ${surelog_SRC})
+
 add_dependencies(surelog flatc)
 add_dependencies(surelog antlr4_static)
 add_dependencies(surelog flatbuffers)
-
 add_dependencies(surelog GenerateParser)
 add_dependencies(surelog GenerateSerializer)
 
 target_link_libraries(
   surelog ${PYTHON_LIBRARIES}
-  )
-
-#target_link_libraries(
-#  surelog  ${ANTLR_LIB}
-#)
+ )
 
 target_link_libraries(
   surelog -L${PROJECT_SOURCE_DIR}/dist/ libantlr4-runtime.a -L${PROJECT_SOURCE_DIR}/build/third_party/flatbuffers libflatbuffers.a dl util m rt pthread
 )
+
+add_custom_command(TARGET surelog POST_BUILD
+  COMMAND echo "       Creating staging for precompiled packages"
+  COMMAND mkdir -p ${CMAKE_BINARY_DIR}/dist/${CMAKE_BUILD_TYPE}/sv
+  COMMAND mkdir -p ${CMAKE_BINARY_DIR}/dist/${CMAKE_BUILD_TYPE}/python
+  COMMAND cp -f ${CMAKE_BINARY_DIR}/../src/API/builtin.sv ${CMAKE_BINARY_DIR}/dist/${CMAKE_BUILD_TYPE}/sv
+  COMMAND ln -fs ${CMAKE_BINARY_DIR}/../third_party/UVM/ovm-2.1.2  ovm-2.1.2
+  COMMAND ln -fs ${CMAKE_BINARY_DIR}/../third_party/UVM/uvm-1.2    uvm-1.2
+  COMMAND ln -fs ${CMAKE_BINARY_DIR}/../third_party/UVM/vmm-1.1.1a vmm-1.1.1a
+  COMMAND rm -rf slpp_all slpp_unit
+  COMMAND cp -f ${CMAKE_BINARY_DIR}/../src/API/slSV3_1aPythonListener.py ${CMAKE_BINARY_DIR}/dist/${CMAKE_BUILD_TYPE}/python/
+  COMMAND cp -f ${CMAKE_BINARY_DIR}/../src/API/slformatmsg.py ${CMAKE_BINARY_DIR}/dist/${CMAKE_BUILD_TYPE}/python/slformatmsg.py
+  COMMAND cp -f ${CMAKE_BINARY_DIR}/../src/API/slwaivers.py ${CMAKE_BINARY_DIR}/dist/${CMAKE_BUILD_TYPE}/python/
+  COMMAND echo "       Creating OVM precompiled package..."
+  COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/surelog -nobuiltin -createcache +incdir+ovm-2.1.2/src/ +incdir+vmm-1.1.1a/sv ovm-2.1.2/src/ovm_pkg.sv -writepp  -mt 0 -parse -nocomp -noelab -nostdout
+  COMMAND echo "       Creating UVM precompiled package..."
+  COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/surelog -nobuiltin -createcache +incdir+.+uvm-1.2/src/ uvm-1.2/src/uvm_pkg.sv -writepp   -mt 0 -parse -nocomp -noelab -nostdout
+  COMMAND echo "       Packages created"
+
+  WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
+ )
+
+
+
+
+INSTALL( 
+  TARGETS surelog
+  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+)
diff --git a/Makefile b/Makefile
index 8e2017f..318d1a9 100644
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,9 @@
 release:
 	mkdir -p build/tests;
+	mkdir -p build/dist;
 	mkdir -p dist;
-	cd build; cmake ../ -DCMAKE_BUILD_TYPE=Release; make -j 4
-	cd build; ../src/release.tcl release show_diff
-	cd build; ../tests/regression.tcl mt=0
+	cd build; cmake ../ -DCMAKE_BUILD_TYPE=Release; make -j 4 
+	cd build; ../tests/regression.tcl mt=0 show_diff
 
 test:
 	mkdir -p build/tests;
@@ -12,3 +12,7 @@
 clean:
 	rm -rf build;
 	chmod -fR u+rwx dist; rm -rf dist;
+
+install:
+	cd build; make install
+
diff --git a/README.md b/README.md
index 90efabe..ff19cb8 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@
 
 # Contributing to this project
 
-This project is open to contributions from any user! From the commercial vendor to the Verilog enthousiast are welcome.
+This project is open to contributions from any users! From the commercial vendor to the Verilog enthousiast, all are welcome.
 
 # Features
 
@@ -21,6 +21,11 @@
  * Surelog accepts IEEE Simulator-compliant project specification.
  * Surelog issues Errors/Warning/Info/Notes about language compliance.
  * Surelog allows for pre-compiled packages (UVM,...).
+ * A comprehensive Python API allows to:
+    * listen or visit the Parser grammar and create custom linting rules
+    * Visit the design data model and create custom linting rules
+    * Customize the message formats
+    * Waive messages
 
 # Build instructions and test: 
 
@@ -41,7 +46,7 @@
    * -f <file>             Accepts a file containing command line arguments
    * -v <file>             Library file
    * -y <path>             Library directory
-   * +incdir+<dir>+...     Specifies include paths
+   * +incdir+<dir>[+<dir>...]  Specifies include paths
    * -Idir                 Specifies include paths
    * +libext+<extname>+... Specifies the library extensions
    * <file>.v              Verilog File
@@ -50,7 +55,7 @@
    * +librescan            Lib Rescan option (ignored)
    * +libverbose           Lib Verbose option (ignored)
    * +nolibcell            No Lib Cell option (ignored)
-   * +define+macro_name=definition+...
+   * +define+name=value[+name=value...]
    *                      Defines a macro and optionally its value
    * -L <libName>          Defines library compilation order
    * -map <mapFile>        Specifies a library mapping file (multiple -map options supported)
@@ -105,5 +110,6 @@
    * -nonote               Filters out NOTE messages
    * -nowarning            Filters out WARNING messages
    * -o <path>             Turns on all compilation stages, produces all outputs under that path
-
+   * --help                This help 
+   * --version             Surelog version and build date
 
diff --git a/src/API/PythonAPI.cpp b/src/API/PythonAPI.cpp
index 4fdfca3..90ee59c 100644
--- a/src/API/PythonAPI.cpp
+++ b/src/API/PythonAPI.cpp
@@ -147,7 +147,7 @@
   PyRun_SimpleString(
       std::string("sys.path.append(\"" + m_programPath + "\")").c_str());
 
-  std::string waivers = m_programPath + "/../python/slwaivers.py";
+  std::string waivers = m_programPath + "/python/slwaivers.py";
   bool waiverLoaded = loadScript_(waivers);
 
   const char* home = getenv("HOME");
@@ -159,7 +159,7 @@
   waivers = "./slwaivers.py";
   waiverLoaded = loadScript_(waivers) || waiverLoaded;
 
-  std::string format = m_programPath + "/../python/slformatmsg.py";
+  std::string format = m_programPath + "/python/slformatmsg.py";
   bool messageFormatLoaded = loadScript_(format);
 
   if (home) {
@@ -178,7 +178,7 @@
 
   if (!m_listenerLoaded) {
     std::string listener =
-        m_programPath + "/../python/slSV3_1aPythonListener.py";
+        m_programPath + "/python/slSV3_1aPythonListener.py";
     if (FileUtils::fileExists(listener)) m_listenerScript = listener;
     m_listenerLoaded = loadScript_(listener);
 
diff --git a/src/CommandLine/CommandLineParser.cpp b/src/CommandLine/CommandLineParser.cpp
index ab0af8c..b5f57d5 100644
--- a/src/CommandLine/CommandLineParser.cpp
+++ b/src/CommandLine/CommandLineParser.cpp
@@ -354,7 +354,7 @@
   std::string exe_name = argv[0];
   std::string exe_path = FileUtils::getPathName(exe_name);
   m_precompiledDirId = m_symbolTable->registerSymbol(exe_path + "pkg/");
-  std::string built_in_verilog = exe_path + "../sv/builtin.sv";
+  std::string built_in_verilog = exe_path + "/sv/builtin.sv";
   std::vector<std::string> all_arguments;
   std::vector<std::string> cmd_line;
   for (int i = 1; i < argc; i++) {
diff --git a/src/release.tcl b/src/release.tcl
deleted file mode 100755
index 4a6537f..0000000
--- a/src/release.tcl
+++ /dev/null
@@ -1,175 +0,0 @@
-#!/usr/bin/tclsh
-
-# Copyright 2019 Alain Dargelas
-#
-# 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.
-
-# Either creates all releases, or just the one passed as argument:
-#
-# ./release.tcl
-#
-# Or
-#
-# ./release.tcl "<build_type> <lib_type>"
-#
-# Ex.: ./release.tcl  release
-
-#  build_type: release, debug
-
-set RELEASES { "release" "debug" } 
-
-if {$argv != ""} {
-    set RELEASES $argv
-} 
-
-proc precompilePackages { } {
-    set source_file "../src/parser/SV3_1aParser.cpp"
-    set compiled_file "Release/GNU-Linux/pkg/work/uvm_pkg.sv.slpa"
-    set source_time 0
-    if [file exist $source_file] {
-	set source_time [file mtime $source_file]
-    }
-    set compiled_time 0
-    if [file exist $compiled_file] {
-	set compiled_time [file mtime $compiled_file]
-    }
-    exec sh -c "rm -rf Release/sv"
-    exec sh -c "mkdir -p Release/sv; cp ../src/API/builtin.sv Release/sv"
-    if {($compiled_time == 0) || ($source_time >= $compiled_time)} {
-	exec sh -c "rm -rf slpp_all"
-	exec sh -c "rm -rf slpp_unit"
-	exec sh -c "rm -rf dist/slpp_all"
-	exec sh -c "rm -rf dist/slpp_unit"
-	exec sh -c "rm -rf Release/GNU-Linux/pkg/work/"
-	exec sh -c "rm -f ovm-2.1.2 uvm-1.2 vmm-1.1.1a"
-	exec sh -c "ln -s ../third_party/UVM/ovm-2.1.2 ovm-2.1.2"
-	exec sh -c "ln -s ../third_party/UVM/uvm-1.2 uvm-1.2"
-	exec sh -c "ln -s ../third_party/UVM/vmm-1.1.1a vmm-1.1.1a"
-	puts "Precompiling ovm_pkg..."
-	puts "Begin: The time is: [clock format [clock seconds] -format %H:%M:%S]"
-	exec sh -c "Release/GNU-Linux/surelog -profile -createcache +incdir+ovm-2.1.2/src/ +incdir+vmm-1.1.1a/sv ovm-2.1.2/src/ovm_pkg.sv -writepp -verbose  -mt 0 -parse; cp slpp_all/surelog.log ovm_pkg.log" 
-	puts "End: The time is: [clock format [clock seconds] -format %H:%M:%S]"
-	puts "Precompiling uvm_pkg..."
-	puts "Begin: The time is: [clock format [clock seconds] -format %H:%M:%S]"
-	exec sh -c "Release/GNU-Linux/surelog -profile -createcache +incdir+.+uvm-1.2/src/ uvm-1.2/src/uvm_pkg.sv -writepp -verbose  -mt 0 -parse; cp slpp_all/surelog.log uvm_pkg.log" 
-	puts "End: The time is: [clock format [clock seconds] -format %H:%M:%S]"
-	
-    } else {
-	puts "Skipping ovm_pkg..."
-	puts "Skipping uvm_pkg..."
-
-    }
-    
-    catch {exec sh -c "cp -R -f Release/GNU-Linux/pkg/work Debug/GNU-Linux/pkg"} dummy
-}
-
-proc createReleases { } {
-    global RELEASES 
-    foreach release $RELEASES {
-	set build_type [lindex $release 0] 
-	set tar_filename "surelog_${build_type}"
-	catch {exec sh -c "chmod 777 -R surelog/"} dummy
-	exec sh -c "rm -rf surelog"
-	file mkdir surelog
-	file mkdir surelog/bin
-	file mkdir surelog/bin/pkg
-	file mkdir surelog/bin/pkg/work
-	file mkdir surelog/lib
-	file mkdir surelog/python
-	file mkdir surelog/sv
-	file copy  Release/GNU-Linux/pkg/work/uvm_pkg.sv.slpp surelog/bin/pkg/work
-	file copy  Release/GNU-Linux/pkg/work/uvm_pkg.sv.slpa surelog/bin/pkg/work
-	file copy  Release/GNU-Linux/pkg/work/ovm_pkg.sv.slpp surelog/bin/pkg/work
-	file copy  Release/GNU-Linux/pkg/work/ovm_pkg.sv.slpa surelog/bin/pkg/work
-	if {($build_type == "release")} {
-	    file copy Release/GNU-Linux/surelog surelog/bin/surelog.exe
-	    catch {exec sh -c "mkdir -p Release/python; cp ../src/API/slSV3_1aPythonListener.py Release/python"} dummy
-	    catch {exec sh -c "mkdir -p Release/sv; cp ../src/API/builtin.sv Release/sv"} dummy	   
-	} elseif {$build_type == "debug"}  {
-	    file copy Debug/GNU-Linux/surelog surelog/bin/surelog.exe
-	    catch {exec sh -c "mkdir -p Debug/python; cp ../src/API/slSV3_1aPythonListener.py Debug/python"} dummy
-	    catch {exec sh -c "mkdir -p Debug/sv; cp ../src/API/builtin.sv Debug/sv"} dummy
-	} else {
-	    puts "ERROR!!! UNSUPPORTED BUILD TYPE: $build_type"
-	    exit
-	}
-
-	catch {file copy /usr/lib/x86_64-linux-gnu/libtcmalloc.so.4 surelog/lib/} dummy
-	catch {file copy /usr/lib/x86_64-linux-gnu/libtcmalloc.so.4.2.6 surelog/lib/} dummy
-	catch {file copy /usr/lib/libtcmalloc.so.4 surelog/lib/} dummy
-	catch {file copy /usr/lib/libtcmalloc.so.4.2.6 surelog/lib/} dummy
-	
-	file copy ../src/API/slSV3_1aPythonListener.py surelog/python/
-	file copy ../src/API/slformatmsg.py surelog/python/slformatmsg.py
-	file copy ../src/API/slwaivers.py surelog/python/
-	file copy ../src/API/surelog.bash surelog/surelog
-	file copy ../src/API/yosys.tcl surelog/yosys.tcl
-	file copy ../src/API/builtin.sv surelog/sv
-	catch {set copy_result [file copy /usr/local/lib64/libstdc++.so.6.0.21 surelog/lib/libstdc++.so.6]} copy_result
-	catch {set copy_result [file copy /usr/local/lib64/libgcc_s.so.1 surelog/lib/]} copy_result
-	exec sh -c "chmod 555 -R surelog/"
-	
-	exec sh -c "tar cvzf ${tar_filename}.tar.gz surelog/"
-	puts "Created  dist/${tar_filename}.tar.gz"
-    }
-
-}
-
-proc testReleases { } {
-    global RELEASES 
-    foreach release $RELEASES {
-	set build_type [lindex $release 0] 
-	set tar_filename "surelog_${build_type}"
-
-	exec sh -c "chmod 777 -R surelog/"
-	exec sh -c "rm -rf surelog"
-
-	exec sh -c "tar xvzf ${tar_filename}.tar.gz"
-
-	catch {exec sh -c "chmod 777 -R surelog_test/"} dummy
-	exec sh -c "rm -rf surelog_test"
-	file mkdir surelog_test
-	file copy "../src/API/python_listener.py" "surelog_test/slSV3_1aPythonListener.py"
-	cd surelog_test
-	
-	set fid [open "test.v" "w"]
-	puts $fid "module toto();\
-                   `TOTO  \
-                   endmodule"
-	close $fid
-
-	catch {set result [exec sh -c "../surelog/surelog test.v -parse -pythonlistener"]} result
-	if {[regexp {PY0403} $result] && [regexp {module toto} $result]} {
-	    puts "PASS: $tar_filename"
-	} else {
-	    puts "FAIL: $tar_filename"
-	    puts "$result"
-	}
-
-	cd ..
-
-    }
-
-}
-
-cd ../dist
-
-precompilePackages
-
-createReleases 
-
-testReleases 
-
-cd ../build
-
-
diff --git a/tests/regression.tcl b/tests/regression.tcl
index d539de1..cbfc39e 100755
--- a/tests/regression.tcl
+++ b/tests/regression.tcl
@@ -20,8 +20,7 @@
     puts "regression.tcl tests=<testname>                  (Tests matching regular expression)"
     puts "               test=<testname>                   (Just that test)"
     puts "               debug=<none, valgrind, ddd>"
-    puts "               build=<debug, advanced, release, notcmalloc, undertow>"
-    puts "               commit=\"commit text\""
+    puts "               build=<Debug, Release>"
     puts "               mt=<nbThreads>"
     puts "               large                             (large tests too)"
     puts "               show_diff                         (Shows text diff)"
@@ -144,7 +143,7 @@
     set ONETEST $TESTTARGET
 }
 
-set BUILD "release"
+set BUILD "Release"
 if [regexp {build=([A-Za-z0-9_]+)} $argv tmp BUILD] {
 }
 
@@ -161,20 +160,11 @@
 if [regexp {commit=([A-Za-z0-9_ \.]+)} $argv tmp COMMIT_TEXT] {
 }
 
-set env(LD_LIBRARY_PATH) "[pwd]/../../python3.6/python/lib/"
-
-set SURELOG_VERSION "[pwd]/../dist/surelog/surelog"
+set SURELOG_VERSION "[pwd]/dist/Release/surelog"
 set REGRESSION_PATH [pwd]
 
 set SURELOG_COMMAND "$TIME $DEBUG_TOOL $SURELOG_VERSION"
 
-proc init_regression { } {
-    global BUILD
-    log "Creating release for regression..."
-    log [exec sh -c "../src/release.tcl \"$BUILD tcmalloc\""]
-    cd tests
-}
-
 proc findFiles { basedir pattern } {
 
     # Fix the directory name, this ensures the directory name is in the
@@ -205,7 +195,7 @@
 
 proc load_tests { } {
     global TESTS TESTS_DIR LONGESTTESTNAME TESTTARGET ONETEST LARGE_TESTS LONG_TESTS MT_MAX
-    set dirs "../../tests/ ../../third_party/tests/"
+    set dirs "../tests/ ../third_party/tests/"
     set fileLists ""
     foreach dir $dirs {
 	append fileList "[findFiles $dir *.sl] "
@@ -330,7 +320,7 @@
 	}
 
 	set testdir $TESTS_DIR($testname)
-	file mkdir $testname
+	file mkdir $REGRESSION_PATH/tests/$testname
 	set test $testname
 	set command $TESTS($testname)
 	regsub -all {\\} $command "" command
@@ -583,7 +573,6 @@
 log "$date"
 log "COMMAND: $SURELOG_COMMAND"
 
-init_regression
 load_tests
 set result [run_regression]
 
@@ -600,6 +589,8 @@
     log ""
 }
 
+cd $REGRESSION_PATH
+
 foreach testname [array names DIFF_TESTS] {
     set testdir $TESTS_DIR($testname)
     if {$SHOW_DIFF == 0} {
@@ -607,7 +598,7 @@
     } else {
 	log "============================== DIFF ======================================================"
 	log "diff $testdir/${testname}.log tests/$DIFF_TESTS($testname)/${testname}_diff.log"
-	catch {exec sh -c "diff -d $DIFF_TESTS($testdir)/${testname}.log tests/$DIFF_TESTS($testname)/${testname}_diff.log"} dummy
+	catch {exec sh -c "diff -d $testdir/${testname}.log tests/$DIFF_TESTS($testname)/${testname}_diff.log"} dummy
 	puts $dummy
     }
 }
