diff --git a/NifFurniture/NifFurniture.cpp b/NifFurniture/NifFurniture.cpp
index 55ff1a0710299fd14e1db98b63f3b22142df114b..44602eb3dd830f4ba0b9592adedcd510218480eb 100755
--- a/NifFurniture/NifFurniture.cpp
+++ b/NifFurniture/NifFurniture.cpp
@@ -1,112 +1,474 @@
-/**********************************************************************
- *<
-	FILE: NifFurniture.cpp
+#include "NifFurniture.h"
+#include "FurnitureMarkers.h"
+#include "../NifGUI.h"
+#include "../NifPlugins.h"
 
-	DESCRIPTION:	Appwizard generated plugin
+#define FurnitureMarker_CLASS_ID	Class_ID(0x5a38017d, 0x4006a661)
 
-	CREATED BY: 
+#define PBLOCK_REF	0
 
-	HISTORY: 
+class NifFurnitureMarker : public HelperObject
+{
 
- *>	Copyright (c) 2003, All Rights Reserved.
- **********************************************************************/
+public:
 
-#include "NifFurniture.h"
+	NifFurnitureMarker();
+	NifFurnitureMarker(const NifFurnitureMarker &fm);
+	~NifFurnitureMarker();
 
-#define NifFurniture_CLASS_ID	Class_ID(0x5a38017d, 0x4006a661)
+	// Loading/Saving
+	IOResult				Load(ILoad *iload);
+	IOResult				Save(ISave *isave) { return IO_OK; }
 
-#define PBLOCK_REF	0
+	RefTargetHandle			Clone( RemapDir &remap );
+	RefResult				NotifyRefChanged(Interval changeInt, RefTargetHandle hTarget, PartID& partID,  RefMessage message);
 
-class NifFurnCreateCallBack : public CreateMouseCallBack
-{
+	/* BaseObject */
+    void					GetMat(TimeValue t, INode* inode, ViewExp* vpt, Matrix3& tm);
+	int						HitTest(TimeValue t, INode* inode, int type, int crossing, int flags, IPoint2 *p, ViewExp *vpt);
+	int						Display(TimeValue t, INode* inode, ViewExp *vpt, int flags);
+	CreateMouseCallBack		*GetCreateMouseCallBack();
+	void					BeginEditParams( IObjParam *ip, ULONG flags,Animatable *prev);
+	void					EndEditParams( IObjParam *ip, ULONG flags,Animatable *next);
+    TCHAR					*GetObjectName() { return _T(GetString(IDS_FURNITURE_MARKER)); }
 
-public:
+	/* Animatable */
+	int						IsKeyable(){ return 0;}
+	int						NumSubs() { return 1; }
+	void					DeleteThis() { delete this; }	
+	Class_ID				ClassID() {return FurnitureMarker_CLASS_ID;}		
+	SClass_ID				SuperClassID() { return HELPER_CLASS_ID; }
+	void					GetClassName(TSTR& s) {s = GetString(IDS_CLASS_NAME);}
+
+	/* Object */
+	Interval				ObjectValidity(TimeValue t);
+	int						DoOwnSelectHilite() {return 1; }		
+	int						IsMappable() { return 0; }
+	int						IsRenderable() { return 0; }
+    void					GetWorldBoundBox(TimeValue t, INode *mat, ViewExp *vpt, Box3& box);
+	void					GetLocalBoundBox(TimeValue t, INode *mat, ViewExp *vpt, Box3& box);
+	int						UsesWireColor() { return TRUE; }
+
+	/* HelperObject */
+	void					InitNodeName(TSTR& s) { s = _T(GetString(IDS_FURNITURE_MARKER)); }
+ 
+	// Object
+	ObjectState				Eval(TimeValue t);
+
+	int						CanConvertToType(Class_ID obtype);
+	Object					*ConvertToType(TimeValue t, Class_ID obtype);
+		 
+
+	void					setFrnPos(NpFrnPos type);
+	NpFrnPos				getFrnPos();
+
+private:
+
+	class CreateCallback : public CreateMouseCallBack
+	{
+	public:
+		virtual int			proc(ViewExp *vpt, int msg, int point, int flags, IPoint2 m, Matrix3& mat);
+	};
+
+	static BOOL CALLBACK	dlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
+
+	INode					*getNode();
 
-	virtual int proc(ViewExp *vpt, int msg, int point, int flags, IPoint2 m, Matrix3& mat);
+	Interface				*mIP;
+	HWND					mPanel;
+
+	Mesh					mMesh;
+	Point3					mFlip;
+
+	NpComboBox				mCbType;
+
+	static NifFurnitureMarker *mInstance;
+	static CreateCallback	mCreateCallback;
+
+	// maps combo box indices to marker types
+	static NpFrnPos			mPosMap[];
 };
 
