I tried implementing my own model:
```
class Line(models.ParametricModel):
    parnames = ['slope', 'intercept']    
    def __init__(self, slope, intercept, paramdim=1):
        self.linear = True
        self.ndim = 1
        self.outdim = 1
        self._slope = parameters._Parameter(name='slope', val=slope, mclass=self, paramdim=paramdim)
        self._intercept = parameters._Parameter(name='intercept', val=intercept, mclass=self, paramdim=paramdim)
        ParametricModel.__init__(self, self.parnames, paramdim=paramdim)
    def eval(self, x, params):
        return params[0] * x + params[1]
    def __call__(self, x):
        x, format = _convert_input(x, self.paramdim)
        result = self.eval(x, self.psets)
        return _convert_output(result, format)

model = Line(slope=1, intercept=1)
```
I get an `AttributeError: can't set attribute` for `self.ndim = 1`!?