diff --git a/kwant/builder.py b/kwant/builder.py
index e59bc7e20ce6cca5da43d8030198e73072492d3d..82efecf1addb69a75373b5fee7d04768d4e7cb0c 100644
--- a/kwant/builder.py
+++ b/kwant/builder.py
@@ -130,7 +130,7 @@ class SiteFamily(object):
         except AttributeError:
             return False
 
-    def __neq__(self, other):
+    def __ne__(self, other):
         try:
             return self.canonical_repr != other.canonical_repr
         except AttributeError:
diff --git a/kwant/solvers/common.py b/kwant/solvers/common.py
index e8655648ca1f9f661038d82a470056924c7aed50..5b16533c27fde4905bf5fe0433206208dabf3cb4 100644
--- a/kwant/solvers/common.py
+++ b/kwant/solvers/common.py
@@ -148,7 +148,7 @@ class SparseSolver(object):
         lhs = lhs - energy * sp.identity(lhs.shape[0], format=self.lhsformat)
         num_orb = lhs.shape[0]
 
-        if check_hermiticity:
+        if check_hermiticity and len(lhs.data):
             rtol = 1e-13
             atol = 1e-300
             tol = rtol * np.max(np.abs(lhs.data)) + atol
diff --git a/kwant/solvers/sparse.py b/kwant/solvers/sparse.py
index f285ef8a1130a871ec5aef83653396d477d4331f..aae1226aefedad1c6c615ba8bb9614512401414b 100644
--- a/kwant/solvers/sparse.py
+++ b/kwant/solvers/sparse.py
@@ -15,10 +15,17 @@ from . import common
 
 # Note: previous code would have failed if UMFPACK was provided by scikit
 import scipy.sparse.linalg.dsolve.linsolve as linsolve
-umfpack = linsolve.umfpack
-uses_umfpack = linsolve.isUmfpack
 
 # check if we are actually using UMFPACK or rather SuperLU
+# TODO: remove the try (only using the except clause) once we depend on
+# scipy >= 0.14.0.
+try:
+	uses_umfpack = linsolve.isUmfpack
+except AttributeError:
+	uses_umfpack = linsolve.useUmfpack
+
+if uses_umfpack:
+	umfpack = linsolve.umfpack
 
 if uses_umfpack:
     # This patches a memory leak in SciPy:
diff --git a/setup.py b/setup.py
index 873a0498b4fdb2e962263291a4478257c357b4ab..bbafc61961362f752261048f569e4799cece985f 100755
--- a/setup.py
+++ b/setup.py
@@ -18,6 +18,7 @@ TUT_GLOB = 'doc/source/tutorial/*.py'
 TUT_HIDDEN_PREFIX = '#HIDDEN'
 
 import sys
+import re
 import os
 import glob
 import subprocess
@@ -35,8 +36,14 @@ try:
 except:
     cython_version = ()
 else:
-    cython_version = tuple(
-        int(n) for n in Cython.__version__.split('-')[0].split('.'))
+    match = re.match('([0-9.]*)(.*)', Cython.__version__)
+    cython_version = [int(n) for n in match.group(1).split('.')]
+    # Decrease version if the version string contains a suffix.
+    if match.group(2):
+        while cython_version[-1] == 0:
+            cython_version.pop()
+        cython_version[-1] -= 1
+    cython_version = tuple(cython_version)
 
 try:
     sys.argv.remove(NO_CYTHON_OPTION)