use unique_ptr for UnaryExpression