I'd perhaps try to make the function more generally useful. How about giving the option of passing on start, end indices? I.e., something like
```
def aggregate(self, func, start_indices=None, end_indices=None):