allow nested UMaps

cleaner implementation for UMaps