diff --git a/indra/llmessage/llservicebuilder.cpp b/indra/llmessage/llservicebuilder.cpp
index a3e6ee479ba795a98648774c63e81b126c3b5ceb..d5c601414067ded4d1340e26dbb2400e7392a32e 100644
--- a/indra/llmessage/llservicebuilder.cpp
+++ b/indra/llmessage/llservicebuilder.cpp
@@ -134,6 +134,9 @@ std::string LLServiceBuilder::buildServiceURI(
 			std::string::iterator end(service_url.end());
 			std::string::iterator deepest_node(service_url.end());
 			std::string::iterator deepest_node_end(service_url.end());
+			//parse out the variables to replace by going through {}s one at a time,
+			// starting with the "deepest" in series {{}},
+			// and otherwise replacing right-to-left
 			for(; iter != end; ++iter)
 			{
 				switch(*iter)
@@ -163,7 +166,7 @@ std::string LLServiceBuilder::buildServiceURI(
 			{
 				break;
 			}
-
+			//replace the variable we found in the {} above.
 			// *NOTE: since the c++ implementation only understands
 			// params and straight string substitution, so it's a
 			// known distance of 2 to skip the directive.
@@ -181,7 +184,7 @@ std::string LLServiceBuilder::buildServiceURI(
 				}
 				else
 				{
-					llinfos << "Unknown key: " << key << llendl;
+					llwarns << "Unknown key: " << key << " in option map: " << LLSDOStreamer<LLSDNotationFormatter>(option_map) << llendl;
 					keep_looping = false;
 				}
 				break;