diff --git a/indra/llcommon/llqueuedthread.h b/indra/llcommon/llqueuedthread.h
index b3cde22b409a49340546aeb2e0b92aa99b723d59..8bfa5632a162ee4da4f0cd8587bb316c6914fe76 100644
--- a/indra/llcommon/llqueuedthread.h
+++ b/indra/llcommon/llqueuedthread.h
@@ -148,8 +148,6 @@ class LL_COMMON_API LLQueuedThread : public LLThread
 		}
 	};
 
-    template class LL_COMMON_API std::set<QueuedRequest*, queued_request_less>;
-
 
 	//------------------------------------------------------------------------
 	
diff --git a/indra/llcommon/llsdserialize.h b/indra/llcommon/llsdserialize.h
index 4b32f0afcdadcd686a517b47f789244b68b56179..2f2b292189bf099373899d3eb48d0ddddc16d74c 100644
--- a/indra/llcommon/llsdserialize.h
+++ b/indra/llcommon/llsdserialize.h
@@ -638,9 +638,14 @@ class LL_COMMON_API LLSDBinaryFormatter : public LLSDFormatter
  *	params << "[{'version':i1}," << LLSDOStreamer<LLSDNotationFormatter>(sd)
  *    << "]";
  *  </code>
+ *
+ * *NOTE - formerly this class inherited from its template parameter Formatter,
+ * but all insnatiations passed in LLRefCount subclasses.  This conflicted with
+ * the auto allocation intended for this class template (demonstrated in the
+ * example above).  -brad
  */
 template <class Formatter>
-class LLSDOStreamer : public Formatter
+class LLSDOStreamer
 {
 public:
 	/** 
@@ -661,7 +666,8 @@ class LLSDOStreamer : public Formatter
 		std::ostream& str,
 		const LLSDOStreamer<Formatter>& formatter)
 	{
-		formatter.format(formatter.mSD, str, formatter.mOptions);
+		LLPointer<Formatter> f = new Formatter;
+		f->format(formatter.mSD, str, formatter.mOptions);
 		return str;
 	}