# Core

{% content-ref url="core/runner" %}
[runner](https://simplybamboo.gitbook.io/simplybamboo/raven/about/docs/core/runner)
{% endcontent-ref %}

{% content-ref url="core/loader" %}
[loader](https://simplybamboo.gitbook.io/simplybamboo/raven/about/docs/core/loader)
{% endcontent-ref %}

{% content-ref url="core/cleaner" %}
[cleaner](https://simplybamboo.gitbook.io/simplybamboo/raven/about/docs/core/cleaner)
{% endcontent-ref %}

```luau
-- lua
--[[
Raven

@Simply.Bamboo
https://discord.gg/kmSKEZKDAy
]]

--==Dependencies 
local Core = script:WaitForChild("Core")
local Load = require(Core:WaitForChild("Loader"))
local Run = require(Core:WaitForChild("Runner"))
local Clean = require(Core:WaitForChild("Cleaner"))
local Anti = require(Core:WaitForChild("Anti"))

--==Main
local Framework = {
	Storage = {}
}

--public
function Framework:Require(path)
	local current = self.Storage
	for segment in string.gmatch(path, "[^/.]+") do
		if current then current = current[segment] end
	end
	return current
end

return function() -- Ignite
	local storageFolder = script:WaitForChild("Storage")
	local scriptsFolder = script:WaitForChild("Scripts")


	Anti:Initialize()

	-- Cache
	Load(storageFolder, Framework.Storage)

	-- Run
	Run(scriptsFolder, Framework, Anti)

	-- Destroy
	task.delay(0.25, function()
		Clean(script)
	end)
	script:Destroy()
end
```
