diff --git a/README.rst b/README.rst
index aa8fc4cc75c80c422f69d33a7136921352e26120_UkVBRE1FLnJzdA==..472be668f6ce6f500d6619092229713ee7b739b3_UkVBRE1FLnJzdA== 100644
--- a/README.rst
+++ b/README.rst
@@ -2,5 +2,5 @@
 FluidSim
 ========
 
-*Framework for studying fluid dynamics by numerical simulation.*
+|release| |docs|
 
@@ -6,5 +6,11 @@
 
-`Package Documentation <http://fluidsim.readthedocs.org>`__
+.. |release| image:: https://img.shields.io/pypi/v/fluidsim.svg
+   :target: https://pypi.python.org/pypi/fluidsim/
+   :alt: Latest version
+
+.. |docs| image:: https://readthedocs.org/projects/fluidsim/badge/?version=latest
+   :target: http://fluidsim.readthedocs.org
+   :alt: Documentation status
 
 FluidSim is the numerically oriented package of the `FluidDyn project
 <http://fluiddyn.readthedocs.org>`__.  The project is still in a
diff --git a/config.py b/config.py
index aa8fc4cc75c80c422f69d33a7136921352e26120_Y29uZmlnLnB5..472be668f6ce6f500d6619092229713ee7b739b3_Y29uZmlnLnB5 100644
--- a/config.py
+++ b/config.py
@@ -1,5 +1,4 @@
-"""
-Script to configure before Fluidsim setup.
+"""Script to configure before Fluidsim setup.
 Custom paths for MPI and FFTW libraries and shared objects are managed here.
 
 Provides
@@ -7,9 +6,9 @@
 MPI4PY : bool
     True if mpi4py installed and can be imported
 
-FFTW3 : bool    
+FFTW3 : bool
     True if FFTW3 library is available
 
 FFTW3MPI : bool
     True if FFTW3-MPI library is available
 
@@ -11,8 +10,8 @@
     True if FFTW3 library is available
 
 FFTW3MPI : bool
     True if FFTW3-MPI library is available
 
-dico_ldd : dict
+dict_ldd : dict
     list of flags to use while building shared objects (*.so)
 
@@ -17,5 +16,5 @@
     list of flags to use while building shared objects (*.so)
 
-dico_lib : dict
+dict_lib : dict
     list of paths where necessary libraries can be found (eg: libmpi.so)
 
@@ -20,6 +19,8 @@
     list of paths where necessary libraries can be found (eg: libmpi.so)
 
-dico_inc : dict
-    list of paths to include where necessary header files can be found (eg: mpi-compat.h, fftw3.h)
+dict_inc : dict
+    list of paths to include where necessary header files can be found (eg:
+    mpi-compat.h, fftw3.h)
+
 """
 
@@ -24,6 +25,8 @@
 """
 
+from __future__ import print_function
+
 import os
 import sys
 import subprocess
 
@@ -26,7 +29,8 @@
 import os
 import sys
 import subprocess
 
+
 def check_avail_library(library_name):
     try:
         libraries = subprocess.check_output('/sbin/ldconfig -p', shell=True)
@@ -38,9 +42,10 @@
 
     return library_name in libraries
 
-def find_library_dirs(args, library_dirs=[], debug=True, skip=True):
+
+def find_library_dirs(args, library_dirs=None, debug=True, skip=True):
     """
     Takes care of non-standard library directories, instead of using LDFLAGS.
     Set `skip` as `True` if you do not want to use this.
     """
 
@@ -42,6 +47,9 @@
     """
     Takes care of non-standard library directories, instead of using LDFLAGS.
     Set `skip` as `True` if you do not want to use this.
     """
 
+    if library_dirs is None:
+        library_dirs = []
+
     if skip:
@@ -47,6 +55,6 @@
     if skip:
-        print('* Skipping search for additional LDFLAGS: ',args)
+        # print('* Skipping search for additional LDFLAGS: ', args)
         return library_dirs
 
     for library_name in args:
         libso = "'lib"+library_name+".so'"
@@ -49,8 +57,8 @@
         return library_dirs
 
     for library_name in args:
         libso = "'lib"+library_name+".so'"
-        filter1 = " | grep " + libso 
+        filter1 = " | grep " + libso
         filter2 = " | awk -F'=> ' '{print $2}'"
         filter3 = " | awk -F" + libso + " '{print $1}'"
         try:
