modified: cachematrix.R