The function `sql-add-product' adds an element corresponding to a sql-product P to the alist `sql-product-alist', with P as intended key. But the level of nesting in the call to add-to-list is one to deep, as should be obvious from the snippet below. sql.el: (defun sql-add-product (product display &rest plist) [...] ;; Don't do anything if the product is already supported (if (assoc product sql-product-alist) (user-error "Product `%s' is already defined" product) ;; Add product to the alist (add-to-list 'sql-product-alist `((,product :name ,display . ,plist))) [...])) -ap