diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index c3545efeafe43f41772544052fa188f279852a6b..503c67d01b5bb047213b52c579b4e9d972c7e90f 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -163,49 +163,6 @@ void LLInventoryPanel::buildFolderView(const LLInventoryPanel::Params& params)
 	{
 		root_id = gInventory.getLibraryRootFolderID();
 	}
-	// leslie -- temporary HACK to work around sim not creating inbox and outbox with proper system folder type
-	else if (preferred_type == LLFolderType::FT_INBOX)
-	{
-		LLInventoryModel::cat_array_t* cats;
-		LLInventoryModel::item_array_t* items;
-		
-		gInventory.getDirectDescendentsOf(gInventory.getRootFolderID(), cats, items);
-		
-		if (cats)
-		{
-			for (LLInventoryModel::cat_array_t::const_iterator cat_it = cats->begin(); cat_it != cats->end(); ++cat_it)
-			{
-				LLInventoryCategory* cat = *cat_it;
-				
-				if (cat->getName() == "Received Items")
-				{
-					root_id = cat->getUUID();
-				}
-			}
-		}
-	}
-	// leslie -- temporary HACK to work around sim not creating inbox and outbox with proper system folder type
-	/*else if (preferred_type == LLFolderType::FT_OUTBOX)
-	{
-		LLInventoryModel::cat_array_t* cats;
-		LLInventoryModel::item_array_t* items;
-		
-		gInventory.getDirectDescendentsOf(gInventory.getRootFolderID(), cats, items);
-		
-		if (cats)
-		{
-			for (LLInventoryModel::cat_array_t::const_iterator cat_it = cats->begin(); cat_it != cats->end(); ++cat_it)
-			{
-				LLInventoryCategory* cat = *cat_it;
-				
-				if (cat->getName() == "Merchant Outbox")
-				{
-					root_id = cat->getUUID();
-				}
-			}
-		}
-	}*/
-	// leslie -- end temporary HACK
 	else
 	{
 		root_id = (preferred_type != LLFolderType::FT_NONE)
diff --git a/indra/newview/llpanelmarketplaceoutbox.cpp b/indra/newview/llpanelmarketplaceoutbox.cpp
index 074fea546d1ef457946a0df3e07788999218cf01..90c7f9728b91a5e663a195d045e5b03cb9f8cca8 100644
--- a/indra/newview/llpanelmarketplaceoutbox.cpp
+++ b/indra/newview/llpanelmarketplaceoutbox.cpp
@@ -147,7 +147,7 @@ BOOL LLPanelMarketplaceOutbox::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL d
 {
 	BOOL handled = LLPanel::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
 
-	if (!handled && mInventoryPanel->getRootFolder())
+	if (!handled && mInventoryPanel && mInventoryPanel->getRootFolder())
 	{
 		handled = mInventoryPanel->getRootFolder()->handleDragAndDropFromChild(mask,drop,cargo_type,cargo_data,accept,tooltip_msg);
 
@@ -197,54 +197,65 @@ void timeDelay(LLCoros::self& self, LLPanelMarketplaceOutbox* outboxPanel)
 class LLInventorySyncResponder : public LLHTTPClient::Responder
 {
 public:
-	LLInventorySyncResponder()
+	LLInventorySyncResponder(LLPanelMarketplaceOutbox * outboxPanel)
 		: LLCurl::Responder()
+		, mOutboxPanel(outboxPanel)
 	{
 	}
 
 	void completed(U32 status, const std::string& reason, const LLSD& content)
 	{
+		llinfos << "inventory_import complete status: " << status << llendl;
+
 		if (isGoodStatus(status))
 		{
 			// Complete success
-			llinfos << "sync complete" << llendl;
+			llinfos << "success" << llendl;
 		}	
 		else
 		{
-			llwarns << "sync failed" << llendl;
+			llwarns << "failed" << llendl;
 		}
+
+		mOutboxPanel->onSyncComplete();
 	}
+
+private:
+	LLPanelMarketplaceOutbox *	mOutboxPanel;
 };
 
 void LLPanelMarketplaceOutbox::onSyncButtonClicked()
 {	
-	std::string url = "http://pdp24.lindenlab.com/3000"; /*"https://marketplace.secondlife.com/";
+	// Get the sync animation going
+	mSyncInProgress = true;
+	updateSyncButtonStatus();
+
+	// Make the url for the inventory import request
+	std::string url = "https://marketplace.secondlife.com/";
 
 	if (!LLGridManager::getInstance()->isInProductionGrid())
 	{
 		std::string gridLabel = LLGridManager::getInstance()->getGridLabel();
 		url = llformat("https://marketplace.%s.lindenlab.com/", utf8str_tolower(gridLabel).c_str());
+
+		// TEMP for Jim's pdp
+		//url = "http://pdp24.lindenlab.com:3000/";
 	}
-	*/
+	
 	url += "api/1/users/";
 	url += gAgent.getID().getString();
 	url += "/inventory_import";
 
-	LLHTTPClient::get(url, new LLInventorySyncResponder(), LLViewerMedia::getHeaders());
-
-
-	mSyncInProgress = true;
-	updateSyncButtonStatus();
+	llinfos << "http get:  " << url << llendl;
+	LLHTTPClient::get(url, new LLInventorySyncResponder(this), LLViewerMedia::getHeaders());
 
 	// Set a timer (for testing only)
-
-    gTimeDelayDebugFunc = LLCoros::instance().launch("LLPanelMarketplaceOutbox timeDelay", boost::bind(&timeDelay, _1, this));
+    //gTimeDelayDebugFunc = LLCoros::instance().launch("LLPanelMarketplaceOutbox timeDelay", boost::bind(&timeDelay, _1, this));
 }
 
 void LLPanelMarketplaceOutbox::onSyncComplete()
 {
 	mSyncInProgress = false;
-
 	updateSyncButtonStatus();
 }
 
@@ -267,3 +278,40 @@ void LLPanelMarketplaceOutbox::updateSyncButtonStatus()
 		mSyncButton->setEnabled(!isOutboxEmpty());
 	}
 }
+
+U32 LLPanelMarketplaceOutbox::getTotalItemCount() const
+{
+	U32 item_count = 0;
+
+	if (mInventoryPanel)
+	{
+		const LLFolderViewFolder * outbox_folder = mInventoryPanel->getRootFolder();
+
+		if (outbox_folder)
+		{
+			item_count += outbox_folder->getFoldersCount();
+		}
+	}
+
+	return item_count;
+}
+
+void LLPanelMarketplaceOutbox::draw()
+{
+	U32 item_count = getTotalItemCount();
+
+	if (item_count > 0)
+	{
+		std::string item_count_str = llformat("%d", item_count);
+
+		LLStringUtil::format_map_t args;
+		args["[NUM]"] = item_count_str;
+		getChild<LLButton>("outbox_btn")->setLabel(getString("OutboxLabelWithArg", args));
+	}
+	else
+	{
+		getChild<LLButton>("outbox_btn")->setLabel(getString("OutboxLabelNoArg"));
+	}
+
+	LLPanel::draw();
+}
diff --git a/indra/newview/llpanelmarketplaceoutbox.h b/indra/newview/llpanelmarketplaceoutbox.h
index d5671edad621379b6e2caccfef2828d8b7102171..b5ee3f72ccde2342ad1252e2435241da42355c07 100644
--- a/indra/newview/llpanelmarketplaceoutbox.h
+++ b/indra/newview/llpanelmarketplaceoutbox.h
@@ -54,8 +54,12 @@ class LLPanelMarketplaceOutbox : public LLPanel
 
 	/*virtual*/ BOOL postBuild();
 
+	/*virtual*/ void draw();
+
 	void setupInventoryPanel();
 
+	U32 getTotalItemCount() const;
+
 	bool isOutboxEmpty() const;
 	bool isSyncInProgress() const;
 
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index 6f809ba3ca2df26f1b9ca6b697c0bff2479ba415..41a0b57f2dc8f4b946f0525825fce650e29b7485 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -301,8 +301,7 @@ void LLSidepanelInventory::handleLoginComplete()
 		observeOutboxModifications(outbox_id);
 
 		// Enable the display of the outbox if it exists
-		//enableOutbox(true);
-		// leslie NOTE: Disabling outbox until we support it officially.
+		enableOutbox(true);
 	}
 }
 
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index d5a8772461be38b8129c37bfcd336ec286017ff3..fc71e19a7dbb6ac2c5eb47dbb95ab16998659f25 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -1378,13 +1378,18 @@ class LLInventoryUserStatusResponder : public LLHTTPClient::Responder
 	{
 		if (isGoodStatus(status))
 		{
+			std::string merchantStatus = content[gAgent.getID().getString()].asString();
+			llinfos << "Marketplace merchant status: " << merchantStatus << llendl;
+
 			// Complete success
 			gSavedSettings.setBOOL("InventoryDisplayInbox", true);
+			gSavedSettings.setBOOL("InventoryDisplayOutbox", (merchantStatus == "merchant"));
 		}
 		else if (status == 401)
 		{
 			// API is available for use but OpenID authorization failed
 			gSavedSettings.setBOOL("InventoryDisplayInbox", true);
+			//gSavedSettings.setBOOL("InventoryDisplayOutbox", true);
 		}
 		else
 		{
@@ -1395,6 +1400,28 @@ class LLInventoryUserStatusResponder : public LLHTTPClient::Responder
 };
 
 
+void doOnetimeEarlyHTTPRequests()
+{
+	std::string url = "https://marketplace.secondlife.com/";
+
+	if (!LLGridManager::getInstance()->isInProductionGrid())
+	{
+		std::string gridLabel = LLGridManager::getInstance()->getGridLabel();
+		url = llformat("https://marketplace.%s.lindenlab.com/", utf8str_tolower(gridLabel).c_str());
+
+		// TEMP for Jim's pdp
+		//url = "http://pdp24.lindenlab.com:3000/";
+	}
+	
+	url += "api/1/users/";
+	url += gAgent.getID().getString();
+	url += "/user_status";
+
+	llinfos << "http get: " << url << llendl;
+	LLHTTPClient::get(url, new LLInventoryUserStatusResponder(), LLViewerMedia::getHeaders());
+}
+
+
 LLSD LLViewerMedia::getHeaders()
 {
 	LLSD headers = LLSD::emptyMap();
@@ -1452,24 +1479,7 @@ void LLViewerMedia::setOpenIDCookie()
 			new LLViewerMediaWebProfileResponder(raw_profile_url.getAuthority()),
 			headers);
 
-		std::string url = "https://marketplace.secondlife.com/";
-
-		if (!LLGridManager::getInstance()->isInProductionGrid())
-		{
-			std::string gridLabel = LLGridManager::getInstance()->getGridLabel();
-			url = llformat("https://marketplace.%s.lindenlab.com/", utf8str_tolower(gridLabel).c_str());
-		}
-	
-		url += "api/1/users/";
-		url += gAgent.getID().getString();
-		url += "/user_status";
-
-		headers = LLSD::emptyMap();
-		headers["Accept"] = "*/*";
-		headers["Cookie"] = sOpenIDCookie;
-		headers["User-Agent"] = getCurrentUserAgent();
-
-		LLHTTPClient::get(url, new LLInventoryUserStatusResponder(), headers);
+		doOnetimeEarlyHTTPRequests();
 	}
 }
 