@@ -54,7 +62,8 @@
         filter2 = " | awk -F'=> ' '{print $2}'"
         filter3 = " | awk -F" + libso + " '{print $1}'"
         try:
-            cmd = 'readlink -f $(/sbin/ldconfig -p' + filter1 + filter2 + ')' + filter3
+            cmd = 'readlink -f $(/sbin/ldconfig -p' + \
+                  filter1 + filter2 + ')' + filter3
             if debug:
                 print(cmd)
 
@@ -65,5 +74,5 @@
                     library_dirs.append(item)
 
         except subprocess.CalledProcessError:
-            print('* Cannot extract library directory: '+library_name)
+            print('* Cannot extract library directory: ' + library_name)
 
@@ -69,4 +78,4 @@
 
-    default_dirs = ['/usr/lib/','/usr/lib32/']
+    default_dirs = ['/usr/lib/', '/usr/lib32/']
     library_dirs = list(set(library_dirs) - set(default_dirs))
     if debug:
@@ -71,6 +80,6 @@
     library_dirs = list(set(library_dirs) - set(default_dirs))
     if debug:
-        print('LDFLAGS for ',args,' => ',library_dirs)
+        print('LDFLAGS for ', args, ' => ', library_dirs)
 
     return library_dirs
 
@@ -81,5 +90,4 @@
     print('* ImportError of mpi4py: no mpi extensions will be built.')
 else:
     MPI4PY = True
-    print('* Compiling Cython extensions with the compiler/wrapper: ')
     try:
@@ -85,3 +93,3 @@
     try:
-        print(os.environ["CC"])
+        cc = os.environ["CC"]
     except KeyError:
@@ -87,9 +95,10 @@
     except KeyError:
-        os.environ["CC"] = 'mpicc'
-        print('mpicc')
+        cc = 'mpicc'
+        os.environ["CC"] = cc
+    print('* Compiling Cython extensions with the compiler/wrapper: ' + cc)
 
 FFTW3 = check_avail_library('fftw3')
 FFTW3MPI = check_avail_library('fftw3_mpi')
 
 # Shared libraries used while compiling shared objects
 keys = ['mpi', 'fftw']
@@ -90,11 +99,11 @@
 
 FFTW3 = check_avail_library('fftw3')
 FFTW3MPI = check_avail_library('fftw3_mpi')
 
 # Shared libraries used while compiling shared objects
 keys = ['mpi', 'fftw']
-dico_ldd = dict.fromkeys(keys, [])
-dico_lib = dict.fromkeys(keys, [])
-dico_inc = dict.fromkeys(keys, [])
+dict_ldd = dict.fromkeys(keys, [])
+dict_lib = dict.fromkeys(keys, [])
+dict_inc = dict.fromkeys(keys, [])
 
 if MPI4PY:
@@ -99,5 +108,5 @@
 
 if MPI4PY:
-    if os.environ["CC"] not in ('mpicc','cc'):
-        dico_ldd['mpi'] = ['mpi']
+    if os.environ["CC"] not in ('mpicc', 'cc'):
+        dict_ldd['mpi'] = ['mpi']
 
@@ -103,3 +112,3 @@
 
-    dico_lib['mpi'] = find_library_dirs(['mpi'])
+    dict_lib['mpi'] = find_library_dirs(['mpi'])
     here = os.path.abspath(os.path.dirname(__file__))
@@ -105,4 +114,4 @@
     here = os.path.abspath(os.path.dirname(__file__))
-    dico_inc['mpi'] = [mpi4py.get_include(), here + '/include']
+    dict_inc['mpi'] = [mpi4py.get_include(), here + '/include']
 
 if FFTW3 or FFTW3MPI:
@@ -107,5 +116,5 @@
 
 if FFTW3 or FFTW3MPI:
-    print('* Compiling FFTW extensions with the fftw3.h and libfftw3.so') 
-    dico_ldd['fftw'] = ['fftw3']
+    print('* Compiling FFTW extensions with the fftw3.h and libfftw3.so')
+    dict_ldd['fftw'] = ['fftw3']
     if FFTW3MPI:
@@ -111,5 +120,5 @@
     if FFTW3MPI:
