split into multiple files, more reasonable matrix and vector accessor naming