more organized, start using MapItem interface