-int NifFurnCreateCallBack::proc(ViewExp *vpt, int msg, int point, int flags, IPoint2 m, Matrix3& mat)
+int NifFurnitureMarker::CreateCallback::proc(ViewExp *vpt, int msg, int point, int flags, IPoint2 m, Matrix3& mat)
 {
+	if (msg==MOUSE_POINT || msg==MOUSE_MOVE)
+	{
+		Point3 cen;
+		cen = vpt->SnapPoint(m, m, NULL, SNAP_IN_3D);
+
+		if (msg == MOUSE_POINT)
+			return CREATE_STOP;
+	}
+
 	return CREATE_ABORT;
 }
 
-class NifFurniture : public HelperObject {
-	public:
+NifFurnitureMarker::CreateCallback NifFurnitureMarker::mCreateCallback;
+NifFurnitureMarker *NifFurnitureMarker::mInstance = NULL;
 
-		// Parameter block
-//		IParamBlock2	*pblock;	//ref 0
+NpFrnPos NifFurnitureMarker::mPosMap[] = 
+{ 
+	NP_FRN_SLEEP_LEFT,
+	NP_FRN_SLEEP_RIGHT,
+	NP_FRN_BEDROLL_LEFT,
+	NP_FRN_BEDROLL_RIGHT,
+	NP_FRN_SIT_LEFT,
+	NP_FRN_SIT_RIGHT,
+	NP_FRN_SIT_BACK,
+	NP_FRN_SIT_FRONT
+};
 
-		// Loading/Saving
-		IOResult Load(ILoad *iload) {return IO_OK;}
-		IOResult Save(ISave *isave) {return IO_OK;}
+NifFurnitureMarker::NifFurnitureMarker()
+{
+	mIP = NULL;
+	mInstance = NULL;
 
-		//From Animatable
-		Class_ID ClassID() {return NifFurniture_CLASS_ID;}		
-		SClass_ID SuperClassID() { return HELPER_CLASS_ID; }
-		void GetClassName(TSTR& s) {s = GetString(IDS_CLASS_NAME);}
+	setFrnPos(NP_FRN_SLEEP_LEFT);
+}
 
-		RefTargetHandle Clone( RemapDir &remap );
-		RefResult NotifyRefChanged(Interval changeInt, RefTargetHandle hTarget, 
-			PartID& partID,  RefMessage message);
+NifFurnitureMarker::NifFurnitureMarker(const NifFurnitureMarker &fm)
+{
+	mIP = NULL;
+	mInstance = NULL;
+}
 
-		int NumSubs() { return 1; }
+NifFurnitureMarker::~NifFurnitureMarker()
+{
+	mInstance = NULL;
+}
 
-//		int	NumParamBlocks() { return 1; }					// return number of ParamBlocks in this instance
-//		IParamBlock2* GetParamBlock(int i) { return pblock; } // return i'th ParamBlock
-//		IParamBlock2* GetParamBlockByID(BlockID id) { return (pblock->ID() == id) ? pblock : NULL; } // return id'd ParamBlock
+void NifFurnitureMarker::setFrnPos(NpFrnPos type)
+{
+	mFlip.Set(1, 1, 1);
+	const FurnitureMarker *mark;
+	switch (type)
+	{
+		case 1:
+			mark = &FurnitureMarker01;
+			break;
 
-		void DeleteThis() { delete this; }	
-		// BaseObject
-		CreateMouseCallBack* GetCreateMouseCallBack();
-		// Object
-		ObjectState Eval(TimeValue t);
-		
-		//Constructor/Destructor
-		NifFurniture() {}
-		~NifFurniture() {}		
+		case 2:
+			mFlip[0] = -1;
+			mark = &FurnitureMarker01;
+			break;
+			
+		case 3:
+			mark = &FurnitureMarker03;
+			break;
 
-};
+		case 4:
+			mark = &FurnitureMarker04;
+			break;
 
+		case 11:
+			mark = &FurnitureMarker11;
+			break;
 
+		case 12:
+			mFlip[0] = -1;
+			mark = &FurnitureMarker11;
+			break;
+			
+		case 13:
+			mark = &FurnitureMarker13;
+			break;
 
-class NifFurnitureClassDesc : public ClassDesc2 {
-	public:
-	int 			IsPublic() { return TRUE; }
-	void *			Create(BOOL loading = FALSE) { return new NifFurniture(); }
-	const TCHAR *	ClassName() { return GetString(IDS_CLASS_NAME); }
-	SClass_ID		SuperClassID() { return HELPER_CLASS_ID; }
-	Class_ID		ClassID() { return NifFurniture_CLASS_ID; }
-	const TCHAR* 	Category() { return GetString(IDS_CATEGORY); }
+		case 14:
+			mark = &FurnitureMarker14;
+			break;
+	}
 
-	const TCHAR*	InternalName() { return _T("NifFurniture"); }	// returns fixed parsable name (scripter-visible name)
-	HINSTANCE		HInstance() { return hInstance; }					// returns owning module handle
-	
+	mMesh.setNumVerts(mark->nv);
+	mMesh.setNumFaces(mark->nf);
 
-};
+	int i;
+	for (i=0; i<mark->nv; i++)
+		mMesh.verts[i].Set(mark->verts[i*3+0], mark->verts[i*3+2], mark->verts[i*3+1]);
 
-static NifFurnitureClassDesc NifFurnitureDesc;
-ClassDesc2* GetNifFurnitureDesc() { return &NifFurnitureDesc; }
+	for (i=0; i<mark->nf; i++)
+	{
+		mMesh.faces[i].setVerts(mark->faces[i*3+0], mark->faces[i*3+1], mark->faces[i*3+2]);
+		mMesh.faces[i].setEdgeVisFlags(1, 1, 1);
+	}
+
+	npSetProp(getNode(), NP_FRN_POS, type);
+}
+
+NpFrnPos NifFurnitureMarker::getFrnPos()
+{
+	NpFrnPos type;
+	npGetProp(getNode(), NP_FRN_POS, (int&)type, NP_DEFAULT_FRN_MARKER_TYPE);
+	return type;
+}
 