diff --git a/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml b/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml
index d06190ec54853d0747b53746dd67c91b70bac2c9..383e637ace13947f996cb4a8132b6e498a35ef2d 100644
--- a/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml
@@ -4,7 +4,7 @@
     start_folder="Received Items"
     follows="all" layout="topleft"
     top="0" left="0" height="165" width="308"
-	top_pad="0"
+    top_pad="0"
     bg_opaque_color="DkGray2"
     bg_alpha_color="DkGray2"
     background_visible="true"
diff --git a/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml
index af32056428a3db41605ed8565e53b95c52da7ea6..396d5cf2f55784d2ae9851a15e04fb844dccafd7 100644
--- a/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml
@@ -4,7 +4,7 @@
     start_folder="Outbox"
     follows="all" layout="topleft"
     top="0" left="0" height="165" width="308"
-	top_pad="0"
+    top_pad="0"
     bg_opaque_color="DkGray2"
     bg_alpha_color="DkGray2"
     background_visible="true"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
index 79a0ec7c72ff108ed12c500fc7a26b481e293b77..1d1d4ca01ed5bcdb257cbb9bae1507cb600f0d4e 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
@@ -129,41 +129,43 @@
                  </panel>
              </layout_panel>
              <layout_panel
-                width="330"
-                auto_resize="true"
-                user_resize="false"
-                follows="bottom|left|right"
-                name="outbox_layout_panel"
-                visible="false"
-                min_dim="35"
-                max_dim="200"
-                expanded_min_dim="90"
-                height="200">
+                 width="330"
+                 auto_resize="true"
+                 user_resize="false"
+                 follows="bottom|left|right"
+                 name="outbox_layout_panel"
+                 visible="false"
+                 min_dim="35"
+                 max_dim="200"
+                 expanded_min_dim="90"
+                 height="200">
                  <panel
                       follows="all"
                       layout="topleft"
-                      left="10"
+                      left="0"
                       name="marketplace_outbox"
                       class="panel_marketplace_outbox"
                       top="0"
                       label=""
                       height="200"
-                      width="310">
+                      width="330">
+                     <string name="OutboxLabelWithArg">Merchant Outbox ([NUM])</string>
+                     <string name="OutboxLabelNoArg">Merchant Outbox</string>
                      <button
                         label="Merchant Outbox"
-                        is_toggle="true"
-                        handle_right_mouse="false"
                         name="outbox_btn"
-                        follows="top|left|right"
-                        image_unselected="MarketplaceBtn_Off"
-                        image_selected="MarketplaceBtn_Selected"
                         height="35"
-                        tab_stop="false"
                         width="308"
+                        image_unselected="MarketplaceBtn_Off"
+                        image_selected="MarketplaceBtn_Selected"
                         halign="left"
+                        handle_right_mouse="false"
+                        follows="top|left|right"
+                        is_toggle="true"
+                        tab_stop="false"
                         pad_left="35"
                         top="0"
-                        left="0" />
+                        left="10" />
                      <button
                          image_unselected="OutboxPush_Off"
                          image_selected="OutboxPush_Selected"