diff --git a/lib/roblox_emulator/src/runner/enum.rs b/lib/roblox_emulator/src/runner/enum.rs
index 889bf8d..43242aa 100644
--- a/lib/roblox_emulator/src/runner/enum.rs
+++ b/lib/roblox_emulator/src/runner/enum.rs
@@ -2,9 +2,28 @@ use mlua::IntoLua;
 
 #[derive(Clone,Copy)]
 pub struct EnumItem<'a>{
-	name:&'a str,
+	name:Option<&'a str>,
 	value:u32,
 }
+impl<'a> EnumItem<'a>{
+	fn known_name((name,&value):(&'a std::borrow::Cow<'a,str>,&u32))->Self{
+		Self{name:Some(name.as_ref()),value}
+	}
+}
+impl<'a> From<rbx_types::Enum> for EnumItem<'a>{
+	fn from(e:rbx_types::Enum)->Self{
+		EnumItem{
+			name:None,
+			value:e.to_u32(),
+		}
+	}
+}
+impl From<EnumItem<'_>> for rbx_types::Enum{
+	fn from(e:EnumItem)->rbx_types::Enum{
+		rbx_types::Enum::from_u32(e.value)
+	}
+}
+
 #[derive(Clone,Copy)]
 pub struct Enums;
 #[derive(Clone,Copy)]
@@ -12,11 +31,6 @@ pub struct EnumItems<'a>{
 	ed:&'a rbx_reflection::EnumDescriptor<'a>,
 }
 
-impl From<EnumItem<'_>> for rbx_types::Enum{
-	fn from(e:EnumItem)->rbx_types::Enum{
-		rbx_types::Enum::from_u32(e.value)
-	}
-}
 
 pub fn set_globals(_lua:&mlua::Lua,globals:&mlua::Table)->Result<(),mlua::Error>{
 	globals.set("Enum",Enums)
@@ -26,13 +40,10 @@ impl mlua::UserData for EnumItems<'_>{
 	fn add_fields<F:mlua::UserDataFields<Self>>(_fields:&mut F){
 	}
 	fn add_methods<M:mlua::UserDataMethods<Self>>(methods:&mut M){
-		methods.add_meta_function("GetEnumItems",|_,this:EnumItems|Ok(this.ed.items.iter().map(|(name,&value)|EnumItem{name,value}).collect::<Vec<_>>()));
-		methods.add_meta_function(mlua::MetaMethod::Index,|lua,(this,val):(EnumItems,mlua::String)|{
+		methods.add_meta_function("GetEnumItems",|_,this:EnumItems|Ok(this.ed.items.iter().map(EnumItem::known_name).collect::<Vec<_>>()));
+		methods.add_meta_function(mlua::MetaMethod::Index,|_,(this,val):(EnumItems,mlua::String)|{
 			let index=&*val.to_str()?;
-			match this.ed.items.get_key_value(index){
-				Some((name,&value))=>EnumItem{name,value}.into_lua(lua),
-				None=>mlua::Value::Nil.into_lua(lua),
-			}
+			Ok(this.ed.items.get_key_value(index).map(EnumItem::known_name))
 		});
 	}
 }
diff --git a/lib/roblox_emulator/src/runner/instance/instance.rs b/lib/roblox_emulator/src/runner/instance/instance.rs
index 58a4a92..5e4d836 100644
--- a/lib/roblox_emulator/src/runner/instance/instance.rs
+++ b/lib/roblox_emulator/src/runner/instance/instance.rs
@@ -310,9 +310,10 @@ impl mlua::UserData for Instance{
 					Some(rbx_types::Variant::Float64(val))=>return val.into_lua(lua),
 					Some(rbx_types::Variant::String(val))=>return val.into_lua(lua),
 					Some(rbx_types::Variant::Ref(val))=>return Instance::new_unchecked(val).into_lua(lua),
-					Some(rbx_types::Variant::Color3(c))=>return Into::<crate::runner::color3::Color3>::into(c).into_lua(lua),
-					Some(rbx_types::Variant::CFrame(cf))=>return Into::<crate::runner::cframe::CFrame>::into(cf).into_lua(lua),
-					Some(rbx_types::Variant::Vector3(v))=>return Into::<crate::runner::vector3::Vector3>::into(v).into_lua(lua),
+					Some(rbx_types::Variant::Enum(e))=>return crate::runner::r#enum::EnumItem::from(e).into_lua(lua),
+					Some(rbx_types::Variant::Color3(c))=>return crate::runner::color3::Color3::from(c).into_lua(lua),
+					Some(rbx_types::Variant::CFrame(cf))=>return crate::runner::cframe::CFrame::from(cf).into_lua(lua),
+					Some(rbx_types::Variant::Vector3(v))=>return crate::runner::vector3::Vector3::from(v).into_lua(lua),
 					None=>(),
 					other=>return Err(mlua::Error::runtime(format!("Instance.__index Unsupported property type instance={} index={index_str} value={other:?}",instance.name))),
 				}