Actually, no, I'd say they should be as written.  To implement this, you'd put this in the `CCDImage` class:
```
def __add__(self, other):
    if isinstance(other, CCDImage):
        return self.add(other)
    else:
        raise TypeError("can't add a CCDImage to something that's not a CCDImage")
```

The logic behind this is that for the generic `NDData`, you do *not* want to make the assumption that standard operations make sense.  For example, we certainly don't want ``ccdimage + datacube`` to work, because that would have to make assumptions about how to align the axes that may not be correct.  But ``ccdimage + ccdimage`` is a sensible operation, so it should work.