first pass at Matrix2D, onto 3D