diff --git a/bfps/__init__.py b/bfps/__init__.py
index 08532a02b43e6a74b5ae94c643f15c6b7a075a21..324c42f63ce39e78b5c646f6062b7a702ffe9795 100644
--- a/bfps/__init__.py
+++ b/bfps/__init__.py
@@ -49,7 +49,7 @@ except DistributionNotFound:
 install_info = pickle.load(
         open(os.path.join(os.path.dirname(here),
                           'install_info.pickle'),
-             'r'))
+             'rb'))
 
 from .code import code
 from .fluid_converter import fluid_converter
diff --git a/bfps/base.py b/bfps/base.py
index 528db8260fc561890481feaba56a116a29902abb..2ed050f870e521abc024f772381905592121efe9 100644
--- a/bfps/base.py
+++ b/bfps/base.py
@@ -48,8 +48,7 @@ class base(object):
         self.simname = simname
         return None
     def cdef_pars(self):
-        key = self.parameters.keys()
-        key.sort()
+        key = sorted(list(self.parameters.keys()))
         src_txt = ''
         for i in range(len(key)):
             if type(self.parameters[key[i]]) == int:
@@ -60,8 +59,7 @@ class base(object):
                 src_txt += 'double ' + key[i] + ';\n'
         return src_txt
     def cread_pars(self):
-        key = self.parameters.keys()
-        key.sort()
+        key = sorted(list(self.parameters.keys()))
         src_txt = ('int read_parameters(hid_t data_file_id)\n{\n'
                  + 'hid_t dset, memtype, space;\n'
                  + 'hsize_t dims[1];\n'
diff --git a/bfps/code.py b/bfps/code.py
index 478ef8ad9b61c6f3e1d76bdb2c650f9060787103..bbd2de527eb719c666f0fff1ff46e32c43cf147a 100644
--- a/bfps/code.py
+++ b/bfps/code.py
@@ -139,7 +139,7 @@ class code(base):
             raise IOError('header not there:\n' +
                           '{0}\n'.format(os.path.join(bfps.header_dir, 'base.hpp')) +
                           '{0}\n'.format(bfps.dist_loc))
-        libraries = ['bfps'] + bfps.install_info['libraries']
+        libraries = ['bfps.cpython-34m'] + bfps.install_info['libraries']
 
         command_strings = ['g++']
         command_strings += [self.name + '.cpp', '-o', self.name]
diff --git a/tests/test_plain.py b/tests/test_plain.py
index 596eb0e9323c81e4d0c8c504b093aa2b1c95b0f9..a4f032ccf535057e4a89ef0cac7080d4673beff2 100755
--- a/tests/test_plain.py
+++ b/tests/test_plain.py
@@ -46,12 +46,12 @@ def plain(opt):
     assert(opt.niter_todo % 3 == 0)
     opt.work_dir = wd + '/N{0:0>3x}_2'.format(opt.n)
     opt.njobs *= 2
-    opt.niter_todo /= 2
+    opt.niter_todo = opt.niter_todo//2
     c1 = launch(opt, dt = c0.parameters['dt'])
     c1.compute_statistics()
     opt.work_dir = wd + '/N{0:0>3x}_3'.format(opt.n)
-    opt.njobs = 3*opt.njobs/2
-    opt.niter_todo = 2*opt.niter_todo/3
+    opt.njobs = 3*opt.njobs//2
+    opt.niter_todo = 2*opt.niter_todo//3
     c2 = launch(opt, dt = c0.parameters['dt'])
     c2.compute_statistics()
     # plot energy and enstrophy
diff --git a/tox_plain.ini b/tox_plain.ini
index 1af8e3cd72aeb99524d339dbf9cd13ca306d1f2a..ad816b8378eab61dcfcc679f9704bffa09e6cb78 100644
--- a/tox_plain.ini
+++ b/tox_plain.ini
@@ -1,6 +1,7 @@
 [tox]
-envlist = py27
+envlist = py34
 [testenv]
+deps = matplotlib
 whitelist_externals =
     echo
     cp