Rest of the matrix3 implementation, untested!