diff --git a/Module.cs b/Module.cs
index 1618fa38cc439ad351d3150f959974142ac930b2..ca8de8fe12136fdd3a02082c11bf5dda3ae63595 100644
--- a/Module.cs
+++ b/Module.cs
@@ -102,7 +102,7 @@ class GlobalModuleResource
 interface Module
 {
 	IEnumerable<Element> Get();
-	void Init(StatusBar _bar, ConfigSection section);
+	void Init(ModuleParent _bar, ConfigSection section);
 }
 
 
@@ -111,7 +111,7 @@ class ModuleConstant: Module
 {
 	string text;
 	Color color;
-	public void Init(StatusBar _bar, ConfigSection section)
+	public void Init(ModuleParent _bar, ConfigSection section)
 	{
 		text = section.Mandatory("text");
 		color = section?["color"]?.AsColor() ?? System.Drawing.ColorTranslator.FromHtml("white");
@@ -130,7 +130,7 @@ class ModuleFile: Module
 	InnerStatusBar ifNotFound;
 	InnerStatusBar ifReadError;
 	Parser parser;
-	public void Init(StatusBar _bar, ConfigSection section)
+	public void Init(ModuleParent _bar, ConfigSection section)
 	{
 		path = section.Mandatory("path").AsPath();
 		ifNotFound  = new InnerStatusBar(_bar, section.Optional("not_found_handler")?.AsConfig() ??
@@ -173,7 +173,7 @@ text = ERR
 
 abstract class ModuleSourceThreadAndParser: Module
 {
-	protected StatusBar bar;
+	protected ModuleParent bar;
 	protected string data;
 	protected long dataTick;
 	Thread inputThread;
@@ -183,7 +183,7 @@ abstract class ModuleSourceThreadAndParser: Module
 	int? maxOld_ms;
 	int? showOld_ms;
 	protected abstract void inputThreadFunc();
-	public virtual void Init(StatusBar _bar, ConfigSection section)
+	public virtual void Init(ModuleParent _bar, ConfigSection section)
 	{
 		bar = _bar;
 		ifNoData  = new InnerStatusBar(_bar, section.Optional("no_data_handler")?.AsConfig() ??
@@ -235,7 +235,7 @@ abstract class ModuleSourceThreadAndParser: Module
 abstract class ModuleAbstractPipe: ModuleSourceThreadAndParser
 {
 	int msgSeparator;
-	public override void Init(StatusBar _bar, ConfigSection section)
+	public override void Init(ModuleParent _bar, ConfigSection section)
 	{
 		msgSeparator = section.Optional("separator")?.AsInt() ?? 0;
 		base.Init(_bar, section);
@@ -279,7 +279,7 @@ abstract class ModuleAbstractPipe: ModuleSourceThreadAndParser
 class ModulePipe: ModuleAbstractPipe
 {
 	string path;
-	public override void Init(StatusBar _bar, ConfigSection section)
+	public override void Init(ModuleParent _bar, ConfigSection section)
 	{
 		path = section.Mandatory("path").AsPath();
 		base.Init(_bar, section);
@@ -314,7 +314,7 @@ class ModuleExec: ModuleAbstractPipe
 	string arguments;
 	Process process;
 	string stdinString;
-	public override void Init(StatusBar _bar, ConfigSection section)
+	public override void Init(ModuleParent _bar, ConfigSection section)
 	{
 		programName = section.Mandatory("program").AsPath();
 		stdinString = section.Optional("stdin")?.AsString() ?? "";
@@ -346,7 +346,7 @@ class ModuleHttp: ModuleSourceThreadAndParser
 	InnerStatusBar ifReadError;
 	int period_ms;
 	int timeout_ms;
-	public override void Init(StatusBar _bar, ConfigSection section)
+	public override void Init(ModuleParent _bar, ConfigSection section)
 	{
 		url = section.Mandatory("url").AsString();
 		ifReadError  = new InnerStatusBar(_bar, section.Optional("error_handler")?.AsConfig() ??
@@ -493,7 +493,7 @@ class ModuleI3Status: Module
 			}
 		}
 	}
-	public void Init(StatusBar _bar, ConfigSection section)
+	public void Init(ModuleParent _bar, ConfigSection section)
 	{
 		name = section["name"];
 		configuration = section.Optional("config")?.AsString();
@@ -517,12 +517,12 @@ class ModuleI3Status: Module
 [ModuleName("time")]
 class ModuleTime: Module
 {
-	StatusBar bar;
+	ModuleParent bar;
 	string format;
 	string shortFormat;
 	bool refresh;
 	int round_ms;
-	public void Init(StatusBar _bar, ConfigSection section)
+	public void Init(ModuleParent _bar, ConfigSection section)
 	{
 		bar = _bar;
 		format = section.Optional("format")?.AsString() ?? "yyyy-MM-dd HH:mm:ss";
@@ -559,7 +559,7 @@ class ModuleBattery: Module
 			int energy
 			);
 	Queue<HistoryElement> history = new();
-	public void Init(StatusBar _bar, ConfigSection section)
+	public void Init(ModuleParent _bar, ConfigSection section)
 	{
 		string instance = section.Optional("instance")?.AsString() ?? "BAT1";
 		path = section.Optional("path")?.AsPath() ?? $"/sys/class/power_supply/{instance}/uevent";
diff --git a/Parsers.cs b/Parsers.cs
index e8eebbaf168be091a8437bd8772064db432120cc..7f674c47f949f0f20cdeeefd4fa4e708c761543d 100644
--- a/Parsers.cs
+++ b/Parsers.cs
@@ -96,7 +96,7 @@ class ParserGetter: GlobalModuleResource
 interface Parser
 {
 	IEnumerable<Element> Parse(string s);
-	void Init(StatusBar _bar, Module _module, ConfigSection section);
+	void Init(ModuleParent _bar, Module _module, ConfigSection section);
 }
 
 #nullable disable
@@ -105,7 +105,7 @@ interface Parser
 class ParserText: Parser
 {
 	Color color;
-	public void Init(StatusBar _bar, Module _module, ConfigSection section)
+	public void Init(ModuleParent _bar, Module _module, ConfigSection section)
 	{
 		color = section.Optional("color")?.AsColor() ?? System.Drawing.ColorTranslator.FromHtml("white");
 	}
@@ -119,7 +119,7 @@ class ParserText: Parser
 [ParserName("osdd_last")]
 class ParserOsddLast: Parser
 {
-	public void Init(StatusBar _bar, Module _module, ConfigSection section)
+	public void Init(ModuleParent _bar, Module _module, ConfigSection section)
 	{
 	}
 	public IEnumerable<Element> Parse(string data)
@@ -148,8 +148,8 @@ class ParserOsddLast: Parser
 [ParserName("checkmail_status")]
 class ParserCheckmailLog: Parser
 {
-	StatusBar bar;
-	public void Init(StatusBar _bar, Module _module, ConfigSection section)
+	ModuleParent bar;
+	public void Init(ModuleParent _bar, Module _module, ConfigSection section)
 	{
 		bar = _bar;
 	}
@@ -192,7 +192,7 @@ class ParserCheckmailLog: Parser
 [ParserName("offlineimap_status")]
 class ParserOfflineimapLog: Parser
 {
-	public void Init(StatusBar _bar, Module _module, ConfigSection section)
+	public void Init(ModuleParent _bar, Module _module, ConfigSection section)
 	{
 	}
 	public IEnumerable<Element> Parse(string data)
@@ -217,7 +217,7 @@ class ParserOfflineimapLog: Parser
 [ParserName("i3")]
 class ParserI3: Parser
 {
-	public void Init(StatusBar _bar, Module _module, ConfigSection section){}
+	public void Init(ModuleParent _bar, Module _module, ConfigSection section){}
 	static Element parseElement(JsonNode _json)
 	{
 		var json = _json.AsObject();
@@ -268,7 +268,7 @@ class ParserI3: Parser
 class ParserICESpeed: Parser
 {
 	#pragma warning disable 8602
-	public void Init(StatusBar _bar, Module _module, ConfigSection section)
+	public void Init(ModuleParent _bar, Module _module, ConfigSection section)
 	{
 	}
 	public IEnumerable<Element> Parse(string data)
@@ -291,7 +291,7 @@ class ParserICESpeed: Parser
 class ParserICENextStop: Parser
 {
 	#pragma warning disable 8602
-	public void Init(StatusBar _bar, Module _module, ConfigSection section)
+	public void Init(ModuleParent _bar, Module _module, ConfigSection section)
 	{
 	}
 	public IEnumerable<Element> Parse(string data)
diff --git a/Program.cs b/Program.cs
index 0ae3803ad8618850ee7ac03a60a5ad01c121395b..dbf0c2788807476328557c791bf53f3d8f9848db 100644
--- a/Program.cs
+++ b/Program.cs
@@ -118,7 +118,13 @@ record Element(
 	);
 
 
-abstract class StatusBar
+interface  ModuleParent
+{
+	public abstract void Schedule(int in_ms);
+	public abstract T GetGlobal<T>() where T: GlobalModuleResource, new();
+}
+
+abstract class StatusBar: ModuleParent
 {
 	List<Module> modules = new();
 	protected void parseConfigFile(FileInfo configFile)
@@ -171,8 +177,8 @@ abstract class StatusBar
 
 class InnerStatusBar: StatusBar
 {
-	StatusBar parrent;
-	public InnerStatusBar(StatusBar _parrent, ConfigParser p)
+	ModuleParent parrent;
+	public InnerStatusBar(ModuleParent _parrent, ConfigParser p)
 	{
 		parrent = _parrent;
 		parseConfig(p);