+INode *NifFurnitureMarker::getNode()
+{
+	ULONG handle;
+	NotifyDependents(FOREVER, (PartID)&handle, REFMSG_GET_NODE_HANDLE);
+	return GetCOREInterface()->GetINodeByHandle(handle);
+}
 
-RefResult NifFurniture::NotifyRefChanged(Interval changeInt, RefTargetHandle hTarget, 
+RefResult NifFurnitureMarker::NotifyRefChanged(Interval changeInt, RefTargetHandle hTarget, 
 			PartID& partID,  RefMessage message)
 {
 	return REF_SUCCEED;
 }
 
-RefTargetHandle NifFurniture::Clone( RemapDir &remap )
+RefTargetHandle NifFurnitureMarker::Clone(RemapDir &remap)
 {
-	return NULL;
+	NifFurnitureMarker *fm = new NifFurnitureMarker(*this);
+	BaseClone(this, fm, remap);
+	fm->setFrnPos(getFrnPos());
+	return fm;
 }
 
-ObjectState NifFurniture::Eval(TimeValue t)
+ObjectState NifFurnitureMarker::Eval(TimeValue t)
 {
-	ObjectState os;
+	ObjectState os(this);
 	return os;
 }
 
-CreateMouseCallBack *NifFurniture::GetCreateMouseCallBack()
+CreateMouseCallBack *NifFurnitureMarker::GetCreateMouseCallBack()
+{
+	return &mCreateCallback;
+}
+
+int	NifFurnitureMarker::CanConvertToType(Class_ID obtype)
+{
+	return FALSE;
+}
+
+Object *NifFurnitureMarker::ConvertToType(TimeValue t, Class_ID obtype)
+{
+	return NULL;
+}
+
+int NifFurnitureMarker::Display(TimeValue t, INode* inode, ViewExp *vpt, int flags)
+{
+	setFrnPos(getFrnPos());
+
+    Matrix3 m;
+    GraphicsWindow *gw = vpt->getGW();
+    Material *mtl = gw->getMaterial();
+
+    DWORD rlim = gw->getRndLimits();
+    gw->setRndLimits(GW_WIREFRAME|GW_EDGES_ONLY|GW_BACKCULL);
+    
+	GetMat(t, inode, vpt, m);
+	m.Scale(mFlip);
+
+    gw->setTransform(m);
+    if (inode->Selected()) 
+        gw->setColor( LINE_COLOR, 1.0f, 1.0f, 1.0f);
+    else 
+	if (!inode->IsFrozen())
+        gw->setColor( LINE_COLOR, 0.4f, 0.0f, 0.6f);
+
+    mMesh.render( gw, mtl, NULL, COMP_ALL);
+
+    gw->setRndLimits(rlim);
+
+	return 0;
+}
+
+Interval NifFurnitureMarker::ObjectValidity(TimeValue t)
+{
+	Interval ivalid;
+	ivalid.SetInfinite();
+	return ivalid;
+}
+
+int NifFurnitureMarker::HitTest(TimeValue t, INode *inode, int type, int crossing, int flags, IPoint2 *p, ViewExp *vpt)
+{
+    Matrix3 m;
+    int result = FALSE;
+    HitRegion hitRegion;
+    DWORD savedLimits;
+
+    MakeHitRegion(hitRegion, type, crossing, 4, p);	
+
+    GraphicsWindow *gw = vpt->getGW();	
+	savedLimits = gw->getRndLimits();
+    gw->setRndLimits((savedLimits | GW_PICK) & ~GW_ILLUM);
+
+    GetMat(t, inode, vpt, m);
+
+    gw->setTransform(m);
+    gw->clearHitCode();
+
+    Material *mtl = gw->getMaterial();
+    if (mMesh.select(gw, mtl, &hitRegion, flags & HIT_ABORTONHIT)) 
+        result = TRUE;
+
+    gw->setRndLimits(savedLimits);
+
+    return result;
+}
+
+void NifFurnitureMarker::BeginEditParams(IObjParam *ip, ULONG flags, Animatable *prev)
 {
-	static NifFurnCreateCallBack cb;
-	return &cb;
+	mIP = ip;
+	mInstance = this;
+
+	mPanel = ip->AddRollupPage(
+		hInstance,
+		MAKEINTRESOURCE(IDD_PANEL),
+		(DLGPROC)dlgProc,
+		GetString(IDS_PARAMS),
+		0);
+
+	NpFrnPos pos = getFrnPos();
+	setFrnPos(pos);
+
+	for (int i=0; i<mCbType.count(); i++)
+	{
+		if (mPosMap[i] == pos)
+		{
+			mCbType.select(i);
+			break;
+		}
+	}
+
+//	mIP->SetStdCommandMode(CID_OBJMOVE);
+
+
+//	mIP->SetStdCommandMode(CID_OBJMOVE);
+//	int cls = mIP->GetCommandMode()->Class();
+
+//	mIP->RegisterCommandModeChangedCallback((CommandModeChangedCallback*)this);
+
+	
+
+
+/*    iObjParams = ip;
+    if (pmapParam) {
+        // Left over from last TouchSensor created		
+        pmapParam->SetParamBlock(pblock);
+    } else {
+        
+        // Gotta make a new one.
+        pmapParam = CreateCPParamMap(descParam,PARAMDESC_LENGTH,
+                                     pblock,
+                                     ip,
+                                     hInstance,
+                                     MAKEINTRESOURCE(IDD_ANCHOR),
+                                     _T("Anchor"),
+                                     0);
+    }
+    
+    if (pmapParam) {
+        // A callback for dialog
+        pmapParam->SetUserDlgProc(new AnchorParamDlgProc(this));
+    }
+*/
+}
+		
+void NifFurnitureMarker::EndEditParams( IObjParam *ip, ULONG flags,Animatable *prev)
+{
+//	mIP->UnRegisterCommandModeChangedCallback((CommandModeChangedCallback*)this);
+
+/*    if ( flags&END_EDIT_REMOVEUI ) {		
+        if (pmapParam) DestroyCPParamMap(pmapParam);
+        pmapParam  = NULL;
+    }	
+*/
+//	mIU = NULL;
+//	mIP = NULL;
+	ip->DeleteRollupPage(mPanel);
+//	mPanel = NULL;
+//	mNode = NULL;
+	mInstance = NULL;
 }
+
+void NifFurnitureMarker::GetMat(TimeValue t, INode* inode, ViewExp* vpt, Matrix3& tm)
+{
+	tm = inode->GetObjectTM(t);
+}
+
+void NifFurnitureMarker::GetLocalBoundBox(TimeValue t, INode* inode, ViewExp* vpt, Box3& box )
+{
+/*    Matrix3 m = inode->GetObjectTM(t);
+    BuildMesh(t);
+*/
+    box = mMesh.getBoundingBox();
+//	box.pmin.Set(-10, -10, -10);
+//	box.pmax.Set(10, 10, 10);
+}
+
+void NifFurnitureMarker::GetWorldBoundBox(TimeValue t, INode* inode, ViewExp* vpt, Box3& box )
+{
+	GetLocalBoundBox(t, inode, vpt, box);
+/*	Matrix3 tm;
+    BuildMesh(t);            // 000829  --prs.
+    GetMat(t,inode,vpt,tm);
+*/
+	Matrix3 tm;
+	GetMat(t, inode, vpt, tm);
+
+    int nv = mMesh.getNumVerts();
+    box.Init();
+    for (int i=0; i<nv; i++) 
+        box += tm * mMesh.getVert(i);
+
+}
+
+BOOL NifFurnitureMarker::dlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+	switch (msg)
+	{
+		case WM_INITDIALOG:
+			mInstance->mCbType.init(GetDlgItem(hWnd, IDC_CB_TYPE));
+			mInstance->mCbType.add("Sleep Left");		// 1
+			mInstance->mCbType.add("Sleep Right");	// 2
+			mInstance->mCbType.add("Bedroll Left");	// 3
+			mInstance->mCbType.add("Bedroll Behind");	// 4
+			mInstance->mCbType.add("Sit Left");		// 11
+			mInstance->mCbType.add("Sit Right");		// 12
+			mInstance->mCbType.add("Sit Back");		// 13
+			mInstance->mCbType.add("Sit Front");		// 14
+			break;
+
+		case WM_COMMAND:
+			switch (LOWORD(wParam))
+			{
+
+				case IDC_CB_TYPE:
+//				case IDC_CB_ORIENT:
+					if (HIWORD(wParam) == CBN_SELCHANGE)
+					{
+						mInstance->setFrnPos((NpFrnPos)mPosMap[mInstance->mCbType.selection()]);
+						mInstance->mIP->ForceCompleteRedraw();
+					}
+					break;
+			}
+			break;
+	}
+
+	return FALSE;
+}
+
+IOResult NifFurnitureMarker::Load(ILoad *iload) 
+{ 
+	setFrnPos(getFrnPos());
+	return IO_OK;
+}
+
+
+class NifFurnitureClassDesc : public ClassDesc2 
+{
+
+public:
+
+	int 			IsPublic() { return TRUE; }
+	void *			Create(BOOL loading = FALSE) { return new NifFurnitureMarker(); }
+	const TCHAR *	ClassName() { return GetString(IDS_CLASS_NAME); }
+	SClass_ID		SuperClassID() { return HELPER_CLASS_ID; }
+	Class_ID		ClassID() { return FurnitureMarker_CLASS_ID; }
+	const TCHAR* 	Category() { return GetString(IDS_CATEGORY); }
+
+	const TCHAR*	InternalName() { return _T("NifFurnitureMarker"); }	// returns fixed parsable name (scripter-visible name)
+	HINSTANCE		HInstance() { return hInstance; }					// returns owning module handle
+};
+
+static NifFurnitureClassDesc NifFurnitureDesc;
+ClassDesc2* GetNifFurnitureDesc() { return &NifFurnitureDesc; }
diff --git a/NifFurniture/NifFurniture.rc b/NifFurniture/NifFurniture.rc
index d444cc661cdb0b5f6e11ebe7a53bd5f3df3cb9d4..b8a3219db6f2e95a826c4f395ec99ce88c32e06a 100755
--- a/NifFurniture/NifFurniture.rc
+++ b/NifFurniture/NifFurniture.rc
@@ -1,4 +1,4 @@
-//Microsoft Developer Studio generated resource script.
+// Microsoft Visual C++ generated resource script.
 //
 #include "resource.h"
 
