function DataStoreStage.StoreOnValueChange(v,d,R)assert(type(d)=="\115\116\114\105\110\103","\066\097\100 \110\097\109\101")assert(typeof(R)=="\073\110\115\116\097\110\099\101","\066\097\100 \118\097\108\117\101\079\098\106")if v._takenKeys[d]then error(("\091\068\097\116\097\083\116\111\114\101\083\116\097\103\101\093 - \065\108\114\101\097\100\121 \104\097\118\101 \097 \119\114\105\116\101\114 \102\111\114 \037\113"):format(d))end v._takenKeys[d]=true local b=R.Changed:Connect(function()v:_doStore(d,R.Value)end)v._maid:GiveTask(b)return b end
--[=[
	Whenever the ValueObject changes, stores the resulting value in that entry.
	@param name string
	@param valueObj Instance -- ValueBase object to store on
	@return MaidTask
]=]
function DataStoreStage:StoreOnValueChange(name, valueObj)
	assert(type(name) == "string", "Bad name")
	assert(typeof(valueObj) == "Instance", "Bad valueObj")

	if self._takenKeys[name] then
		error(("[DataStoreStage] - Already have a writer for %q"):format(name))
	end

	self._takenKeys[name] = true
	local conn = valueObj.Changed:Connect(function()
		self:_doStore(name, valueObj.Value)
	end)
	self._maid:GiveTask(conn)
	return conn
end
