update matrix construct functions