correctly uses gsub! (nil on return)