improved MapController considerably by adding gateway abstractions