Well...this patch is still in progress basically :)
We did most of the things in the TODO, I can open on issue about the session specific option and remove the comment.

I'm also tempted to put the inner MappingServiceContext intterface outside.