I'm actually not familiar with any of the other papers except for CCM89, but I was under the impression that the parameterization of most of them (with the exception of WD01/D03) was pretty similar. Is that not the case?

As  I see it, there's a good reason for F99, WD01, D03 and possibly FM07 to be implemented as classes: they hold data (a spline fit) used in function calls. For CCM89, OD94, and GCC99, there's no data to hold: it is just a function. 

If we want to eventually make these into Models that have a current parameter, then yes: at that point, it makes sense to have Model subclasses for CCM89, OD94, and GCC09 that hold parameters.

But at this point, I find it easier to do
```python
extinction_ccm89(wave, a_v=1.)
```
than
```python
f = ExtinctionCCM89()
f(wave, a_v=1.)
```