diff --git a/CMakeLists.txt b/CMakeLists.txt
index a73455b2975e55069cfa2936dc2f7d2fc6bd2375..36f53b7a0c99eaddfec821ad2c2027515da4cba6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,7 @@
 set(CMAKE_LEGACY_CYGWIN_WIN32 0)
 cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
 
-project(moose-core)
+project(pymoose)
 
 if(COMMAND cmake_policy)
     cmake_policy(SET CMP0003 NEW)
@@ -29,7 +29,7 @@ endif()
 # If from command line, version info is not passed, use the git to generate a
 # version file. If GIT fails, use the previous known version.
 if(NOT VERSION_MOOSE)
-    set(VERSION_MOOSE "3.2.0rc1-${GIT_HEAD}")
+    set(VERSION_MOOSE "3.2.0-${GIT_HEAD}")
 endif( )
 add_definitions( -DMOOSE_VERSION="${VERSION_MOOSE}")
 message( STATUS "MOOSE Version ${VERSION_MOOSE}" )
@@ -393,6 +393,7 @@ endif()
 ######################### BUILD PYMOOSE ########################################
 add_subdirectory( pymoose )
 
+
 ######################### INSTALL ##############################################
 
 if(DEBUG)
@@ -421,7 +422,9 @@ execute_process(
 message( STATUS "Platform ${_platform_desc}" )
 
 
-set(EXTRA_ARGS "--prefix ${CMAKE_INSTALL_PREFIX}")
+# DISTUTILS_EXTRA_ARGS may come of top-level cmake script. On DEBIAN/UBUNTU, it
+# is most likely to be --install-layout=deb .
+set(EXTRA_ARGS "--prefix ${CMAKE_INSTALL_PREFIX} ${DISTUTILS_EXTRA_ARGS}")
 
 # On Debian/Ubuntu install using debian layout
 if( ${_platform_desc} MATCHES ".*(Ubuntu|Debian).*" )
@@ -432,7 +435,7 @@ endif( )
 # --user to install in user home.
 install(CODE
     "execute_process(
-        COMMAND ${PYTHON_EXECUTABLE} setup.cmake.py install ${EXTRA_ARGS} ${PYMOOSE_EXTRA_INSTALL_ARGS}
+        COMMAND ${PYTHON_EXECUTABLE} setup.cmake.py install -f ${EXTRA_ARGS} ${PYMOOSE_EXTRA_INSTALL_ARGS}
         WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/python
         )"
         )
@@ -447,6 +450,33 @@ if(${CMAKE_BUILD_TOOL} MATCHES "make")
         )
 endif()
 
+# Target for creating bdist. This is handy for creating bdist for packaging.
+# Save the binary distribution (tar.gz) to PYMOOSE_BDIST_DIR. Note that this
+# target is only useful when creating packages on Open Build Service i.e. if you
+# use this target on distribution X, it may not work on distrbutions other than
+# X. See python-wheels for making portable distributions.
+if(NOT PYMOOSE_BDIST_DIR)
+    set(PYMOOSE_BDIST_DIR ${CMAKE_BINARY_DIR}/pymoose_bdist)
+endif( )
+# get platform and arch using python.
+find_package( PythonInterp REQUIRED)
+execute_process( 
+    COMMAND ${PYTHON_EXECUTABLE} -c "import sys;print('%s-%s'%(sys.platform,sys.arch))"
+    OUTPUT_VARIABLE PY_PLATFORM_ARCH
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+    )
+# If not set, use default.
+if(NOT PY_PLATFORM_ARCH)
+    message(PY_PLATFORM_ARCH "linux-x86_64")
+endif( )
+message(STATUS "Building bdist for arch: ${PY_PLATFORM_ARCH}")
+add_custom_target( bdist 
+    COMMAND ${PYTHON_EXECUTABLE} setup.cmake.py bdist -p ${PY_PLATFORM_ARCH} -d ${PYMOOSE_BDIST_DIR}
+    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/python
+    COMMENT "Genearating bdist using setup.cmake.py." 
+    VERBATIM
+    )
+
 
 ############################ CTEST ######################################
 include( CTest )
