diff --git a/NifPlugins.cpp b/NifPlugins.cpp
index e9b0a44eec7aa5f1d30301d0ed89f4b34a0f15c0..01dc17f062e521ec69742ee2708bf25e8ef6cff2 100755
--- a/NifPlugins.cpp
+++ b/NifPlugins.cpp
@@ -1,36 +1,37 @@
 #include "Max.h"
 #include "NifPlugins.h"
 
-bool isCollision(INode *node)
+bool npIsCollision(INode *node)
 {
-	BOOL b;
-	return node && node->GetUserPropBool(_T(NP_PROP_HASCOLL), b) && b;
+	int i;
+	return npGetProp(node, NP_HASCOLL, i) && i;
 }
 
-void setCollision(INode *node, bool coll)
+void npSetCollision(INode *node, bool coll)
 {
-	if (node)
-		node->SetUserPropBool(_T(NP_PROP_HASCOLL), coll);
+	npSetProp(node, NP_HASCOLL, (bool)coll);
 }
 
-bool getHvkLayer(INode *node, int &layer)
+bool npGetProp(INode *node, const TSTR &prop, int &value)
 {
-	return node && node->GetUserPropInt(_T(NP_PROP_HVK_LAYER), layer);
+	return node && node->GetUserPropInt(prop, value);
 }
 
-void setHvkLayer(INode *node, int layer)
+void npSetProp(INode *node, const TSTR &prop, int value)
 {
 	if (node)
-		node->SetUserPropInt(_T(NP_PROP_HVK_LAYER), layer);
+		node->SetUserPropInt(prop, value);
 }
 
-bool getHvkMaterial(INode *node, int &mtl)
+bool npGetProp(INode *node, const TSTR &prop, float &value)
 {
-	return node && node->GetUserPropInt(_T(NP_PROP_HVK_MATERIAL), mtl);
+	return node && node->GetUserPropFloat(prop, value);
 }
 
-void setHvkMaterial(INode *node, int mtl)
+void npSetProp(INode *node, const TSTR &prop, float value)
 {
 	if (node)
-		node->SetUserPropInt(_T(NP_PROP_HVK_MATERIAL), mtl);
+		node->SetUserPropFloat(prop, value);
 }
+
+
diff --git a/NifPlugins.h b/NifPlugins.h
index 181cd088f56d010dd842ea3a8f3569ebbb99087e..349216d47228546835f1734ebf20692b96291753 100755
--- a/NifPlugins.h
+++ b/NifPlugins.h
@@ -1,20 +1,40 @@
 #ifndef __NIFPLUGINS_H__
 #define __NIFPLUGINS_H__
 
-#define NP_PROP_HASCOLL			"np_coll"
-#define NP_PROP_HVK_LAYER		"np_hvk_layer"
-#define NP_PROP_HVK_MATERIAL	"np_hvk_mtl"
+#define NP_HASCOLL						_T("np_coll")
+#define NP_HVK_LAYER					_T("np_hvk_layer")
+#define NP_HVK_MATERIAL					_T("np_hvk_mtl")
+#define NP_HVK_MASS						_T("np_hvk_mass")
+#define NP_HVK_LINEAR_DAMPING			_T("np_hvk_ldamp")
+#define NP_HVK_ANGULAR_DAMPING			_T("np_hvk_adamp")
+#define NP_HVK_FRICTION					_T("np_hvk_frict")
+#define NP_HVK_RESTITUTION				_T("np_hvk_resti")
+#define NP_HVK_MAX_LINEAR_VELOCITY		_T("np_hvk_max_lvel")
+#define NP_HVK_MAX_ANGULAR_VELOCITY		_T("np_hvk_max_avel")
+#define NP_HVK_PENETRATION_DEPTH		_T("np_hvk_pdepth")
+#define NP_HVK_MOTION_SYSTEM			_T("np_hvk_msys")
+#define NP_HVK_QUALITY_TYPE				_T("np_hvk_qtype")
 
-#define NP_DEFAULT_HVK_MATERIAL	9
-#define NP_DEFAULT_HVK_LAYER	1
+#define NP_DEFAULT_HVK_MATERIAL				9
+#define NP_DEFAULT_HVK_LAYER				1
+#define NP_DEFAULT_HVK_MASS					0
+#define NP_DEFAULT_HVK_LINEAR_DAMPING		0.1f
+#define NP_DEFAULT_HVK_ANGULAR_DAMPING		0.05f
+#define NP_DEFAULT_HVK_FRICTION				0.3f
+#define NP_DEFAULT_HVK_RESTITUTION			0.3f
+#define NP_DEFAULT_HVK_MAX_LINEAR_VELOCITY	250.0f
+#define NP_DEFAULT_HVK_MAX_ANGULAR_VELOCITY	31.4159f
+#define NP_DEFAULT_HVK_PENETRATION_DEPTH	0.15f
+#define NP_DEFAULT_HVK_MOTION_SYSTEM		7
+#define NP_DEFAULT_HVK_QUALITY_TYPE			1
 
-bool	isCollision(INode *node);
-void	setCollision(INode *node, bool coll);
+bool	npIsCollision(INode *node);
+void	npSetCollision(INode *node, bool coll);
 
-bool	getHvkLayer(INode *node, int &layer);
-void	setHvkLayer(INode *node, int layer);
+bool	npGetProp(INode *node, const TSTR &prop, int &value);
+void	npSetProp(INode *node, const TSTR &prop, int value);
 
-bool	getHvkMaterial(INode *node, int &mtl);
-void	setHvkMaterial(INode *node, int mtl);
+bool	npGetProp(INode *node, const TSTR &prop, float &value);
+void	npSetProp(INode *node, const TSTR &prop, float value);
 
 #endif //  __NIFPLUGINS_H__