more accurate types for value maps