re-wrote Value class, evaluate() methods