Reimplemented map with recursion: see 'recursive_map' method