first cut at matrix based smoothing