worked on matrixlib