down to just a single necessary matrix*vector function