diff --git a/python/moose/moose_test.py b/python/moose/moose_test.py
index 9cda2b80d81b4ffc20ff77bf0dae656c47763e7c..9d5ad2459ecf94e3a6b8b3d4c68d26b54c6c3475 100644
--- a/python/moose/moose_test.py
+++ b/python/moose/moose_test.py
@@ -26,11 +26,12 @@ import logging
 from collections import defaultdict
 import time
 
+logfile_ = tempfile.NamedTemporaryFile( )
 logging.basicConfig(
         level=logging.DEBUG,
         format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
         datefmt='%m-%d %H:%M',
-        filename='tests.log',
+        filename = logfile_.name,
         filemode='w'
         )
 console = logging.StreamHandler()
diff --git a/python/setup.cmake.py b/python/setup.cmake.py
index ebce90693b110574df448678fab379642e644880..22da886d01bf295f75e044920edfebd1bcb410b6 100644
--- a/python/setup.cmake.py
+++ b/python/setup.cmake.py
@@ -1,10 +1,11 @@
 # -*- coding: utf-8 -*-
 
-"""setup.py:
-Script to install python targets.
+"""
+setup.cmake.py:
 
-NOTE: This script is to be called by CMake. Not intended to be used standalone.
+Script to install python targets by cmake. 
 
+DO NOT USE IT DIRECTLY. Only `cmake` build system should use it directly.
 """
 
 __author__           = "Dilawar Singh"
@@ -20,33 +21,29 @@ import os
 import sys
 
 try:
-	from setuptools import setup
+    from setuptools import setup
 except Exception as e:
-	from distutils.core import setup
+    from distutils.core import setup
 
+# Read version from VERSION created by cmake file. This file must be present for
+# setup.cmake.py to work perfectly.
 script_dir = os.path.dirname( os.path.abspath( __file__ ) )
-version = '3.2pre1'
-
-
-try:
-    with open( os.path.join( script_dir, 'VERSION'), 'r' ) as f:
-        version = f.read( )
-except Exception as e:
-    print( 'Failed to read VERSION %s' % e )
-    print( 'Using default %s' % version )
+version = None
+with open( os.path.join( script_dir, 'VERSION'), 'r' ) as f:
+    version = f.read( )
 
 try:
     import importlib.machinery
     suffix = importlib.machinery.EXTENSION_SUFFIXES[0]
 except Exception as e:
-    print( '[WARN] Failed to determine importlib suffix' )
+    print( '[WARN] Failed to determine importlib suffix due to %s' % e )
     suffix = '.so'
 
 setup(
         name='pymoose',
         version=version,
         description='Python scripting interface of MOOSE Simulator (https://moose.ncbs.res.in)',
-        author='MOOSERes',
+        author='See AUTHORS.md at https://github.com/BhallaLab/moose',
         author_email='bhalla@ncbs.res.in',
         maintainer='Dilawar Singh',
         maintainer_email='dilawars@ncbs.res.in',
@@ -61,9 +58,11 @@ setup(
             , 'moose.chemUtil'
             , 'moose.chemMerge'
             ],
-	install_requires = [ 'python-libsbml', 'numpy' ],
+        install_requires = [ 'python-libsbml', 'numpy' ],
         package_dir = {
             'moose' : 'moose', 'rdesigneur' : 'rdesigneur'
             },
-        package_data = { 'moose' : ['_moose' + suffix, 'neuroml2/schema/NeuroMLCoreDimensions.xml'] },
-    )
+        package_data = { 
+            'moose' : ['_moose' + suffix, 'neuroml2/schema/NeuroMLCoreDimensions.xml'] 
+            },
+        )