matrix-implementation