diff --git a/nifty4/operators/chain_operator.py b/nifty4/operators/chain_operator.py
index 965dbb156fff49aababa205d2dd286645cf014a2..15d71ea0d2571f24f6925a708ba32a3dc931c4ee 100644
--- a/nifty4/operators/chain_operator.py
+++ b/nifty4/operators/chain_operator.py
@@ -64,7 +64,7 @@ class ChainOperator(LinearOperator):
                     opsnew[i] = opsnew[i]._scale(fct)
                     fct = 1.
                     break
-        if fct != 1:
+        if fct != 1 or len(opsnew) == 0:
             # have to add the scaling operator at the end
             opsnew.append(ScalingOperator(fct, lastdom))
         ops = opsnew
@@ -83,6 +83,8 @@ class ChainOperator(LinearOperator):
     @staticmethod
     def make(ops):
         ops = tuple(ops)
+        if len(ops) == 0:
+            raise ValueError("ops is empty")
         ops = ChainOperator.simplify(ops)
         if len(ops) == 1:
             return ops[0]
diff --git a/nifty4/operators/sum_operator.py b/nifty4/operators/sum_operator.py
index 2680bc4384a55310055d8ce37b9fe72e824b533d..6755e52942e3267dac9da278d0faad73b48a018f 100644
--- a/nifty4/operators/sum_operator.py
+++ b/nifty4/operators/sum_operator.py
@@ -108,6 +108,8 @@ class SumOperator(LinearOperator):
     def make(ops, neg):
         ops = tuple(ops)
         neg = tuple(neg)
+        if len(ops) == 0:
+            raise ValueError("ops is empty")
         if len(ops) != len(neg):
             raise ValueError("length mismatch between ops and neg")
         ops, neg = SumOperator.simplify(ops, neg)