-        print('... and also fftw3_mpi.h and libfftw3_mpi.so') 
-        dico_ldd['fftw'].append('fftw3_mpi')
+        print('  ... and also fftw3_mpi.h and libfftw3_mpi.so')
+        dict_ldd['fftw'].append('fftw3_mpi')
 
     try:
@@ -114,9 +123,9 @@
 
     try:
-        dico_lib['fftw'].append(os.environ['FFTW_DIR'])
-        dico_inc['fftw'].append(os.environ['FFTW_INC'])
+        dict_lib['fftw'].append(os.environ['FFTW_DIR'])
+        dict_inc['fftw'].append(os.environ['FFTW_INC'])
     except KeyError:
         if sys.platform == 'win32':
             if MPI4PY:
                 raise ValueError(
                     'We have to work on this case with MPI4PY on Windows...')
@@ -118,9 +127,9 @@
     except KeyError:
         if sys.platform == 'win32':
             if MPI4PY:
                 raise ValueError(
                     'We have to work on this case with MPI4PY on Windows...')
-            dico_lib['fftw'].append(r'c:\Prog\fftw-3.3.4-dll64')
-            dico_inc['fftw'].append(r'c:\Prog\fftw-3.3.4-dll64')
+            dict_lib['fftw'].append(r'c:\Prog\fftw-3.3.4-dll64')
+            dict_inc['fftw'].append(r'c:\Prog\fftw-3.3.4-dll64')
 
         else:
@@ -125,5 +134,4 @@
 
         else:
-            dico_lib['fftw'].extend(find_library_dirs('fftw3'))
-            dico_inc['fftw'] = []
-
+            dict_lib['fftw'].extend(find_library_dirs('fftw3'))
+            dict_inc['fftw'] = []
diff --git a/setup.py b/setup.py
index aa8fc4cc75c80c422f69d33a7136921352e26120_c2V0dXAucHk=..472be668f6ce6f500d6619092229713ee7b739b3_c2V0dXAucHk= 100644
--- a/setup.py
+++ b/setup.py
@@ -6,5 +6,7 @@
 try:
     from Cython.Distutils.extension import Extension
     from Cython.Distutils import build_ext
+    has_cython = True
+    ext_source = 'pyx'
 except ImportError:
     from setuptools import Extension
@@ -9,4 +11,6 @@
 except ImportError:
     from setuptools import Extension
-    from distutils.command import build_ext
+    from distutils.command.build_ext import build_ext
+    has_cython = False
+    ext_source = 'c'
 
@@ -12,5 +16,3 @@
 
-import subprocess
-import numpy as np
 import os
 import sys
@@ -15,6 +17,12 @@
 import os
 import sys
-from config import MPI4PY, FFTW3, FFTW3MPI, dico_ldd, dico_lib, dico_inc
+from runpy import run_path
+
+import numpy as np
+
+from config import MPI4PY, FFTW3, FFTW3MPI, dict_ldd, dict_lib, dict_inc
+
+print('Running fluidsim setup.py on platform ' + sys.platform)
 
 here = os.path.abspath(os.path.dirname(__file__))
 if sys.version_info[:2] < (2, 7) or (3, 0) <= sys.version_info[0:2] < (3, 2):
@@ -24,6 +32,6 @@
 with open(os.path.join(here, 'README.rst')) as f:
     long_description = f.read()
 lines = long_description.splitlines(True)
-long_description = ''.join(lines[8:])
+long_description = ''.join(lines[14:])
 
 # Get the version from the relevant file
@@ -28,7 +36,6 @@
 
 # Get the version from the relevant file
-d = {}
-execfile('fluidsim/_version.py', d)
+d = run_path('fluidsim/_version.py')
 __version__ = d['__version__']
 
 # Get the development status from the version string
@@ -41,5 +48,5 @@
 
 ext_modules = []
 
-if MPI4PY and FFTW3: #..TODO: Redundant? Check.
+if MPI4PY and FFTW3:  # ..TODO: Redundant? Check.
     path_sources = 'fluidsim/operators/fft/Sources_fftw2dmpiccy'
@@ -45,7 +52,8 @@
     path_sources = 'fluidsim/operators/fft/Sources_fftw2dmpiccy'
