diff --git a/meshmode/mesh/__init__.py b/meshmode/mesh/__init__.py
index 2347a87a7a287f0fc4d23dc60a167799b1b34eb5..6bd4b92492de942de1ca0c388207d63d44257973 100644
--- a/meshmode/mesh/__init__.py
+++ b/meshmode/mesh/__init__.py
@@ -344,7 +344,6 @@ class Mesh(Record):
 
         return self._element_connectivity
 
-
     # Design experience: Try not to add too many global data structures to the
     # mesh. Let the element groups be responsible for that at the mesh level.
     #
@@ -423,6 +422,10 @@ def _compute_connectivity_from_vertices(mesh):
             for ivertex in grp.vertex_indices[iel_grp]:
                 element_to_element[iel_base + iel_grp].update(
                         vertex_to_element[ivertex])
+
+    for iel, neighbors in enumerate(element_to_element):
+        neighbors.remove(iel)
+
     lengths = [len(el_list) for el_list in element_to_element]
     neighbors_starts = np.cumsum(
             np.array([0] + lengths, dtype=mesh.element_id_dtype))
diff --git a/meshmode/mesh/visualization.py b/meshmode/mesh/visualization.py
index 2b19da7f38c77d0a9d44af862a3164978e5b3ab2..8966861b168f5d740a099e5ec4ad80baccdba4b0 100644
--- a/meshmode/mesh/visualization.py
+++ b/meshmode/mesh/visualization.py
@@ -30,7 +30,7 @@ import numpy as np
 # {{{ draw_2d_mesh
 
 def draw_2d_mesh(mesh, draw_vertex_numbers=True, draw_element_numbers=True,
-        **kwargs):
+        draw_connectivity=False, **kwargs):
     assert mesh.ambient_dim == 2
 
     import matplotlib.pyplot as pt
@@ -57,8 +57,7 @@ def draw_2d_mesh(mesh, draw_vertex_numbers=True, draw_element_numbers=True,
             pt.gca().add_patch(patch)
 
             if draw_element_numbers:
-                centroid = (np.sum(elverts, axis=1)
-                        / elverts.shape[1])
+                centroid = (np.sum(elverts, axis=1) / elverts.shape[1])
 
                 if len(mesh.groups) == 1:
                     el_label = str(iel)
@@ -75,6 +74,42 @@ def draw_2d_mesh(mesh, draw_vertex_numbers=True, draw_element_numbers=True,
                     ha="center", va="center", color="blue",
                     bbox=dict(facecolor='white', alpha=0.5, lw=0))
 
+    if draw_connectivity:
+        def global_iel_to_group_and_iel(global_iel):
+            for igrp, grp in enumerate(mesh.groups):
+                if global_iel < grp.nelements:
+                    return grp, global_iel
+                global_iel -= grp.nelements
+
+            raise ValueError("invalid element nr")
+
+        cnx = mesh.element_connectivity
+
+        nb_starts = cnx.neighbors_starts
+        for iel_g in range(mesh.nelements):
+            for nb_iel_g in cnx.neighbors[nb_starts[iel_g]:nb_starts[iel_g+1]]:
+                assert iel_g != nb_iel_g
+
+                grp, iel = global_iel_to_group_and_iel(iel_g)
+                nb_grp, nb_iel = global_iel_to_group_and_iel(nb_iel_g)
+
+                elverts = mesh.vertices[:, grp.vertex_indices[iel]]
+                nb_elverts = mesh.vertices[:, nb_grp.vertex_indices[nb_iel]]
+
+                centroid = (np.sum(elverts, axis=1) / elverts.shape[1])
+                nb_centroid = (np.sum(nb_elverts, axis=1) / nb_elverts.shape[1])
+
+                dx = nb_centroid - centroid
+                start = centroid + 0.15*dx
+
+                mag = np.max(np.abs(dx))
+                start += 0.05*(np.random.rand(2)-0.5)*mag
+                dx += 0.05*(np.random.rand(2)-0.5)*mag
+
+                pt.arrow(start[0], start[1], 0.7*dx[0], 0.7*dx[1],
+                        length_includes_head=True,
+                        color="green", head_width=1e-2, lw=1e-2)
+
 # }}}
 
 # vim: foldmethod=marker
diff --git a/test/test_meshmode.py b/test/test_meshmode.py
index 34521057e135ae0e9eae634685f1a4191d44d9ce..6047113c956d1f616c57fc6610b8a75393b90db0 100644
--- a/test/test_meshmode.py
+++ b/test/test_meshmode.py
@@ -351,7 +351,7 @@ def test_rect_mesh(do_plot=False):
 
     if do_plot:
         from meshmode.mesh.visualization import draw_2d_mesh
-        draw_2d_mesh(mesh, fill=None)
+        draw_2d_mesh(mesh, fill=None, draw_connectivity=True)
         import matplotlib.pyplot as pt
         pt.show()