diff --git a/lib/roblox_emulator/src/context.rs b/lib/roblox_emulator/src/context.rs
index 297b9af..1c1db38 100644
--- a/lib/roblox_emulator/src/context.rs
+++ b/lib/roblox_emulator/src/context.rs
@@ -1,10 +1,6 @@
+use crate::util::static_ustr;
 use rbx_dom_weak::{types::Ref,InstanceBuilder,WeakDom};
 
-// disallow non-static lifetimes
-fn static_ustr(s:&'static str)->rbx_dom_weak::Ustr{
-	rbx_dom_weak::ustr(s)
-}
-
 #[derive(Debug)]
 pub enum ServicesError{
 	WorkspaceNotFound,
diff --git a/lib/roblox_emulator/src/lib.rs b/lib/roblox_emulator/src/lib.rs
index fd38760..7fdd9dd 100644
--- a/lib/roblox_emulator/src/lib.rs
+++ b/lib/roblox_emulator/src/lib.rs
@@ -1,3 +1,4 @@
+mod util;
 pub mod runner;
 pub mod context;
 #[cfg(feature="run-service")]
diff --git a/lib/roblox_emulator/src/runner/instance/instance.rs b/lib/roblox_emulator/src/runner/instance/instance.rs
index 02d75eb..f59daa4 100644
--- a/lib/roblox_emulator/src/runner/instance/instance.rs
+++ b/lib/roblox_emulator/src/runner/instance/instance.rs
@@ -4,14 +4,10 @@ use mlua::{FromLua,FromLuaMulti,IntoLua,IntoLuaMulti};
 use rbx_types::Ref;
 use rbx_dom_weak::{Ustr,InstanceBuilder,WeakDom};
 
+use crate::util::static_ustr;
 use crate::runner::vector3::Vector3;
 use crate::runner::number::Number;
 
-// disallow non-static lifetimes
-fn static_ustr(s:&'static str)->rbx_dom_weak::Ustr{
-	rbx_dom_weak::ustr(s)
-}
-
 pub fn set_globals(lua:&mlua::Lua,globals:&mlua::Table)->Result<(),mlua::Error>{
 	//class functions store
 	lua.set_app_data(ClassMethodsStore::default());
diff --git a/lib/roblox_emulator/src/runner/runner.rs b/lib/roblox_emulator/src/runner/runner.rs
index 8220fe6..75a8521 100644
--- a/lib/roblox_emulator/src/runner/runner.rs
+++ b/lib/roblox_emulator/src/runner/runner.rs
@@ -1,4 +1,5 @@
 use crate::context::Context;
+use crate::util::static_ustr;
 #[cfg(feature="run-service")]
 use crate::scheduler::scheduler_mut;
 
@@ -125,7 +126,7 @@ impl Runnable<'_>{
 	pub fn run_service_step(&self)->Result<(),mlua::Error>{
 		let render_stepped_signal=super::instance::instance::dom_mut(&self.lua,|dom|{
 			let run_service=super::instance::instance::find_first_child_of_class(dom,dom.root(),"RunService").ok_or_else(||mlua::Error::runtime("RunService missing"))?;
-			Ok(match run_service.userdata.get(&rbx_dom_weak::ustr("RenderStepped")){
+			Ok(match run_service.userdata.get(&static_ustr("RenderStepped")){
 				Some(render_stepped)=>Some(render_stepped.borrow::<super::script_signal::ScriptSignal>()?.clone()),
 				None=>None
 			})
diff --git a/lib/roblox_emulator/src/util.rs b/lib/roblox_emulator/src/util.rs
new file mode 100644
index 0000000..92ac42d
--- /dev/null
+++ b/lib/roblox_emulator/src/util.rs
@@ -0,0 +1,3 @@
+pub fn static_ustr(s:&'static str)->rbx_dom_weak::Ustr{
+	rbx_dom_weak::ustr(s)
+}