diff --git a/.travis.yml b/.travis.yml
index 473c14db8cd4127c1e8f27b2bdfccc8f3eaee700..8c33e46ff8823ade37439662f18135dd2bdc0182 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -20,29 +20,31 @@ env:
     - CTEST_MODEL=Nightly
 cache: apt
 
-#matrix:
-#    allow_failures:
-#        - clang
+matrix:
+    allow_failures:
+        - clang
 
 before_script:
     - sudo apt-get install -qq libxml2-dev libbz2-dev
     - sudo apt-get install -qq libhdf5-serial-dev
     - sudo apt-get install -qq make cmake
-    - sudo apt-get install -qq python-numpy python-matplotlib python-networkx
-    - sudo apt-get install -qq python3-numpy python3-matplotlib python3-dev 
+    - sudo apt-get install -qq  python-numpy python-matplotlib python-networkx
+    - sudo apt-get install -qq  python3-numpy python3-matplotlib python3-dev
     - sudo apt-get install -qq libboost-all-dev
     - sudo apt-get install -qq libgsl0-dev
     - sudo apt-get install -qq python-pip python3-pip
     - sudo apt-get install -qq libgraphviz-dev
-    - # sudo pip install python-libsbml
-    - # sudo pip3 install python-libsbml
-    - # sudo pip3 install pygraphviz
+    - sudo pip install python-libsbml
+    - sudo pip3 install python-libsbml
+    - sudo pip3 install pygraphviz
 
 install:
     - echo "nothing to do here"
 
 script:
-    - # First test is normal make scripts. (outdated).
+    - First check no python3 incompatible file.
+    - python3 -m compileall -q .
+    - # Then run the old make scripts
     - make 
     - ## CMAKE based flow
     - mkdir -p _GSL_BUILD && cd _GSL_BUILD && cmake -DDEBUG=ON -DPYTHON_EXECUTABLE=/usr/bin/python ..
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 93810552e438a530a5a6888a870fa5e04b80cc9c..1be4010205191f76caaa704a2d46aaf7a248f170 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -94,37 +94,16 @@ option(DEBUG "Build with debug support" OFF)
 option(GPROF "Build for profiling using gprof" OFF)
 option(ENABLE_UNIT_TESTS "Enable unit tests (DEBUG should also be ON)" OFF)
 option(WITH_PYTHON "Build native python extension" ON)
-option(WITH_CYTHON "Build python extension using Cython. (experimental)" OFF)
 option(WITH_MPI  "Enable Openmpi support" OFF)
 option(WITH_BOOST "Use boost library instead of GSL" OFF)
 option(WITH_GSL  "Use gsl-library. Alternative is WITH_BOOST" ON)
 
-# If GSL_STATIC_HOME is set, we use it to search for static gsl libs.
-option(GSL_STATIC_HOME 
-    "Path prefix where static gsl library can be found e.g. /opt/sw/gsl116 " 
-    OFF
-    )
-option(HDF5_STATIC_HOME
-    "Path prefix where static hdf5 library can be found e.g /opt/sw/hdf5 "
-    OFF
-    )
-
 ################################# CMKAE MACROS #################################
 
 set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules")
 
 ############################ BUILD CONFIGURATION #################################
 
