Refactor VariableSource out of DialogEngine for better concurrency later