def start(options = {}, &block)
root, file = options.delete(:root), options.delete(:file)
innate_options = Innate.options
found_root = go_figure_root(caller, :root => root, :file => file)
innate_options.roots = [*found_root] if found_root
PROXY_OPTIONS.each{|given, proxy| options[proxy] = options[given] }
options.delete_if{|key, value| PROXY_OPTIONS[key] || value.nil? }
innate_options.merge!(options)
setup_dependencies
middleware!(innate_options.mode, &block) if block_given?
return if innate_options.started
innate_options.started = true
signal = innate_options.trap
trap(signal){ stop(10) } if signal
start!
end