'ranges must be given in the "correct" order *and* not
overlap.'

def __init__(self, ranges=None):

    self.ranges = {}
    self.length = 0
    if (ranges is not None):
        for rnge in ranges:
            self.append(*rnge)
