diff --git a/src/linearization.py b/src/linearization.py
index 32e3996a7610fac45cca0bd75652e90341e8052d..5f04a018d9c18d514bc931fd67298c838508c054 100644
--- a/src/linearization.py
+++ b/src/linearization.py
@@ -17,6 +17,7 @@
 
 import numpy as np
 
+from .multi_domain import MultiDomain
 from .operators.operator import Operator
 from .sugar import makeOp
 from .utilities import check_object_identity
@@ -124,6 +125,8 @@ class Linearization(Operator):
         return self._metric
 
     def __getitem__(self, name):
+        if not isinstance(self.domain, MultiDomain):
+            return NotImplemented
         return self.new(self._val[name], self._jac.ducktape_left(name))
 
     def __neg__(self):
diff --git a/src/operators/diagonal_operator.py b/src/operators/diagonal_operator.py
index 670e972219734c997d7abb14768da2be957650a8..557878278965838430033e96eb466c0f3e188368 100644
--- a/src/operators/diagonal_operator.py
+++ b/src/operators/diagonal_operator.py
@@ -94,7 +94,8 @@ class DiagonalOperator(EndomorphicOperator):
                 raise ValueError("spaces and domain must have the same length")
             for i, j in enumerate(self._spaces):
                 if diagonal.domain[i] != self._domain[j]:
-                    raise ValueError("Mismatch:\n{diagonal.domain[i]}\n{self._domain[j]}")
+                    raise ValueError(f"Mismatch between:\n{diagonal.domain[i]}\n"
+                                     f"and:\n{self._domain[j]}")
             if self._spaces == tuple(range(len(self._domain))):
                 self._spaces = None  # shortcut