@@ -13,39 +13,54 @@
 #undef APSTUDIO_READONLY_SYMBOLS
 
 /////////////////////////////////////////////////////////////////////////////
-// English (U.S.) resources
+// Deutsch (Deutschland) resources
 
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
 #ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
 #pragma code_page(1252)
 #endif //_WIN32
 
+#ifdef APSTUDIO_INVOKED
 /////////////////////////////////////////////////////////////////////////////
 //
-// Dialog
+// TEXTINCLUDE
 //
-IDD_PANEL DIALOG DISCARDABLE  0, 0, 108, 156
-STYLE WS_CHILD | WS_VISIBLE
-//FLOATING_DIALOG
-FONT 8, "MS Sans Serif"
 
+3 TEXTINCLUDE 
 BEGIN
-    CTEXT           "Generated by Plugin AppWizard\nCode && design by\nRavi Karra - Discreet",
-                    IDC_STATIC,7,7,94,36
-    CONTROL         "",IDC_EDIT,"CustEdit",WS_TABSTOP,29,114,35,10
-    CONTROL         "",IDC_SPIN,"SpinnerControl",0x0,65,114,7,10
-    LTEXT           "Spinner Cust Control:",IDC_STATIC,20,102,67,8
-    CTEXT           "TODO: Place panel controls here.",IDC_STATIC,15,63,78,
-                    19
+    "\r\n"
+    "\0"
 END
 
