looks like copy paste. Haven't we seen code like this before? Can we put it somewhere common (object Matrix2 for instance?)