anchor.diff:  
   (defun update-gui (&optional (width *display-width*)
                                (height *display-height*))
  -  (update-2d-view *gui-view* 0 0 width height))
  +  (update-2d-view *gui-view* 0 0 width height)
  +  (dolist (w (gui-widgets *gui*))
  +    (format t "Updatin layout of ~S~%" w)
  +    (apply-layout w)))
   
   (defun create-widget (widget-type parent-widget &rest initargs)
     (let ((created-widget (apply 'make-instance widget-type initargs)))
  
positive.code:   (apply-layout it))
  
  (defmethod apply-layout ((it gui-widget))
    ;; apply layout to children
    (unless (eq (gui-widget-layout it) :absolute)
      (let ((origin 0))
        (dolist (c (children it))
          (case (gui-widget-layout it)
            (:horizontal (progn (setf (pos-x c) origin)
                                ;;(setf (pos-y c) align)
                                (incf origin (width c))))
            (:vertical (progn (setf (pos-y c) origin)
                              ;;(setf (pos-x c) align)
                              (incf origin (height c))))
            (otherwise (error "Invalid layout specification: ~S~%"
                              (gui-widget-layout it))))))))
  
negative.code: (defclass gui-button (gui-widget)
    ((text :accessor text :initform '() :initarg :text)
     (action :accessor action :initform nil :initarg :action)
     (pressed :accessor gui-button-pressed :initform nil)
     (pressed-texture :accessor gui-button-pressed-texture :initform nil
                      :initarg :pressed-texture))
    (:default-initargs
      :color (create-color 1 1 1)
      :texture (create-texture-from-file "button.png"
  