anchor.diff:     "Please specify the path to your app dir with the :ROOT-PATH key." :test #'string=)
   
   (defvar *brac-apps* '() "launched web projects with separate configs")
  +
   ;; TODO: move inside brac-appstate maybe?
   (defvar *hooks-running* '() "used to avoid accidental endless recursions when handling state changes")
   
  
positive.code:   "Answer the questions of the Wizard of Braculon and behold his wondrous magic."
    nil)
  
  ;; TODO optional config, wizard on *query-io*
  (defgeneric start (state &key if-running server port)
    (:method ((state brac-appstate) &key if-running (server :woo) (port 5000))
      (let ((clack-result (clack:clackup state :server server :port port
  					:use-default-middlewares nil)))
        (when clack-result
  	(with-slots (clack-handler launch-time is-running-p) state
  	  (setf clack-handler clack-result)
  	  (setf launch-time (get-universal-time))
  	  (setf is-running-p t)
  	  clack-result)))))
  
  (defgeneric stop (state)
    (:method ((state brac-appstate))
  
negative.code: 	  (clack:stop clack-handler)
  	  (setf clack-handler nil)
  	  (setf is-running-p nil)
  	  (setf *brac-apps* (delete state *brac-apps*))
  	  t))))
  
  (defun load-app (path)
  