cachematrix: my version