diff --git a/requirements.txt b/requirements.txt
index 42ee76a79a7fd76d7edafd9308b3f09f3cc5f5e6..5320632481f24ecac2d4bbb06e8d24b2c33dee7e 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -5,6 +5,6 @@ git+https://github.com/inducer/pytools#egg=pytools
 git+https://github.com/inducer/pymbolic#egg=pymbolic
 git+https://github.com/inducer/islpy#egg=islpy
 git+https://github.com/inducer/pyopencl#egg=pyopencl
-git+https://github.com/inducer/boxtree#egg=boxtree
+git+https://github.com/isuruf/boxtree@multi_p2e#egg=boxtree
 git+https://github.com/inducer/loopy#egg=loo.py
 git+https://github.com/inducer/pyfmmlib#egg=pyfmmlib
diff --git a/sumpy/fmm.py b/sumpy/fmm.py
index 157bd5f53179cc5dc5451a8c5005548f5537297a..cb35fb53113bbc7f574d8840f80d535c1cf6b43c 100644
--- a/sumpy/fmm.py
+++ b/sumpy/fmm.py
@@ -372,7 +372,7 @@ class SumpyExpansionWrangler:
                     self.queue,
                     source_boxes=source_boxes[start:stop],
                     centers=self.tree.box_centers,
-                    strengths=(src_weights,),
+                    strengths=src_weights,
                     tgt_expansions=mpoles_view,
                     tgt_base_ibox=level_start_ibox,
 
@@ -457,7 +457,7 @@ class SumpyExpansionWrangler:
                 target_boxes=target_boxes,
                 source_box_starts=source_box_starts,
                 source_box_lists=source_box_lists,
-                strength=(src_weights,),
+                strength=src_weights,
                 result=pot,
 
                 **kwargs)
@@ -588,7 +588,7 @@ class SumpyExpansionWrangler:
                     source_box_starts=starts[start:stop+1],
                     source_box_lists=lists,
                     centers=self.tree.box_centers,
-                    strengths=(src_weights,),
+                    strengths=src_weights,
 
                     tgt_expansions=target_local_exps_view,
                     tgt_base_ibox=target_level_start_ibox,
diff --git a/test/test_fmm.py b/test/test_fmm.py
index 45c17c38fb42fa6aad21001fed896bb530491ff4..73fd236ce29b7ff8445af9440efa17f4e7ab89ec 100644
--- a/test/test_fmm.py
+++ b/test/test_fmm.py
@@ -179,7 +179,7 @@ def test_sumpy_fmm(ctx_factory, knl, local_expn_class, mpole_expn_class):
 
         from boxtree.fmm import drive_fmm
 
-        pot, = drive_fmm(trav, wrangler, weights)
+        pot, = drive_fmm(trav, wrangler, (weights,))
 
         from sumpy import P2P
         p2p = P2P(ctx, out_kernels, exclude_self=False)
@@ -249,7 +249,7 @@ def test_sumpy_fmm_timing_data_collection(ctx_factory):
     from boxtree.fmm import drive_fmm
 
     timing_data = {}
-    pot, = drive_fmm(trav, wrangler, weights, timing_data=timing_data)
+    pot, = drive_fmm(trav, wrangler, (weights,), timing_data=timing_data)
     print(timing_data)
     assert timing_data
 
@@ -308,7 +308,7 @@ def test_sumpy_fmm_exclude_self(ctx_factory):
 
     from boxtree.fmm import drive_fmm
 
-    pot, = drive_fmm(trav, wrangler, weights)
+    pot, = drive_fmm(trav, wrangler, (weights,))
 
     from sumpy import P2P
     p2p = P2P(ctx, out_kernels, exclude_self=True)
diff --git a/test/test_kernels.py b/test/test_kernels.py
index 2435cc250999f7c2626a6a5f594617f16c36557f..3d0dea7a82091fbdf57cccbf88e3b10cd77d3390 100644
--- a/test/test_kernels.py
+++ b/test/test_kernels.py
@@ -210,7 +210,8 @@ def test_p2e_multiple(ctx_factory, base_knl, expn_class):
             out_host=True, **extra_source_kwargs)
         expected_result += mpoles
 
-    assert np.allclose(actual_result, expected_result)
+    norm = la.norm(actual_result - expected_result)/la.norm(expected_result)
+    assert norm < 1e-12
 
 
 @pytest.mark.parametrize("order", [4])