diff --git a/diffutil.py b/diffutil.py
index cf223ab..1d7748f 100644
--- a/diffutil.py
+++ b/diffutil.py
@@ -254,28 +254,23 @@ class Differ(object):
                 yield out0, out1
 
     def set_sequences_iter(self, *sequences):
-        if len(sequences)==0 or len(sequences)==1:
-            diffs = [[], []]
-        elif len(sequences)==2:
+        assert 0 <= len(sequences) <= 3
+        self.diffs = [[], []]
+        self.num_sequences = len(sequences)
+        self.seqlength = [len(s) for s in sequences]
+
+        if self.num_sequences == 2:
             matcher = IncrementalSequenceMatcher(None, sequences[1], sequences[0])
             work = matcher.initialise()
             while work.next() == None:
                 yield None
-            diffs = [matcher.get_difference_opcodes(), []]
-        elif len(sequences)==3:
-            diffs = [[], []]
+            self.diffs[0] = matcher.get_difference_opcodes()
+        elif self.num_sequences == 3:
             for i in range(2):
                 matcher = IncrementalSequenceMatcher(None, sequences[1], sequences[i*2])
                 work = matcher.initialise()
                 while work.next() == None:
                     yield None
-                diffs[i] = matcher.get_difference_opcodes()
-        else:
-            raise Exception("Bad number of arguments to Differ constructor (%i)" % len(sequences))
-        self.diffs = diffs
-        self.num_sequences = len(sequences)
-        self.seqlength = [0,0,0]
-        for i,s in enumerate(sequences):
-            self.seqlength[i] = len(s)
+                self.diffs[i] = matcher.get_difference_opcodes()
         yield 1
 
