def track_dependency(name, clr, *ver, &blk)
options = ver.last.is_a?(Hash) ? ver.pop : {}
new_dep = Gem::Dependency.new(name, ver.empty? ? nil : ver)
new_dep.require_block = blk
new_dep.require_as = options.key?(:require_as) ? options[:require_as] : name
new_dep.original_caller = clr
deps = Merb::BootLoader::Dependencies.dependencies
idx = deps.each_with_index {|d,i| break i if d.name == new_dep.name}
idx = idx.is_a?(Array) ? deps.size + 1 : idx
deps.delete_at(idx)
deps.insert(idx - 1, new_dep)
new_dep
end