diff --git a/src/arithmetic_container.py b/src/arithmetic_container.py
index 1e962f1c5e0cf6788e532cff92601b286bcb8bd6..debe81e284905740eadc70c59b8afc3d1f80535f 100644
--- a/src/arithmetic_container.py
+++ b/src/arithmetic_container.py
@@ -5,7 +5,7 @@ import operator
 
 
 
-class ArithmeticList(list):
+class PythonArithmeticList(list):
     """A list with elementwise arithmetic operations."""
 
     def assert_same_length(self, other):
@@ -162,10 +162,19 @@ class ArithmeticList(list):
 
 
 
+# use fast native implementation, if available
+try:
+    from pylinear.array import ArithmeticList
+except ImportError:
+    ArithmeticList = PythonArithmeticList
+
+
+
+
 def join_fields(*fields):
     result = ArithmeticList()
     for f in fields:
-        if isinstance(f, list):
+        if isinstance(f, (ArithmeticList, list)):
             result.extend(f)
         else:
             result.append(f)