-# VERBOSITY OF OUTPUT
-if(VERBOSITY)
-    message(STATUS "Verbosity of output is ${VERBOSITY}. This is not implemented
-    yet!")
-    add_definitions(-DVERBOSITY=${VERBOSITY})
-else()
-    message(STATUS "Moose will be quiet")
-    add_definitions(-DQUIET_MODE)
-endif()
-
 # Default macros
 add_definitions(-DUSE_GENESIS_PARSER)
 
@@ -178,42 +157,30 @@ include_directories(msg basecode)
 set_target_properties(libmoose PROPERTIES COMPILE_DEFINITIONS  "MOOSE_LIB")
 set_target_properties(libmoose PROPERTIES PREFIX "")
 
+## Variable to collect all static libraries.
+set(STATIC_LIBRARIES "" )
+# Collect all shared libraries here.
+set(SYSTEM_SHARED_LIBS ${LibXML2_LIBRARIES})
+
 if(WITH_GSL)
-    if(GSL_STATIC_HOME)
-        SET(GSL_INCLUDE_DIRS "${GSL_STATIC_HOME}/include")
-        find_library(GSL_LIBRARY 
-            NAME libgsl.a 
-            PATHS ${GSL_STATIC_HOME}/lib ${GSL_STATIC_HOME}/lib64
-            NO_DEFAULT_PATH
-            )
-        find_library(GSLCBLAS_LIBRARY
-            NAME libgslcblas.a 
-            PATHS ${GSL_STATIC_HOME}/lib ${GSL_STATIC_HOME}/lib64 
-            NO_DEFAULT_PATH
+    find_package(GSL 1.16)
+    if(NOT GSL_FOUND)
+        message(FATAL_ERROR 
+            "=====================================================================\n"
+            " FATAL gsl(>1.16) not found.\n\n"
+            " MOOSE requires Gnu Scientific Library (GSL) 1.16 or higher. \n"
+            " Please install the `dev` or `devel` package e.g. \n"
+            "     $ sudo apt-get install libgsl0-dev \n"
+            "     $ sudo yum install libgsl-devel \n"
+            "     $ brew install gsl \n\n"
+            " Or build and install gsl from source code \n"
+            "     https://www.gnu.org/software/gsl/ \n"
+            " After installing gsl, rerun cmake.\n\n"
+            " If you install gsl in non-standard place, set the GSL_HOME environment \n"
+            " variable. CMAKE use this to search for required files. \n"
+            "====================================================================\n"
             )
-        SET(GSL_LIBRARIES ${GSL_LIBRARY} ${GSLCBLAS_LIBRARY})
-        message(STATUS "STATIC GSL_LIBRARIES ${GSL_LIBRARIES}")
-        set(GSL_FOUND TRUE)
-    ELSE()
-        find_package(GSL 1.16)
-        if(NOT GSL_FOUND)
-            message(FATAL_ERROR 
-                "=====================================================================\n"
-                " FATAL gsl(>1.16) not found.\n\n"
-                " MOOSE requires Gnu Scientific Library (GSL) 1.16 or higher. \n"
-                " Please install the `dev` or `devel` package e.g. \n"
-                "     $ sudo apt-get install libgsl0-dev \n"
-                "     $ sudo yum install libgsl-devel \n"
-                "     $ brew install gsl \n\n"
-                " Or build and install gsl from source code \n"
-                "     https://www.gnu.org/software/gsl/ \n"
-                " After installing gsl, rerun cmake.\n\n"
-                " If you install gsl in non-standard place, set the GSL_HOME environment \n"
-                " variable. CMAKE use this to search for required files. \n"
-                "====================================================================\n"
-                )
-        endif(NOT GSL_FOUND)
-    endif()
+    endif(NOT GSL_FOUND)
     add_definitions(-DUSE_GSL)
     # GSL is also used in RNG (whenever applicable), therefore include paths are
     # top level.
@@ -232,29 +199,8 @@ elseif(WITH_BOOST)
     endif(BOOST_RANDOM_DEVICE_EXISTS)
 endif()
 
-## Setup hdf5
-if(HDF5_STATIC_HOME)
-    SET(HDF5_INCLUDE_DIRS "${HDF5_STATIC_HOME}/include")
-    find_library(HDF5_LIBRARY 
-        NAME libhdf5-static.a
-        PATHS ${HDF5_STATIC_HOME}/lib ${HDF5_STATIC_HOME}/lib64
-        NO_DEFAULT_PATH
-        )
-    find_library(HDF5_HL_LIBRARY
-        NAME libhdf5_hl-static.a
-        PATHS ${HDF5_STATIC_HOME}/lib ${HDF5_STATIC_HOME}/lib64
-        NO_DEFAULT_PATH
-        )
-    SET(HDF5_LIBRARIES ${HDF5_LIBRARY} ${HDF5_HL_LIBRARY})
-    SET(HDF5_FOUND TRUE)
-ELSE(HDF5_STATIC_HOME)
-    pkg_check_modules(HDF5 hdf5)
-    if(NOT HDF5_FOUND)
-        message(STATUS "pkg-config could not find hdf5. fallback to default")
-        find_package(HDF5 COMPONENTS CXX HL REQUIRED)
-     endif()
-endif(HDF5_STATIC_HOME)
 
+find_package(HDF5 COMPONENTS CXX HL)
 if(NOT HDF5_FOUND)
     message(
         "==================================================================\n"
@@ -269,18 +215,35 @@ if(NOT HDF5_FOUND)
         " variable HDF5_ROOT to the location. Rerun cmake \n"
         "================================================================ \n"
         )
-ELSEIF(HDF5_FOUND AND (NOT HDF5_STATIC_HOME))
-    if(HDF5_HL_LIBRARIES)
-        set(HDF5_LIBRARIES ${HDF5_HL_LIBRARIES})
-    else()
-        set(HDF5_LIBRARIES "-lhdf5 -lhdf5_hl")
-    endif()
-    include_directories(${HDF5_INCLUDE_DIRS})
 endif(NOT HDF5_FOUND)
 
 if(HDF5_FOUND)
-    add_definitions( -DUSE_HDF5 )
     include_directories( ${HDF5_INCLUDE_DIRS} )
+    add_definitions( -DUSE_HDF5 )
+    if(HDF5_USE_STATIC_LIBRARIES)
+	message(STATUS "Finding static HDF5 libraries in $ENV{HDF5_ROOT}")
+        find_library(HDF5_CXX_LIBRARIES NAMES libhdf5.a 
+            PATHS $ENV{HDF5_ROOT}/lib $ENV{HDF5_ROOT}/lib64
+            )
+        find_library(HDF5_HL_LIBRARIES NAMES libhdf5_hl.a
+            PATHS $ENV{HDF5_ROOT}/lib $ENV{HDF5_ROOT}/lib64 
+            )
+    endif()
+
+    set(HDF5_LIBRARIES ${HDF5_CXX_LIBRARIES} ${HDF5_HL_LIBRARIES})
+    message(STATUS "MOOSE will use ${HDF5_LIBRARIES}" )
+    foreach(HDF5_LIB ${HDF5_LIBRARIES})
+        if(HDF5_LIB)
+            get_filename_component( HDF5_LIB_EXT ${HDF5_LIB} EXT )
+            if(HDF5_LIB_EXT)
+                if(${HDF5_LIB_EXT} STREQUAL ".a")
+                    list(APPEND STATIC_LIBRARIES ${HDF5_LIB} )
+                else( )
+                    list(APPEND SYSTEM_SHARED_LIBS ${HDF5_LIB} )
+                endif( )
+            endif()
+        endif( )
+    endforeach( )
 endif( HDF5_FOUND )
 
 # This is a fix for new HDF5 package on Debian/Ubuntu which installs hdf5
@@ -313,64 +276,30 @@ if(WITH_MPI)
     endif()
 endif(WITH_MPI)
 
-# Add subdirectroeis
-add_subdirectory(basecode)
-add_subdirectory(msg)
-add_subdirectory(shell)
-add_subdirectory(randnum)
-add_subdirectory(scheduling)
-add_subdirectory(biophysics)
-add_subdirectory(builtins)
-add_subdirectory(utility)
-add_subdirectory(mesh)
-add_subdirectory(mpi)
-add_subdirectory(signeur)
-add_subdirectory(ksolve)
-add_subdirectory(hsolve)
-add_subdirectory(diffusion)
-add_subdirectory(device)
-add_subdirectory(benchmarks)
-add_subdirectory(kinetics)
-add_subdirectory(synapse)
-add_subdirectory(intfire)
-
-# These are always shared libraries.
-set(SYSTEM_SHARED_LIBS ${LibXML2_LIBRARIES})
 if(WITH_BOOST)
     list(APPEND SYSTEM_SHARED_LIBS ${LAPACK_LIBRARIES})
     list(APPEND SYSTEM_SHARED_LIBS ${Boost_LIBRARIES})
 endif(WITH_BOOST)
 
-# These libraries could be static of dynamic.
-# When building packages on OBS or launchpad, we build static library of a
-# dependencies if a correct version is not found. 
-# Here we make sure that the correct static version is linked; if a correct
-# shared version is found then link the shared version in SYSTEM_SHARED_LIBS.
-
-# If CMAKE_STATIC_LIBRARIES are mentiond on command line, use it as list.
-set(STATIC_LIBRARIES  "")
-
-if(HDF5_STATIC_HOME)
-    list(APPEND STATIC_LIBRARIES ${HDF5_LIBRARIES})
-elseif(HDF5_FOUND)
-    list(APPEND SYSTEM_SHARED_LIBS ${HDF5_LIBRARIES})
-endif()
-
+# These libraries could be static of dynamic. We need to discrimate between
+# these two types because of --whole-archive option. See
+# BhallaLab/moose-core#66,
 if(WITH_GSL)
-    if(GSL_STATIC_HOME)
-        message(STATUS "Using STATIC gsl libraries: ${GSL_LIBRARIES}")
-        list(APPEND STATIC_LIBRARIES ${GSL_LIBRARIES})
-    else()
-        message(STATUS "Using system gsl : ${GSL_LIBRARIES}")
-        list(APPEND SYSTEM_SHARED_LIBS ${GSL_LIBRARIES})
-    endif()
+    message(STATUS "Using STATIC gsl libraries: ${GSL_LIBRARIES}")
+    foreach(GSL_LIB ${GSL_LIBRARIES} )
+        if(GSL_LIB)
+            get_filename_component( GSL_LIB_EXT ${GSL_LIB} EXT )
+            if(GSL_LIB_EXT)
+                if(GSL_LIB_EXT STREQUAL ".a" )
+                    list(APPEND STATIC_LIBRARIES ${GSL_LIB})
+                else()
+                    list(APPEND SYSTEM_SHARED_LIBS ${GSL_LIB})
+                endif( )
+            endif( )
+        endif( )
+    endforeach( )
 endif()
 
-# Deprecated.
-#if(READLINE_FOUND AND TERMCAP_FOUND)
-#    list(APPEND SYSTEM_SHARED_LIBS ${Readline_LIBRARY} ${TERMCAP_LIBRARY})
-#endif()
-
 if(WITH_MPI)
     if(MPI_CXX_FOUND)
         list(APPEND SYSTEM_SHARED_LIBS ${MPI_CXX_LIBRARIES})
@@ -387,15 +316,26 @@ else()
     list(APPEND MOOSE_LIBRARIES muparser)
 endif()
 
-#pkg_check_modules(TINYXML tinyxml)
-#if(TINYXML_FOUND)
-    #message(STATUS "Using system tinyxml ${TINYXML_VERSION}")
-    #list(APPEND SYSTEM_SHARED_LIBS ${TINYXML_LIBRARIES})
-#else()
-    #message(STATUS "Using private tinyxml")
-    #add_subdirectory(external/tinyxml)
-    #list(APPEND MOOSE_LIBRARIES tinyxml)
-#endif()
+# Add subdirectroeis
+add_subdirectory(basecode)
+add_subdirectory(msg)
+add_subdirectory(shell)
+add_subdirectory(randnum)
+add_subdirectory(scheduling)
+add_subdirectory(biophysics)
+add_subdirectory(builtins)
+add_subdirectory(utility)
+add_subdirectory(mesh)
+add_subdirectory(mpi)
+add_subdirectory(signeur)
+add_subdirectory(ksolve)
+add_subdirectory(hsolve)
+add_subdirectory(diffusion)
+add_subdirectory(device)
+add_subdirectory(benchmarks)
+add_subdirectory(kinetics)
+add_subdirectory(synapse)
+add_subdirectory(intfire)
 
 ###################################### LINKING #################################
 list(APPEND MOOSE_LIBRARIES
@@ -420,6 +360,11 @@ list(APPEND MOOSE_LIBRARIES
     basecode
     )
 
+# Make sure to remove duplicates.
+list(REMOVE_DUPLICATES STATIC_LIBRARIES)
+if(SYSTEM_SHARED_LIBS)
+    list(REMOVE_DUPLICATES SYSTEM_SHARED_LIBS)
+endif( )
 
 # MAC linker does not understand many of gnu-ld options.
 message( STATUS "Shared libs: ${SYSTEM_SHARED_LIBS}")
@@ -446,13 +391,7 @@ endif(MACOSX)
 
 add_dependencies(moose.bin libmoose)
 
-# This target is only for testing purpose. It links to libmoose.
-if(CMAKE_VERSION VERSION_LESS "2.8.0")
-    message(STATUS "Using a fix for cmake ( < 2.8)")
-    target_link_libraries(moose.bin PUBLIC moose ${CMAKE_DL_LIBS})
-ELSE()
-    target_link_libraries(moose.bin LINK_PUBLIC moose ${CMAKE_DL_LIBS})
-ENDIF()
+target_link_libraries(moose.bin LINK_PUBLIC moose ${CMAKE_DL_LIBS})
 
 ######################### BUILD PYMOOSE ########################################
 # Root of all python module.
diff --git a/VERSION b/VERSION
index 819720a6233f6ad3d6a233433f7e03e8a6d47442..bad061c1d8dde6d3f7b8f05cf11fa949eafa1642 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-3.1.0-123-g7805364
\ No newline at end of file
+3.1.0-155-gb7f1834
\ No newline at end of file
diff --git a/cmake_modules/FindGSL.cmake b/cmake_modules/FindGSL.cmake
index 17260420fa97eb299391165b317f84ffd72c81bf..93c2686f78e6fbbdde540e86241d0995934c8813 100644
--- a/cmake_modules/FindGSL.cmake
+++ b/cmake_modules/FindGSL.cmake
@@ -1,147 +1,107 @@
-## 
-## Try to find gnu scientific library GSL  
-## (see http://www.gnu.org/software/gsl/)
-## Once run this will define: 
-## 
-## GSL_FOUND       = system has GSL lib
-##
-## GSL_LIBRARIES   = full path to the libraries
-##    on Unix/Linux with additional linker flags from "gsl-config --libs"
-## 
-## CMAKE_GSL_CXX_FLAGS  = Unix compiler flags for GSL, essentially "`gsl-config --cxxflags`"
-##
-## GSL_INCLUDE_DIRS      = where to find headers 
-##
-## GSL_LINK_DIRECTORIES = link directories, useful for rpath on Unix
-## GSL_EXE_LINKER_FLAGS = rpath on Unix
-##
-## Felix Woelk 07/2004
-## minor corrections Jan Woetzel
-##
-## www.mip.informatik.uni-kiel.de
-## --------------------------------
-##
-
+# Try to find gnu scientific library GSL  
+# (see http://www.gnu.org/software/gsl/)
+# Once run this will define: 
+# 
+# GSL_FOUND       = system has GSL lib
+#
+# GSL_VERSION       = gsl version
+#
+# GSL_LIBRARIES   =  name of the libraries.
+#
+# GSL_INCLUDE_DIRS      = where to find headers 
+# 
+# GSL_USE_STATIC_LIBRARIES = Set it ON if you want to search for static
+# libraries.
+#
+# Felix Woelk 07/2004
+# minor corrections Jan Woetzel
+#
+# www.mip.informatik.uni-kiel.de
+# --------------------------------
+#
+# Friday 18 November 2016 09:05:56 AM IST
+# MODIFICATIONS: ##   dilawars@ncbs.res.in, For the MOOSE project.
+#      This  version does not use gsl-config file.
+#
+
+# Set this envrionment variable to search in this path first.
+SET(GSL_ROOT_DIR $ENV{GSL_ROOT_DIR})
+if(GSL_ROOT_DIR)
+    message( STATUS "Debug: GSL_ROOT_DIR value ${GSL_ROOT_DIR}")
+endif(GSL_ROOT_DIR)
 
 IF(WIN32)
 
-  SET(GSL_MINGW_PREFIX "c:/msys/local" )
-  SET(GSL_MSVC_PREFIX "$ENV{LIB_DIR}")
-  FIND_LIBRARY(GSL_LIB gsl PATHS 
-    ${GSL_MINGW_PREFIX}/lib 
-    ${GSL_MSVC_PREFIX}/lib
-    )
-  #MSVC version of the lib is just called 'cblas'
-  FIND_LIBRARY(GSLCBLAS_LIB gslcblas cblas PATHS 
-    ${GSL_MINGW_PREFIX}/lib 
-    ${GSL_MSVC_PREFIX}/lib
-    )
-
-  FIND_PATH(GSL_INCLUDE_DIRS gsl/gsl_blas.h 
-    ${GSL_MINGW_PREFIX}/include 
-    ${GSL_MSVC_PREFIX}/include
-    )
+    SET(GSL_MINGW_PREFIX "c:/msys/local" )
+    SET(GSL_MSVC_PREFIX "$ENV{LIB_DIR}")
+    FIND_LIBRARY(GSL_LIB gsl PATHS 
+        ${GSL_MINGW_PREFIX}/lib 
+        ${GSL_MSVC_PREFIX}/lib
+        )
+    #MSVC version of the lib is just called 'cblas'
+    FIND_LIBRARY(GSLCBLAS_LIB gslcblas cblas PATHS 
+        ${GSL_MINGW_PREFIX}/lib 
+        ${GSL_MSVC_PREFIX}/lib
+        )
+
+    FIND_PATH(GSL_INCLUDE_DIRS gsl/gsl_blas.h 
+        ${GSL_MINGW_PREFIX}/include 
+        ${GSL_MSVC_PREFIX}/include
+        )
+
+    IF (GSL_LIB AND GSLCBLAS_LIB)
+        SET (GSL_LIBRARIES ${GSL_LIB} ${GSLCBLAS_LIB})
+    ENDIF (GSL_LIB AND GSLCBLAS_LIB)
 
-  IF (GSL_LIB AND GSLCBLAS_LIB)
-    SET (GSL_LIBRARIES ${GSL_LIB} ${GSLCBLAS_LIB})
-  ENDIF (GSL_LIB AND GSLCBLAS_LIB)
-  
 ELSE(WIN32)
-  IF(UNIX) 
-    SET(GSL_CONFIG_PREFER_PATH "$ENV{GSL_HOME}/bin")
-    # MESSAGE("++ DEBUG: GSL_CONFIG_PREFER_PATH: ${GSL_CONFIG_PREFER_PATH}")
-     
-    # GSL_CONFIG must be cleared. This script may be called again after installing
-    # the proper version of gsl
-    if(EXISTS "$ENV{GSL_HOME}")
-	set(GSL_CONFIG "$ENV{GSL_HOME}/bin/gsl-config")
-	MESSAGE(STATUS "gsl-config from environment variable: ${GSL_CONFIG}")
-	set(GSL_INCLUDE_DIRS)
-        set(GSL_LIBRARIES)
-        set(GSL_VERSION)
-        set(GSL_CONFIG_LIBS)
-    else()
-	FIND_PROGRAM(GSL_CONFIG gsl-config
-			${GSL_CONFIG_PREFER_PATH}
-			$ENV{LIB_DIR}/bin
-			/usr/local/bin/
-			/usr/bin/
-		    )
-    endif()
-    IF (GSL_CONFIG) 
-      # set CXXFLAGS to be fed into CXX_FLAGS by the user:
-      SET(GSL_CXX_FLAGS "`${GSL_CONFIG} --cflags`")
-      
-      # set INCLUDE_DIRS to prefix+include
-      EXEC_PROGRAM(${GSL_CONFIG}
-        ARGS --prefix
-        OUTPUT_VARIABLE GSL_PREFIX)
-      SET(GSL_INCLUDE_DIRS ${GSL_PREFIX}/include CACHE STRING INTERNAL)
-
-      # set link libraries and link flags
-      EXEC_PROGRAM(${GSL_CONFIG}
-          ARGS --libs
-          OUTPUT_VARIABLE GSL_LIBRARIES)
-      
-      ## extract link dirs for rpath  
-      EXEC_PROGRAM(${GSL_CONFIG}
-        ARGS --libs
-        OUTPUT_VARIABLE GSL_CONFIG_LIBS )
-
-     EXEC_PROGRAM(${GSL_CONFIG}
-         ARGS --version
-         OUTPUT_VARIABLE GSL_VERSION
-         )
-
-      ## split off the link dirs (for rpath)
-      ## use regular expression to match wildcard equivalent "-L*<endchar>"
-      ## with <endchar> is a space or a semicolon
-      STRING(REGEX MATCHALL "[-][L]([^ ;])+" 
-        GSL_LINK_DIRECTORIES_WITH_PREFIX 
-        "${GSL_CONFIG_LIBS}" )
-        #      MESSAGE("DBG  GSL_LINK_DIRECTORIES_WITH_PREFIX=${GSL_LINK_DIRECTORIES_WITH_PREFIX}")
 
-      ## remove prefix -L because we need the pure directory for LINK_DIRECTORIES
-      
-      IF (GSL_LINK_DIRECTORIES_WITH_PREFIX)
-        STRING(REGEX REPLACE "[-][L]" "" GSL_LINK_DIRECTORIES ${GSL_LINK_DIRECTORIES_WITH_PREFIX} )
-      ENDIF (GSL_LINK_DIRECTORIES_WITH_PREFIX)
-      SET(GSL_EXE_LINKER_FLAGS "-Wl,-rpath,${GSL_LINK_DIRECTORIES}" CACHE STRING INTERNAL)
-      #      MESSAGE("DBG  GSL_LINK_DIRECTORIES=${GSL_LINK_DIRECTORIES}")
-      #      MESSAGE("DBG  GSL_EXE_LINKER_FLAGS=${GSL_EXE_LINKER_FLAGS}")
+    IF(GSL_USE_STATIC_LIBRARIES)
+        SET(GSL_LIB_NAMES libgsl.a)
+        SET(GSL_CBLAS_LIB_NAMES libgslcblas.a)
+    ELSE(GSL_USE_STATIC_LIBRARIES)
+        SET(GSL_LIB_NAMES gsl)
+        SET(GSL_CBLAS_LIB_NAMES gslcblas)
+    ENDIF( )
+
+    FIND_LIBRARY(GSL_LIB 
+        NAMES ${GSL_LIB_NAMES} 
+        PATHS 
+            ${GSL_ROOT_DIR}/lib ${GSL_ROOT_DIR}/lib64
+            /opt/lib /opt/lib64
+        )
+
+    FIND_LIBRARY(GSLCBLAS_LIB 
+        NAMES ${GSL_CBLAS_LIB_NAMES}
+        PATHS 
+            ${GSL_ROOT_DIR}/lib ${GSL_ROOT_DIR}/lib64
+            /opt/lib /opt/lib64
+        )
+    IF (GSL_LIB AND GSLCBLAS_LIB)
+        SET (GSL_LIBRARIES ${GSL_LIB} ${GSLCBLAS_LIB})
+    ENDIF (GSL_LIB AND GSLCBLAS_LIB)
+
+    FIND_PATH(GSL_INCLUDE_DIRS NAMES gsl/gsl_blas.h
+        PATHS ${GSL_ROOT_DIR}/include /opt/include 
+        )
 
-      #      ADD_DEFINITIONS("-DHAVE_GSL")
-      #      SET(GSL_DEFINITIONS "-DHAVE_GSL")
-      MARK_AS_ADVANCED(
-        GSL_CXX_FLAGS
-        GSL_INCLUDE_DIRS
-        GSL_LIBRARIES
-        GSL_LINK_DIRECTORIES
-        GSL_DEFINITIONS
-      )
-      
-    ELSE(GSL_CONFIG)
 
-      IF (GSL_FIND_REQUIRED)
-         MESSAGE(FATAL_ERROR "Could not find gsl-config. Please set it manually. GSL_CONFIG=${GSL_CONFIG}")
-      ELSE (GSL_FIND_REQUIRED)
-         MESSAGE(STATUS "Could not find GSL")
-         # TODO: Avoid cmake complaints if GSL is not found
-      ENDIF (GSL_FIND_REQUIRED)
-
-    ENDIF(GSL_CONFIG)
-
-  ENDIF(UNIX)
 ENDIF(WIN32)
 
-
-IF(GSL_LIBRARIES)
-  IF(GSL_INCLUDE_DIRS OR GSL_CXX_FLAGS)
-
-    SET(GSL_FOUND 1)
-    
-    MESSAGE(STATUS "Using GSL from ${GSL_PREFIX}")
-
-  ENDIF(GSL_INCLUDE_DIRS OR GSL_CXX_FLAGS)
-ENDIF(GSL_LIBRARIES)
+# FIND version
+if(GSL_INCLUDE_DIRS)
+    file(READ "${GSL_INCLUDE_DIRS}/gsl/gsl_version.h" GSL_VERSION_TEXT)
+    string(REGEX REPLACE ".*define[ ]+GSL_MAJOR_VERSION[ ]*([0-9]+).*"  "\\1"
+        GSL_MAJOR_VERSION "${GSL_VERSION_TEXT}")
+    string(REGEX REPLACE ".*define[ ]+GSL_MINOR_VERSION[ ]*([0-9]+).*"  "\\1"
+        GSL_MINOR_VERSION "${GSL_VERSION_TEXT}")
+    set(GSL_VERSION "${GSL_MAJOR_VERSION}.${GSL_MINOR_VERSION}")
+    message(STATUS "GSL version : ${GSL_VERSION}")
+endif(GSL_INCLUDE_DIRS)
+
+IF(GSL_LIBRARIES AND GSL_VERSION)
+    IF(GSL_INCLUDE_DIRS)
+        MESSAGE(STATUS "Found GSL ${GSL_LIBRARIES}")
+        SET(GSL_FOUND 1)
+    ENDIF(GSL_INCLUDE_DIRS)
+ENDIF()
 
diff --git a/python/libmumbl/core/dynamic_vars.py b/python/libmumbl/core/dynamic_vars.py
index b66a1e15f9fecb8dc07cb158f54c14d6d397d508..ae56381a9f295efff01e8ebc7903a78b1248a752 100644
--- a/python/libmumbl/core/dynamic_vars.py
+++ b/python/libmumbl/core/dynamic_vars.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 """dynamic_vars.py: Class to create variables out of strings.
 
diff --git a/python/libmumbl/core/types.py b/python/libmumbl/core/types.py
index a89ed84c602a21432623c4ae3986e83e8219d888..272ae847cf3c4969cdd7a24e82033bc6733f73cb 100644
--- a/python/libmumbl/core/types.py
+++ b/python/libmumbl/core/types.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 """types.py: Implement some data-types.
 
diff --git a/python/libmumbl/helper/graph_methods.py b/python/libmumbl/helper/graph_methods.py
index b5d1360bebc483841b9ed37ae1dee80b22f30f95..50c400ebed26d1b4c45629355f71d1a27a85fc87 100644
--- a/python/libmumbl/helper/graph_methods.py
+++ b/python/libmumbl/helper/graph_methods.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 __author__  = "Dilawar Singh <dilawars@ncbs.res.in>"
 
diff --git a/python/libmumbl/helper/moose_methods.py b/python/libmumbl/helper/moose_methods.py
index bb6844800ffdb5788020a458c8535b63b99062a0..c5b0cb8f610b8ef924be8378756a37717ae28d17 100644
--- a/python/libmumbl/helper/moose_methods.py
+++ b/python/libmumbl/helper/moose_methods.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 """moose_methods.py:  Some helper function related with moose to do multiscale
 modelling.
diff --git a/python/libmumbl/helper/xml_methods.py b/python/libmumbl/helper/xml_methods.py
index e848bfa4a33f8a838d8a97ed19d105dc9a60a74e..d3fb63948d8bd15db1e8bb5c266607c99e0d3204 100644
--- a/python/libmumbl/helper/xml_methods.py
+++ b/python/libmumbl/helper/xml_methods.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 __author__  = "Dilawar Singh <dilawars@ncbs.res.in>"
 
diff --git a/python/libmumbl/nml_parser/importer.py b/python/libmumbl/nml_parser/importer.py
index 6beb6d1ced12e1c2eef5aab9066d43603d1be461..186f6a0a2f9dfb14eb0d673ccf2485b1a1085b45 100644
--- a/python/libmumbl/nml_parser/importer.py
+++ b/python/libmumbl/nml_parser/importer.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 __author__  = "Dilawar Singh <dilawars@ncbs.res.in>"
 __date__    = "Mon 21 Oct 2013 11:37:01 PM IST"
diff --git a/python/libmumbl/test/adaptor.py b/python/libmumbl/test/adaptor.py
index 25f38feb888b49c34bf319e68a5c2290442243b9..51a55eb542754724086677f83aef2e6752dc0572 100644
--- a/python/libmumbl/test/adaptor.py
+++ b/python/libmumbl/test/adaptor.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 """adaptor.py: 
 
diff --git a/python/libmumbl/utility/debug.py b/python/libmumbl/utility/debug.py
index 1fc31a8c47454cb41f8ed3b76d76a393578d5df8..f99de0219ba393c4cd74dc2fae5f363b3e7be1c5 100644
--- a/python/libmumbl/utility/debug.py
+++ b/python/libmumbl/utility/debug.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 """print_utils.py: A library with some print functions. Very useful during
 development.
diff --git a/python/moose/methods_utils.py b/python/moose/methods_utils.py
index 5eaa151940c519f6dd5829b51c8fb8dc352b29f3..91e49dccd0275c60e9133dc7457910ae12eea99e 100644
--- a/python/moose/methods_utils.py
+++ b/python/moose/methods_utils.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 """methods_utils.py: 
     Some non-standard functions generic to moose. 
diff --git a/python/moose/neuroml2/generated_neuroml.py b/python/moose/neuroml2/generated_neuroml.py
index e2d4c5a3dc294a7d877d1c2a7eb3d0b2c82e1584..0cbf3ffd2c854147cd5d8819fc15e37b9f3581b4 100644
--- a/python/moose/neuroml2/generated_neuroml.py
+++ b/python/moose/neuroml2/generated_neuroml.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 # -*- coding: utf-8 -*-
 
 #
diff --git a/python/moose/neuroml2/generated_neuromlsub.py b/python/moose/neuroml2/generated_neuromlsub.py
index 3f066bdd3c82ad6b5cc8f46713147702ea289bdc..7e7957be79d98254c612e40fde43736a617f2f56 100644
--- a/python/moose/neuroml2/generated_neuromlsub.py
+++ b/python/moose/neuroml2/generated_neuromlsub.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 #
 # Generated Sun Apr 17 15:01:32 2016 by generateDS.py version 2.22a.
diff --git a/python/moose/neuroml2/test_files/Purk2M9s.nml.REMOVED.git-id b/python/moose/neuroml2/test_files/Purk2M9s.nml.REMOVED.git-id
deleted file mode 100644
index 18e9dea465983b0318fe2d21ac0dce251313db97..0000000000000000000000000000000000000000
--- a/python/moose/neuroml2/test_files/Purk2M9s.nml.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-511ab43e06697c5907ff335cdd26b31603cc281c
\ No newline at end of file
diff --git a/python/moose/plot_utils.py b/python/moose/plot_utils.py
index b1438394d95c2b07464938f9cd6328ff5a63602a..b2740954dc10103f0c6e6f266ce08cb4cedeb315 100644
--- a/python/moose/plot_utils.py
+++ b/python/moose/plot_utils.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 """plot_utils.py: Some utility function for plotting data in moose.
 
diff --git a/python/moose/sim_utils.py b/python/moose/sim_utils.py
index 2e88a68c81e93a841b37f7b6796f17eb78f720f7..0fd637d7c74f56a7b8897b6d8e688275620d80bc 100644
--- a/python/moose/sim_utils.py
+++ b/python/moose/sim_utils.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 """sim_utils.py: 
     Helper function related with simulation.
diff --git a/python/moose/verification_utils.py b/python/moose/verification_utils.py
index c5d52c8a50bbb334e31bda3d3d22604e3dfe9904..973c03f10fbb1643c34371fd06a1da0cef4a9334 100644
--- a/python/moose/verification_utils.py
+++ b/python/moose/verification_utils.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
 
 """verification_utils.py:
 
diff --git a/python/rdesigneur/cells/CA1.morph.xml.REMOVED.git-id b/python/rdesigneur/cells/CA1.morph.xml.REMOVED.git-id
deleted file mode 100644
index b422b1923aa873b79c94dbcbfee4d8446a4cd6c0..0000000000000000000000000000000000000000
--- a/python/rdesigneur/cells/CA1.morph.xml.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-dcae7ae96b2922a1e00f701d1ddbb26c114ae5d9
\ No newline at end of file
diff --git a/python/rdesigneur/chans/CA1.morph.xml.REMOVED.git-id b/python/rdesigneur/chans/CA1.morph.xml.REMOVED.git-id
deleted file mode 100644
index be0ea2fbad9b3ca316371d7290551bfc71c193ff..0000000000000000000000000000000000000000
--- a/python/rdesigneur/chans/CA1.morph.xml.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-2a3815b394f8bcb4b6450081d9ba45d20abdf3cf
\ No newline at end of file
diff --git a/tests/python/neuroml/cells_channels/CA1.morph.bad.xml.REMOVED.git-id b/tests/python/neuroml/cells_channels/CA1.morph.bad.xml.REMOVED.git-id
deleted file mode 100644
index 63d5e4e5efcb7a9a3f265da70a66ec6eb5ca31a1..0000000000000000000000000000000000000000
--- a/tests/python/neuroml/cells_channels/CA1.morph.bad.xml.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-b7ea967caab7e1e55c783506429892b973da4e25
\ No newline at end of file
diff --git a/tests/python/neuroml/cells_channels/CA1.morph.original.xml.REMOVED.git-id b/tests/python/neuroml/cells_channels/CA1.morph.original.xml.REMOVED.git-id
deleted file mode 100644
index 6fe13999bd54341a6d5f021dfeb78b71b1cfff2d..0000000000000000000000000000000000000000
--- a/tests/python/neuroml/cells_channels/CA1.morph.original.xml.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-68f982a3ed4e630891fd11c985fce9d7a3f44c39
\ No newline at end of file
diff --git a/tests/python/neuroml/cells_channels/CA1.morph.xml.REMOVED.git-id b/tests/python/neuroml/cells_channels/CA1.morph.xml.REMOVED.git-id
deleted file mode 100644
index 3e43c6549b5df684faabc501e7c4aacb26e6d756..0000000000000000000000000000000000000000
--- a/tests/python/neuroml/cells_channels/CA1.morph.xml.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-074524a8ca7045254e3f75b817299f54beaf0096
\ No newline at end of file
diff --git a/tests/python/neuroml/cells_channels/CA1_original.morph.xml.REMOVED.git-id b/tests/python/neuroml/cells_channels/CA1_original.morph.xml.REMOVED.git-id
deleted file mode 100644
index 6fe13999bd54341a6d5f021dfeb78b71b1cfff2d..0000000000000000000000000000000000000000
--- a/tests/python/neuroml/cells_channels/CA1_original.morph.xml.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-68f982a3ed4e630891fd11c985fce9d7a3f44c39
\ No newline at end of file
diff --git a/tests/python/neuroml/cells_channels/CA1inhomog.morph.xml.REMOVED.git-id b/tests/python/neuroml/cells_channels/CA1inhomog.morph.xml.REMOVED.git-id
deleted file mode 100644
index 07fc399ba363ea884f9d4a71d437a6c7680d1d6d..0000000000000000000000000000000000000000
--- a/tests/python/neuroml/cells_channels/CA1inhomog.morph.xml.REMOVED.git-id
+++ /dev/null
@@ -1 +0,0 @@
-c4700d039b3549376c1ff8d7e9e938a674b05e23
\ No newline at end of file