moved data storage from arrays to dicts
because of the sparseness of data dicts are more memory and time efficient

Sparse matrices were also considered, but couldn't find an implementation I like

Not implemented for single reads yet, as such this update breaks single reads.