block UMap if can't use

this also makes sure that if we change the def and the UMap is not
compatible anymore with the arg it gets removed