anchor.diff:  	   ,@(mapcar λ`(defun ,(symb name :- _) (entity) (,_1 (%get-from entity)))
   		     original-slot-names hidden-slot-names)
   
  -	   ,@(make-with-component with with-names c-inst hidden-slot-names)
  +	   (defmacro ,with (entity &body body)
  +	     (gen-slot-accessors
  +	      entity ',name ',original-slot-names
  +	      ',hidden-slot-names t body))
   
   	   (defun ,has (entity)
   	     (has-item-in-%component-bag-at
  
positive.code: 	       (declare (ignore default type))
  	       (and (listp s) (symbolp name)))))
      (every #'valid-slot slot-descriptions)))
  
  ;;----------------------------------------------------------------------
  
  ;; systems to be only able to modify one type of component but
  ;; view many what they can view has to be declared.
  
  (defvar debug-id-source -1)
  
  (defun def-system (system-name with update hidden-init primary-component-type
  		   friends pass-body hidden-slot-names original-slot-names
   		   c-inst getters with-name with-names reactive has-component id)
    (assert (and (symbolp primary-component-type)
  	       (every #'symbolp friends)
  	       (not (member primary-component-type friends))))
    (let* ((primary primary-component-type)
  	 (init (symb :initialize- system-name))
  	 (get (symb :get- system-name))
  	 (pass (gensym "pass"))
  	 (predicate has-component)
  	 (body
  	  (reduce λ`((,(symb :with- _1) entity ,@_))
  		  friends :initial-value pass-body)))
      `((defun ,pass (entity)
  	(macrolet ((,with-name (entity &body body)
  		     (make-with-component-internals
  		      entity ',with-names ',c-inst ',getters body)))
  	  (,with entity
  		 (labels ((,update (,@original-slot-names)
  			    (let ((component (%get-from entity)))
  			      ,@(mapcar λ`(setf (,_ component) ,_1)
  					hidden-slot-names
  					original-slot-names))))
  		   (declare (ignorable (function ,update)))
  		   ,@body))))
  
        (let ((created nil))
  	(defun ,init ()
  	  (when created
  	    (error ,(format nil "system for ~s has already been instantiated"
  			    primary)))
  	  (setf created
  		(add-system
  		 (,hidden-init
  		  :entities (%rummage-master #',predicate)
  		  :pass-function #',pass
  		  :friends ',friends
  		  :reactive-p ,reactive
  		  :component-id ,id
  		  :debug-id (incf debug-id-source)))))
  	(defmethod initialize-system ((name (eql ',system-name)))
  	  (,init))
  	(defun ,get ()
  	  (or created (error "system does has not been initialized")))
  	(defmethod get-system ((name (eql ',primary-component-type)))
  	  (,get))
  	(defmethod get-system ((name ,primary-component-type))
  	  (,get))))))
  
negative.code: 	 (init-pairs (mapcan λ`(,(kwd _) ,_1)
  			     hidden-slot-names
  			     original-slot-names))
  
  	 (system-init (symb :initialize- system-name))
  	 (get-system (symb :get- system-name))
  	 (pass (gensym "pass")))
      `(progn
         ;; the component itself
         (defstruct (,name (:include %component) (:conc-name nil))
  