Map Interface refactoring ( to-merge branch)

Just getting #740 up-to date with master for a merge.