+#endif    // APSTUDIO_INVOKED
+
+#endif    // Deutsch (Deutschland) resources
+/////////////////////////////////////////////////////////////////////////////
+
 
- //IMAGE_FILTER_COMPOSITOR_TYPE
+/////////////////////////////////////////////////////////////////////////////
+// Englisch (USA) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
 
-//(!UI_BY_MAX)
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
 
- //SHADER_TYPE
+IDD_PANEL DIALOGEX 0, 0, 108, 38
+STYLE DS_SETFONT | WS_CHILD | WS_VISIBLE
+FONT 8, "MS Sans Serif", 0, 0, 0x0
+BEGIN
+    COMBOBOX        IDC_CB_TYPE,6,18,96,60,CBS_DROPDOWNLIST | WS_VSCROLL | 
+                    WS_TABSTOP
+    LTEXT           "Type",IDC_STATIC,6,6,17,8
+END
 
 
 /////////////////////////////////////////////////////////////////////////////
@@ -54,17 +69,16 @@ END
 //
 
 #ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO DISCARDABLE
+GUIDELINES DESIGNINFO 
 BEGIN
     IDD_PANEL, DIALOG
     BEGIN
         LEFTMARGIN, 7
         RIGHTMARGIN, 101
         TOPMARGIN, 7
