use setf instead defvar