You seem to be confused. GETF always operates on an immediate plist, unlike GET, which operates on the plist of a given symbol. Thus (GETF Z :A) always refers to the plist that is the value of the variable Z. Whether or not NIL is a symbol or has a plist does not enter into the picture. The correct result of (setq z ()) (setf (getf z :a) :b) z is the list (:a :b). -- Andy. --