     if options.modules.length
       modules = tree.map (leaf) -> leaf.module
       modules = options.modules.filter (module) -> modules.indexOf(module) isnt -1
-      modules.unshift 'phyla/bootstrap' if modules.length
       tree = @load_tree modules
       # Filter with the fast options
       tree = tree.filter( (leaf) => 
-        leaf.module.indexOf('phyla/bootstrap') is 0 or 
-        options.modules.indexOf(leaf.module) isnt -1
+        return true if options.modules.indexOf(leaf.module) isnt -1
+        leaf.actions = leaf.actions.filter (action) =>
+          action.required
+        leaf.actions.length
       ) if options.fast
     # Emit event and return actions
     actions = []

  for module in modules then build_tree module
  tree

###
Load a module and return its actions
###
Tree::load_module = (module) ->
  @cache ?= {}
  return @cache[module] if @cache[module]
  @cache[module] = actions = []
  # Load the module
  callbacks = load module
  callbacks = [callbacks] unless Array.isArray callbacks
  for callback, i in callbacks
    # Module dependencies
    if typeof callback is 'string'
      actions.push callback
      continue
    callback = callback: callback if typeof callback is 'function'
    callback.hidden ?= true unless callback.name
    callback.name ?= "#{module}/#{i}"
    callback.module ?= module
    callback.index ?= i
    callback.skip = false
    callback.required = true if module.indexOf('phyla/bootstrap') is 0
    actions.push callback
  actions

module.exports = (modules, options, callback)->
  (new Tree).actions modules, options, callback

  setImmediate =>
    modules = [modules] unless Array.isArray modules
    modules = flatten modules
    # Buil a full tree
    try tree = @load_tree modules
    catch err
