Would it make sense to make DenseDesignMatrix a subclass of this that is hard-coded to just have X and possibly y? That way we avoid needing to maintain two copies of the code.