refactored Var VarDef; throw missing vs illegal