need matrix decompose