more robust transition (better ArgumentException)