diff --git a/indra/newview/llfirstuse.cpp b/indra/newview/llfirstuse.cpp
index 2c4153688a2709f1d875333857b8a5f2fa245ed1..a9f52282a502763bc56d92ba684c8c4e8ba2ec2a 100644
--- a/indra/newview/llfirstuse.cpp
+++ b/indra/newview/llfirstuse.cpp
@@ -131,7 +131,7 @@ void LLFirstUse::notMoving(bool enable)
 // static
 void LLFirstUse::viewPopup(bool enable)
 {
-	firstUseNotification("FirstViewPopup", enable, "HintView", LLSD(), LLSD().with("target", "view_popup").with("direction", "right"));
+//	firstUseNotification("FirstViewPopup", enable, "HintView", LLSD(), LLSD().with("target", "view_popup").with("direction", "right"));
 }
 
 // static
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
index 2a68fbac8d26596b096f77d258241334702f7a7b..653fb467540988ef98ff9d54c9722fdba795355b 100755
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -84,6 +84,8 @@ U32 LLMeshRepository::sPeakKbps = 0;
 
 const U32 MAX_TEXTURE_UPLOAD_RETRIES = 5;
 
+void dumpLLSDToFile(LLSD& content, std::string filename);
+
 std::string header_lod[] = 
 {
 	"lowest_lod",
@@ -492,11 +494,18 @@ class LLWholeModelFeeResponder: public LLCurl::Responder
 							  const LLChannelDescriptors& channels,
 							  const LLIOPipe::buffer_ptr_t& buffer)
 	{
-		assert_main_thread();
+		//assert_main_thread();
 		llinfos << "completed" << llendl;
 		mThread->mPendingUploads--;
+
+		LLSD content;
+		LLBufferStream istr(channels, buffer.get());
+		if (!LLSDSerialize::fromXML(content, istr))
+		{
+			llinfos << "Failed to deserialize LLSD. " << " [" << status << "]: " << reason << llendl;
+		}
+		dumpLLSDToFile(content,"whole_model_response.xml");
 	}
-	
 };
 
 LLMeshRepoThread::LLMeshRepoThread()
@@ -1362,8 +1371,8 @@ void LLMeshUploadThread::run()
 	}
 }
 
-#if 0
-void dumpLLSDToFile(LLSD& content, std::string& filename)
+#if 1
+void dumpLLSDToFile(LLSD& content, std::string filename)
 {
 	std::ofstream of(filename);
 	LLSDSerialize::toPrettyXML(content,of);
@@ -1373,9 +1382,10 @@ void dumpLLSDToFile(LLSD& content, std::string& filename)
 void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures)
 {
 	// TODO where do textures go?
-	
+
 	LLSD result;
 
+	LLSD res;
 	result["folder_id"] = gInventory.findCategoryUUIDForType(LLFolderType::FT_OBJECT);
 	result["asset_type"] = "mesh";
 	result["inventory_type"] = "object";
@@ -1384,9 +1394,9 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures)
 
 	// TODO "optional" fields from the spec
 	
-	LLSD res;
 	res["mesh_list"] = LLSD::emptyArray();
-	res["texture_list"] = LLSD::emptyArray();
+// TODO Textures
+	//res["texture_list"] = LLSD::emptyArray();
 	S32 mesh_num = 0;
 	S32 texture_num = 0;
 	
@@ -1432,10 +1442,15 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures)
 		LLQuaternion rot;
 		LLMatrix4 transformation = instance.mTransform;
 		decomposeMeshMatrix(transformation,pos,rot,scale);
-		
+
+#if 0
 		mesh_entry["childpos"] = ll_sd_from_vector3(pos);
 		mesh_entry["childrot"] = ll_sd_from_quaternion(rot);
 		mesh_entry["scale"] = ll_sd_from_vector3(scale);
+#endif
+		mesh_entry["position"] = ll_sd_from_vector3(LLVector3());
+		mesh_entry["rotation"] = ll_sd_from_quaternion(rot);
+		mesh_entry["scale"] = ll_sd_from_vector3(scale);
 
 		// TODO should be binary.
 		std::string str = ostr.str();
@@ -1479,9 +1494,8 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures)
 	}
 
 	result["asset_resources"] = res;
-#if 0	
-	std::string name("whole_model.xml");
-	dumpLLSDToFile(result,name);
+#if 1	
+	dumpLLSDToFile(result,"whole_model.xml");
 #endif
 
 	dest = result;
@@ -1540,9 +1554,14 @@ void LLMeshUploadThread::doWholeModelUpload()
 
 	mPendingUploads++;
 	LLCurlRequest::headers_t headers;
-	mCurlRequest->post(mWholeModelUploadCapability, headers, model_data.asString(),
+	mCurlRequest->post(mWholeModelUploadCapability, headers, model_data,
 					   new LLWholeModelFeeResponder(this));
 
+	do
+	{
+		mCurlRequest->process();
+	} while (mCurlRequest->getQueued() > 0);
+
 	// Currently a no-op.
 	mFinished = true;
 }