# Sources Sources are special objects that store a single value and are the core of Vide's reactivity. A source can be created using `source()`. ```luau local source = vide.source local count = source(0) ``` The value passed to `source()` is the initial value of the source. The value of a source can be set by calling it with an argument, and can be read by calling it with no arguments. ```luau count(count() + 1) -- increment count by 1 ``` Sources can be *derived* by wrapping them in functions. ```luau local count = source(0) local text = function() return "count: " .. tostring(count()) end print(text()) -- "count: 0" count(1) print(text()) -- "count: 1" ``` While the above can be achieved with plain variables, the use for sources will be obvious in the next part.