major refactor separating Add and NewMapItem