-        BOTTOMMARGIN, 149
+        BOTTOMMARGIN, 31
     END
 END
-
 #endif    // APSTUDIO_INVOKED
 
 
@@ -74,38 +88,36 @@ END
 // TEXTINCLUDE
 //
 
-1 TEXTINCLUDE DISCARDABLE
+1 TEXTINCLUDE 
 BEGIN
     "resource.h\0"
 END
 
-2 TEXTINCLUDE DISCARDABLE
+2 TEXTINCLUDE 
 BEGIN
     "#include ""afxres.h""\r\n"
     "\0"
 END
 
-
 #endif    // APSTUDIO_INVOKED
 
 
-
 /////////////////////////////////////////////////////////////////////////////
 //
 // String Table
 //
 
-STRINGTABLE DISCARDABLE
+STRINGTABLE 
 BEGIN
-    IDS_LIBDESCRIPTION      "Allow placting of furniture markers used in Oblivion"
+    IDS_LIBDESCRIPTION      "Allow placting of furniture markers used in Oblivion."
     IDS_CATEGORY            "NifTools"
     IDS_CLASS_NAME          "NifFurniture"
     IDS_PARAMS              "Parameters"
     IDS_SPIN                "Spin"
- //TEX_TYPE
+    IDS_FURNITURE_MARKER    "Furniture Marker"
 END
 
