By the way, have you thought about the maximum size of the map? You could use a matrix and unidimensional arrays to handle the entities on the grid. The unidimensional arrays should store the metadata of the entities(Sprite number, HP, Movement,Tag etc) and the matrix could store a reference to the arrays(Either the list index or a tag name).