So I think the way this should work:

`API` calls `mode.get_initialization_vector(self)` (needs naming help).

Then `AES` has:

```
def get_initialization_vector(self, api):
    return self.initialization_vector
```

And `ECB` has:

```
def get_initialization_vector(self, api):
     return api.get_initialization_vector_for_ecb(self)
```

and `API` has:

```
def get_initialization_vector_for_ecb(self, mode):
    return self._ffi.NULL
```