-#endif    // English (U.S.) resources
+#endif    // Englisch (USA) resources
 /////////////////////////////////////////////////////////////////////////////
 
 
@@ -117,8 +129,6 @@ END
 //
 
 
-
 /////////////////////////////////////////////////////////////////////////////
 #endif    // not APSTUDIO_INVOKED
 
-
diff --git a/NifFurniture/NifFurniture.vcproj b/NifFurniture/NifFurniture.vcproj
index 55ef3386dc93f1454d6123f84112ae3c5bcf48ea..2305fc4ba4eae8c47241f8dedd5144a5e49c1fd4 100755
--- a/NifFurniture/NifFurniture.vcproj
+++ b/NifFurniture/NifFurniture.vcproj
@@ -427,13 +427,28 @@
 			<File
 				RelativePath=".\NifFurniture.def">
 			</File>
+			<File
+				RelativePath="..\NifGui.cpp">
+			</File>
+			<File
+				RelativePath="..\NifPlugins.cpp">
+			</File>
 		</Filter>
 		<Filter
 			Name="Header Files"
 			Filter="h;hpp;hxx;hm;inl">
+			<File
+				RelativePath="FurnitureMarkers.h">
+			</File>
 			<File
 				RelativePath=".\NifFurniture.h">
 			</File>
+			<File
+				RelativePath="..\NifGui.h">
+			</File>
+			<File
+				RelativePath="..\NifPlugins.h">
+			</File>
 			<File
 				RelativePath=".\resource.h">
 			</File>
diff --git a/NifFurniture/resource.h b/NifFurniture/resource.h
index 78fc8cca31f2cc53826beb031c2e81128640645d..82df2862249320c6442fd1d71d06547d40b0bca7 100755
--- a/NifFurniture/resource.h
+++ b/NifFurniture/resource.h
@@ -1,23 +1,20 @@
 //{{NO_DEPENDENCIES}}
-// Microsoft Developer Studio generated include file.
+// Microsoft Visual C++ generated include file.
 // Used by NifFurniture.rc
 //
-
-
 #define IDS_LIBDESCRIPTION              1
 #define IDS_CATEGORY                    2
 #define IDS_CLASS_NAME                  3
 #define IDS_PARAMS                      4
 #define IDS_SPIN                        5
-
-
-
+#define IDS_FURNITURE_MARKER            6
 #define IDD_PANEL                       101
-
 #define IDC_CLOSEBUTTON                 1000
 #define IDC_DOSTUFF                     1000
+#define IDC_CB_TYPE                     1001
 #define IDC_COLOR                       1456
 #define IDC_EDIT                        1490
+#define IDC_EDIT2                       1491
 #define IDC_SPIN                        1496
 
 // Next default values for new objects
@@ -26,7 +23,7 @@
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NEXT_RESOURCE_VALUE        102
 #define _APS_NEXT_COMMAND_VALUE         40001
-#define _APS_NEXT_CONTROL_VALUE         1001
+#define _APS_NEXT_CONTROL_VALUE         1002
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif