diff --git a/lib/roblox_emulator/src/runner/vector3.rs b/lib/roblox_emulator/src/runner/vector3.rs
index 288832a..7baa91e 100644
--- a/lib/roblox_emulator/src/runner/vector3.rs
+++ b/lib/roblox_emulator/src/runner/vector3.rs
@@ -38,6 +38,8 @@ impl mlua::UserData for Vector3{
 	fn add_fields<F:mlua::UserDataFields<Self>>(fields:&mut F){
 		fields.add_field_method_get("magnitude",|_,Vector3(this)|Ok(this.length()));
 		fields.add_field_method_get("Magnitude",|_,Vector3(this)|Ok(this.length()));
+		fields.add_field_method_get("unit",|_,Vector3(this)|Ok(Vector3(this.normalize())));
+		fields.add_field_method_get("Unit",|_,Vector3(this)|Ok(Vector3(this.normalize())));
 		fields.add_field_method_get("x",|_,Vector3(this)|Ok(this.x));
 		fields.add_field_method_get("X",|_,Vector3(this)|Ok(this.x));
 		fields.add_field_method_get("y",|_,Vector3(this)|Ok(this.y));
@@ -50,6 +52,7 @@ impl mlua::UserData for Vector3{
 		//methods.add_method("area",|_,this,()| Ok(this.length * this.width));
 
 		methods.add_meta_function(mlua::MetaMethod::Add,|_,(Vector3(this),Vector3(val)):(Self,Self)|Ok(Self(this+val)));
+		methods.add_meta_function(mlua::MetaMethod::Sub,|_,(Vector3(this),Vector3(val)):(Self,Self)|Ok(Self(this-val)));
 		methods.add_meta_function(mlua::MetaMethod::Div,|_,(Vector3(this),val):(Self,mlua::Value)|{
 			match val{
 				mlua::Value::Integer(n)=>Ok(Self(this/(n as f32))),