-    include_dirs = [path_sources, np.get_include()] + dico_inc['mpi'] + dico_inc['fftw']
-    libraries = dico_ldd['mpi'] + dico_ldd['fftw'] + ['m']
-    library_dirs = dico_lib['mpi'] + dico_lib['fftw']
+    include_dirs = [path_sources, np.get_include()] + \
+        dict_inc['mpi'] + dict_inc['fftw']
+    libraries = dict_ldd['mpi'] + dict_ldd['fftw'] + ['m']
+    library_dirs = dict_lib['mpi'] + dict_lib['fftw']
 
     ext_fftw2dmpiccy = Extension(
         'fluidsim.operators.fft.fftw2dmpiccy',
@@ -53,8 +61,8 @@
         libraries=libraries,
         library_dirs=library_dirs,
         sources=[path_sources+'/libcfftw2dmpi.c',
-                 path_sources+'/fftw2dmpiccy.pyx'])
+                 path_sources + '/fftw2dmpiccy.' + ext_source])
     ext_modules.append(ext_fftw2dmpiccy)
 
 if FFTW3:
     path_sources = 'fluidsim/operators/fft/Sources_fftw2dmpicy'
@@ -57,10 +65,11 @@
     ext_modules.append(ext_fftw2dmpiccy)
 
 if FFTW3:
     path_sources = 'fluidsim/operators/fft/Sources_fftw2dmpicy'
-    include_dirs = [path_sources, np.get_include()] + dico_inc['mpi'] + dico_inc['fftw']
-    libraries = dico_ldd['mpi'] + dico_ldd['fftw'] + ['m']
-    library_dirs = dico_lib['mpi'] + dico_lib['fftw']
+    include_dirs = [path_sources, np.get_include()] + \
+        dict_inc['mpi'] + dict_inc['fftw']
+    libraries = dict_ldd['mpi'] + dict_ldd['fftw'] + ['m']
+    library_dirs = dict_lib['mpi'] + dict_lib['fftw']
 
     if FFTW3MPI:
         ext_fftw2dmpicy = Extension(
@@ -69,7 +78,7 @@
             libraries=libraries,
             library_dirs=library_dirs,
             cython_compile_time_env={'MPI4PY': MPI4PY},
-            sources=[path_sources+'/fftw2dmpicy.pyx'])
+            sources=[path_sources+'/fftw2dmpicy.' + ext_source])
         ext_modules.append(ext_fftw2dmpicy)
 
 path_sources = 'fluidsim/operators/CySources'
@@ -73,9 +82,9 @@
         ext_modules.append(ext_fftw2dmpicy)
 
 path_sources = 'fluidsim/operators/CySources'
-include_dirs = [path_sources, np.get_include()] + dico_inc['mpi']
-libraries = dico_ldd['mpi'] + ['m']
-library_dirs = dico_lib['mpi']
+include_dirs = [path_sources, np.get_include()] + dict_inc['mpi']
+libraries = dict_ldd['mpi'] + ['m']
+library_dirs = dict_lib['mpi']
 
 ext_operators = Extension(
     'fluidsim.operators.operators',
@@ -83,7 +92,7 @@
     libraries=libraries,
     library_dirs=library_dirs,
     cython_compile_time_env={'MPI4PY': MPI4PY},
-    sources=[path_sources+'/operators_cy.pyx'])
+    sources=[path_sources+'/operators_cy.' + ext_source])
 
 ext_misc = Extension(
     'fluidsim.operators.miscellaneous',
@@ -91,7 +100,7 @@
     libraries=libraries,
     library_dirs=library_dirs,
     cython_compile_time_env={'MPI4PY': MPI4PY},
-    sources=[path_sources+'/miscellaneous_cy.pyx'])
+    sources=[path_sources+'/miscellaneous_cy.' + ext_source])
 
 
 path_sources = 'fluidsim/base/time_stepping'
@@ -102,10 +111,10 @@
         np.get_include()],
     libraries=['m'],
     library_dirs=[],
-    sources=[path_sources+'/pseudo_spect_cy.pyx'])
+    sources=[path_sources+'/pseudo_spect_cy.' + ext_source])
 
 ext_modules.extend([
     ext_operators,
     ext_misc,
     ext_cyfunc])
 
@@ -106,10 +115,10 @@
 
 ext_modules.extend([
     ext_operators,
     ext_misc,
     ext_cyfunc])
 
-print('The following extensions are going to be built if necessary:\n' +
+print('The following extensions could be built if necessary:\n' +
       ''.join([ext.name + '\n' for ext in ext_modules]))