map_services and walk_services

Better implementation of the idea in #5.

`map_services` might not be the best name for this function, because it is not a fixed external map function, but a method of the service itself.