with matrix