diff --git a/indra/llcommon/lltrace.h b/indra/llcommon/lltrace.h
index fb7ffb0a29f33e0b4c22e088e581253c071aaa5a..884a316a3b5408cf4059619273c17e0a4f09971c 100644
--- a/indra/llcommon/lltrace.h
+++ b/indra/llcommon/lltrace.h
@@ -44,29 +44,6 @@ namespace LLTrace
 {
 class Recording;
 
-typedef LLUnit<F64, LLUnits::Bytes>			Bytes;
-typedef LLUnit<F64, LLUnits::Kibibytes>		Kibibytes;
-typedef LLUnit<F64, LLUnits::Mibibytes>		Mibibytes;
-typedef LLUnit<F64, LLUnits::Gibibytes>		Gibibytes;
-typedef LLUnit<F64, LLUnits::Bits>			Bits;
-typedef LLUnit<F64, LLUnits::Kibibits>		Kibibits;
-typedef LLUnit<F64, LLUnits::Mibibits>		Mibibits;
-typedef LLUnit<F64, LLUnits::Gibibits>		Gibibits;
-
-typedef LLUnit<F64, LLUnits::Seconds>		Seconds;
-typedef LLUnit<F64, LLUnits::Milliseconds>	Milliseconds;
-typedef LLUnit<F64, LLUnits::Minutes>		Minutes;
-typedef LLUnit<F64, LLUnits::Hours>			Hours;
-typedef LLUnit<F64, LLUnits::Milliseconds>	Milliseconds;
-typedef LLUnit<F64, LLUnits::Microseconds>	Microseconds;
-typedef LLUnit<F64, LLUnits::Nanoseconds>	Nanoseconds;
-
-typedef LLUnit<F64, LLUnits::Meters>		Meters;
-typedef LLUnit<F64, LLUnits::Kilometers>	Kilometers;
-typedef LLUnit<F64, LLUnits::Centimeters>	Centimeters;
-typedef LLUnit<F64, LLUnits::Millimeters>	Millimeters;
-
-
 template<typename T>
 T storage_value(T val) { return val; }
 
diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp
index 18df9a7b54163fdbe766fcd00e15f33b0b3b177f..72ed3d448553091680b6e544ab5b6a59f0dda53f 100755
--- a/indra/newview/lltextureview.cpp
+++ b/indra/newview/lltextureview.cpp
@@ -512,8 +512,8 @@ void LLGLTexMemBar::draw()
 	LLUnit<S32, LLUnits::Mibibytes> total_mem = LLViewerTexture::sTotalTextureMemory;
 	LLUnit<S32, LLUnits::Mibibytes> max_total_mem = LLViewerTexture::sMaxTotalTextureMem;
 	F32 discard_bias = LLViewerTexture::sDesiredDiscardBias;
-	F32 cache_usage = (F32)LLTrace::Mibibytes(LLAppViewer::getTextureCache()->getUsage()).value() ;
-	F32 cache_max_usage = (F32)LLTrace::Mibibytes(LLAppViewer::getTextureCache()->getMaxUsage()).value() ;
+	F32 cache_usage = (F32)LLUnit<F32, LLUnits::Mibibytes>(LLAppViewer::getTextureCache()->getUsage()).value() ;
+	F32 cache_max_usage = (F32)LLUnit<F32, LLUnits::Mibibytes>(LLAppViewer::getTextureCache()->getMaxUsage()).value() ;
 	S32 line_height = LLFontGL::getFontMonospace()->getLineHeight();
 	S32 v_offset = 0;//(S32)((texture_bar_height + 2.2f) * mTextureView->mNumTextureBars + 2.0f);
 	LLUnit<F32, LLUnits::Bytes> total_texture_downloaded = gTotalTextureData;
diff --git a/indra/newview/llviewerassetstats.cpp b/indra/newview/llviewerassetstats.cpp
index bada565d3d279f5cc7a7444d16cc7a456220fcae..6ab2aefc34efbf22f7d79ef0ed4ef1d67dc9b177 100755
--- a/indra/newview/llviewerassetstats.cpp
+++ b/indra/newview/llviewerassetstats.cpp
@@ -233,7 +233,7 @@ namespace LLViewerAssetStatsFF
 		&sDequeuedAssetRequestsOther            
 	};
 
-	static LLTrace::EventStatHandle<LLTrace::Seconds>	sResponseAssetRequestsTempTextureHTTP   ("assetresponsetimestemptexturehttp",
+	static LLTrace::EventStatHandle<LLUnit<F64, LLUnits::Seconds> >	sResponseAssetRequestsTempTextureHTTP   ("assetresponsetimestemptexturehttp",
 																							"Time spent responding to temporary texture asset http requests"),
 													sResponseAssetRequestsTempTextureUDP    ("assetresponsetimestemptextureudp", 
 																							"Time spent responding to temporary texture asset udp requests"),
@@ -250,7 +250,7 @@ namespace LLViewerAssetStatsFF
 													sResponsedAssetRequestsOther            ("assetresponsetimesother", 
 																							"Time spent responding to other asset requests");
 
-	static LLTrace::EventStatHandle<LLTrace::Seconds>* sResponse[EVACCount] = {
+	static LLTrace::EventStatHandle<LLUnit<F64, LLUnits::Seconds> >* sResponse[EVACCount] = {
 		&sResponseAssetRequestsTempTextureHTTP,   
 		&sResponseAssetRequestsTempTextureUDP,  
 		&sResponseAssetRequestsNonTempTextureHTTP,
@@ -539,7 +539,7 @@ void record_response(LLViewerAssetType::EType at, bool with_http, bool is_temp,
 {
 	const EViewerAssetCategories eac(asset_type_to_category(at, with_http, is_temp));
 
-	record(*sResponse[int(eac)], LLTrace::Microseconds(duration));
+	record(*sResponse[int(eac)], LLUnit<F64, LLUnits::Microseconds>(duration));
 }
 
 void init()
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 6362ccfba6674a94036166ddd5a583953cb7118b..5ae08a8b9e95444dcd952572c38aad366d27db94 100755
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -2262,7 +2262,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,
 		// If we're snapping the position by more than 0.5m, update LLViewerStats::mAgentPositionSnaps
 		if ( asAvatar() && asAvatar()->isSelf() && (mag_sqr > 0.25f) )
 		{
-			record(LLStatViewer::AGENT_POSITION_SNAP, LLTrace::Meters(diff.length()));
+			record(LLStatViewer::AGENT_POSITION_SNAP, LLUnit<F64, LLUnits::Meters>(diff.length()));
 		}
 	}
 
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index 7ddee48b3834103f7690a512187ffce5bba647cc..3d4c75cec33fa5505e5a710ff7f5dc7c143ce96c 100755
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -89,17 +89,17 @@ LLTrace::CountStatHandle<>	FPS("framesrendered"),
 							TEX_BAKES("texbakes"),
 							TEX_REBAKES("texrebakes"),
 							NUM_NEW_OBJECTS("numnewobjectsstat");
-LLTrace::CountStatHandle<LLTrace::Kibibits>	KBIT("kbitstat"),
-											LAYERS_KBIT("layerskbitstat"),
-											OBJECT_KBIT("objectkbitstat"),
-											ASSET_KBIT("assetkbitstat"),
-											TEXTURE_KBIT("texturekbitstat"),
-											ACTUAL_IN_KBIT("actualinkbitstat"),
-											ACTUAL_OUT_KBIT("actualoutkbitstat");
-
-LLTrace::CountStatHandle<LLTrace::Seconds>	SIM_20_FPS_TIME("sim20fpstime", "Seconds with sim FPS below 20"),
-											SIM_PHYSICS_20_FPS_TIME("simphysics20fpstime", "Seconds with physics FPS below 20"),
-											LOSS_5_PERCENT_TIME("loss5percenttime", "Seconds with packet loss > 5%");
+LLTrace::CountStatHandle<LLUnit<F64, LLUnits::Kibibits> >	KBIT("kbitstat"),
+															LAYERS_KBIT("layerskbitstat"),
+															OBJECT_KBIT("objectkbitstat"),
+															ASSET_KBIT("assetkbitstat"),
+															TEXTURE_KBIT("texturekbitstat"),
+															ACTUAL_IN_KBIT("actualinkbitstat"),
+															ACTUAL_OUT_KBIT("actualoutkbitstat");
+
+LLTrace::CountStatHandle<LLUnit<F64, LLUnits::Seconds> >	SIM_20_FPS_TIME("sim20fpstime", "Seconds with sim FPS below 20"),
+															SIM_PHYSICS_20_FPS_TIME("simphysics20fpstime", "Seconds with physics FPS below 20"),
+															LOSS_5_PERCENT_TIME("loss5percenttime", "Seconds with packet loss > 5%");
 
 SimMeasurement<>			SIM_TIME_DILATION("simtimedilation", "", LL_SIM_STAT_TIME_DILATION),
 							SIM_FPS("simfps", "", LL_SIM_STAT_FPS),
@@ -141,15 +141,15 @@ LLTrace::SampleStatHandle<>	FPS_SAMPLE("fpssample"),
 	
 static LLTrace::SampleStatHandle<S64> CHAT_BUBBLES("chatbubbles", "Chat Bubbles Enabled");
 
-LLTrace::SampleStatHandle<LLTrace::Bytes>	GL_TEX_MEM("gltexmemstat"),
-											GL_BOUND_MEM("glboundmemstat"),
-											RAW_MEM("rawmemstat"),
-											FORMATTED_MEM("formattedmemstat"),
-											DELTA_BANDWIDTH("deltabandwidth", "Increase/Decrease in bandwidth based on packet loss"),
-											MAX_BANDWIDTH("maxbandwidth", "Max bandwidth setting");
+LLTrace::SampleStatHandle<LLUnit<F64, LLUnits::Megabytes> >	GL_TEX_MEM("gltexmemstat"),
+															GL_BOUND_MEM("glboundmemstat"),
+															RAW_MEM("rawmemstat"),
+															FORMATTED_MEM("formattedmemstat");
+LLTrace::SampleStatHandle<LLUnit<F64, LLUnits::Kibibytes> >	DELTA_BANDWIDTH("deltabandwidth", "Increase/Decrease in bandwidth based on packet loss"),
+															MAX_BANDWIDTH("maxbandwidth", "Max bandwidth setting");
 
 	
-SimMeasurement<LLTrace::Milliseconds>	SIM_FRAME_TIME("simframemsec", "", LL_SIM_STAT_FRAMEMS),
+SimMeasurement<LLUnit<F64, LLUnits::Milliseconds> >	SIM_FRAME_TIME("simframemsec", "", LL_SIM_STAT_FRAMEMS),
 										SIM_NET_TIME("simnetmsec", "", LL_SIM_STAT_NETMS),
 										SIM_OTHER_TIME("simsimothermsec", "", LL_SIM_STAT_SIMOTHERMS),
 										SIM_PHYSICS_TIME("simsimphysicsmsec", "", LL_SIM_STAT_SIMPHYSICSMS),
@@ -164,18 +164,18 @@ SimMeasurement<LLTrace::Milliseconds>	SIM_FRAME_TIME("simframemsec", "", LL_SIM_
 										SIM_SLEEP_TIME("simsleepmsec", "", LL_SIM_STAT_SIMSLEEPTIME),
 										SIM_PUMP_IO_TIME("simpumpiomsec", "", LL_SIM_STAT_IOPUMPTIME);
 	
-SimMeasurement<LLTrace::Bytes>	SIM_UNACKED_BYTES("simtotalunackedbytes", "", LL_SIM_STAT_TOTAL_UNACKED_BYTES),
-								SIM_PHYSICS_MEM("physicsmemoryallocated", "", LL_SIM_STAT_SIMPHYSICSMEMORY);
+SimMeasurement<LLUnit<F64, LLUnits::Bytes> >	SIM_UNACKED_BYTES("simtotalunackedbytes", "", LL_SIM_STAT_TOTAL_UNACKED_BYTES),
+												SIM_PHYSICS_MEM("physicsmemoryallocated", "", LL_SIM_STAT_SIMPHYSICSMEMORY);
 
-LLTrace::SampleStatHandle<LLTrace::Milliseconds>	FRAMETIME_JITTER("frametimejitter", "Average delta between successive frame times"),
+LLTrace::SampleStatHandle<LLUnit<F64, LLUnits::Milliseconds> >	FRAMETIME_JITTER("frametimejitter", "Average delta between successive frame times"),
 													FRAMETIME_SLEW("frametimeslew", "Average delta between frame time and mean"),
 													SIM_PING("simpingstat");
 
-LLTrace::EventStatHandle<LLTrace::Meters> AGENT_POSITION_SNAP("agentpositionsnap", "agent position corrections");
+LLTrace::EventStatHandle<LLUnit<F64, LLUnits::Meters> > AGENT_POSITION_SNAP("agentpositionsnap", "agent position corrections");
 
 LLTrace::EventStatHandle<>	LOADING_WEARABLES_LONG_DELAY("loadingwearableslongdelay", "Wearables took too long to load");
 	
-LLTrace::EventStatHandle<LLTrace::Milliseconds>	REGION_CROSSING_TIME("regioncrossingtime", "CROSSING_AVG"),
+LLTrace::EventStatHandle<LLUnit<F64, LLUnits::Milliseconds> >	REGION_CROSSING_TIME("regioncrossingtime", "CROSSING_AVG"),
 												FRAME_STACKTIME("framestacktime", "FRAME_SECS"),
 												UPDATE_STACKTIME("updatestacktime", "UPDATE_SECS"),
 												NETWORK_STACKTIME("networkstacktime", "NETWORK_SECS"),
@@ -183,12 +183,12 @@ LLTrace::EventStatHandle<LLTrace::Milliseconds>	REGION_CROSSING_TIME("regioncros
 												REBUILD_STACKTIME("rebuildstacktime", "REBUILD_SECS"),
 												RENDER_STACKTIME("renderstacktime", "RENDER_SECS");
 	
-LLTrace::EventStatHandle<LLTrace::Seconds>	AVATAR_EDIT_TIME("avataredittime", "Seconds in Edit Appearance"),
-											TOOLBOX_TIME("toolboxtime", "Seconds using Toolbox"),
-											MOUSELOOK_TIME("mouselooktime", "Seconds in Mouselook"),
-											FPS_10_TIME("fps10time", "Seconds below 10 FPS"),
-											FPS_8_TIME("fps8time", "Seconds below 8 FPS"),
-											FPS_2_TIME("fps2time", "Seconds below 2 FPS");
+LLTrace::EventStatHandle<LLUnit<F64, LLUnits::Seconds> >	AVATAR_EDIT_TIME("avataredittime", "Seconds in Edit Appearance"),
+															TOOLBOX_TIME("toolboxtime", "Seconds using Toolbox"),
+															MOUSELOOK_TIME("mouselooktime", "Seconds in Mouselook"),
+															FPS_10_TIME("fps10time", "Seconds below 10 FPS"),
+															FPS_8_TIME("fps8time", "Seconds below 8 FPS"),
+															FPS_2_TIME("fps2time", "Seconds below 2 FPS");
 
 
 }
@@ -211,7 +211,7 @@ void LLViewerStats::resetStats()
 
 void LLViewerStats::updateFrameStats(const F64 time_diff)
 {
-	LLTrace::Seconds time_diff_seconds(time_diff);
+	LLUnit<F64, LLUnits::Seconds> time_diff_seconds(time_diff);
 	if (getRecording().getLastValue(LLStatViewer::PACKETS_LOST_PERCENT) > 5.0)
 	{
 		add(LLStatViewer::LOSS_5_PERCENT_TIME, time_diff_seconds);
@@ -249,15 +249,15 @@ void LLViewerStats::updateFrameStats(const F64 time_diff)
 		add(LLStatViewer::FRAMETIME_DOUBLED, time_diff >= 2.0 * mLastTimeDiff ? 1 : 0);
 
 		// old stats that were never really used
-		sample(LLStatViewer::FRAMETIME_JITTER, LLTrace::Milliseconds(mLastTimeDiff - time_diff));
+		sample(LLStatViewer::FRAMETIME_JITTER, LLUnit<F64, LLUnits::Milliseconds> (mLastTimeDiff - time_diff));
 			
 		F32 average_frametime = gRenderStartTime.getElapsedTimeF32() / (F32)gFrameCount;
-		sample(LLStatViewer::FRAMETIME_SLEW, LLTrace::Milliseconds(average_frametime - time_diff));
+		sample(LLStatViewer::FRAMETIME_SLEW, LLUnit<F64, LLUnits::Milliseconds> (average_frametime - time_diff));
 
 		F32 max_bandwidth = gViewerThrottle.getMaxBandwidth();
 		F32 delta_bandwidth = gViewerThrottle.getCurrentBandwidth() - max_bandwidth;
-		sample(LLStatViewer::DELTA_BANDWIDTH, LLTrace::Bits(delta_bandwidth));
-		sample(LLStatViewer::MAX_BANDWIDTH, LLTrace::Bits(max_bandwidth));
+		sample(LLStatViewer::DELTA_BANDWIDTH, LLUnit<F64, LLUnits::Bits>(delta_bandwidth));
+		sample(LLStatViewer::MAX_BANDWIDTH, LLUnit<F64, LLUnits::Bits>(max_bandwidth));
 	}
 	
 	mLastTimeDiff = time_diff;
@@ -347,13 +347,13 @@ void update_statistics()
 	LLCircuitData *cdp = gMessageSystem->mCircuitInfo.findCircuit(gAgent.getRegion()->getHost());
 	if (cdp)
 	{
-		sample(LLStatViewer::SIM_PING, LLTrace::Milliseconds(cdp->getPingDelay()));
+		sample(LLStatViewer::SIM_PING, LLUnit<F64, LLUnits::Milliseconds> (cdp->getPingDelay()));
 		gAvgSimPing = ((gAvgSimPing * (F32)gSimPingCount) + (F32)(cdp->getPingDelay())) / ((F32)gSimPingCount + 1);
 		gSimPingCount++;
 	}
 	else
 	{
-		sample(LLStatViewer::SIM_PING, LLTrace::Seconds(10));
+		sample(LLStatViewer::SIM_PING, LLUnit<F64, LLUnits::Seconds>(10));
 	}
 
 	if (LLViewerStats::instance().getRecording().getSum(LLStatViewer::FPS))
@@ -363,10 +363,10 @@ void update_statistics()
 	add(LLStatViewer::FPS, 1);
 
 	F32 layer_bits = (F32)(gVLManager.getLandBits() + gVLManager.getWindBits() + gVLManager.getCloudBits());
-	add(LLStatViewer::LAYERS_KBIT, LLTrace::Bits(layer_bits));
+	add(LLStatViewer::LAYERS_KBIT, LLUnit<F64, LLUnits::Bits>(layer_bits));
 	add(LLStatViewer::OBJECT_KBIT, gObjectData);
 	sample(LLStatViewer::PENDING_VFS_OPERATIONS, LLVFile::getVFSThread()->getPending());
-	add(LLStatViewer::ASSET_KBIT, LLTrace::Bits(gTransferManager.getTransferBitsIn(LLTCT_ASSET)));
+	add(LLStatViewer::ASSET_KBIT, LLUnit<F64, LLUnits::Bits>(gTransferManager.getTransferBitsIn(LLTCT_ASSET)));
 	gTransferManager.resetTransferBitsIn(LLTCT_ASSET);
 
 	if (LLAppViewer::getTextureFetch()->getNumRequests() == 0)
@@ -403,7 +403,7 @@ void update_statistics()
 		static LLFrameTimer texture_stats_timer;
 		if (texture_stats_timer.getElapsedTimeF32() >= texture_stats_freq)
 		{
-			gTotalTextureData = LLTrace::Bytes(LLViewerStats::instance().getRecording().getSum(LLStatViewer::TEXTURE_KBIT));
+			gTotalTextureData = LLUnit<F64, LLUnits::Bytes>(LLViewerStats::instance().getRecording().getSum(LLStatViewer::TEXTURE_KBIT));
 			texture_stats_timer.reset();
 		}
 	}
@@ -552,9 +552,9 @@ void send_stats()
 
 	LLSD &download = body["downloads"];
 
-	download["world_kbytes"] = LLTrace::Kibibytes(gTotalWorldData).value();
-	download["object_kbytes"] = LLTrace::Kibibytes(gTotalObjectData).value();
-	download["texture_kbytes"] = LLTrace::Kibibytes(gTotalTextureData).value();
+	download["world_kbytes"] = LLUnit<F64, LLUnits::Kibibytes>(gTotalWorldData).value();
+	download["object_kbytes"] = LLUnit<F64, LLUnits::Kibibytes>(gTotalObjectData).value();
+	download["texture_kbytes"] = LLUnit<F64, LLUnits::Kibibytes>(gTotalTextureData).value();
 	download["mesh_kbytes"] = LLMeshRepository::sBytesReceived/1024.0;
 
 	LLSD &in = body["stats"]["net"]["in"];
diff --git a/indra/newview/llviewerstats.h b/indra/newview/llviewerstats.h
index 4e48a61264dbdb7e06aeb97896debd40cd1c00f2..879f0067b9e9e3459dae9f52098e5400d1ed6fe8 100755
--- a/indra/newview/llviewerstats.h
+++ b/indra/newview/llviewerstats.h
@@ -94,17 +94,17 @@ extern LLTrace::CountStatHandle<>			FPS,
 											NUM_NEW_OBJECTS;
 
 
-extern LLTrace::CountStatHandle<LLTrace::Kibibits>	KBIT,
-											LAYERS_KBIT,
-											OBJECT_KBIT,
-											ASSET_KBIT,
-											TEXTURE_KBIT,
-											ACTUAL_IN_KBIT,
-											ACTUAL_OUT_KBIT;
-
-extern LLTrace::CountStatHandle<LLTrace::Seconds>		SIM_20_FPS_TIME,
-														SIM_PHYSICS_20_FPS_TIME,
-														LOSS_5_PERCENT_TIME;
+extern LLTrace::CountStatHandle<LLUnit<F64, LLUnits::Kibibits> >	KBIT,
+																	LAYERS_KBIT,
+																	OBJECT_KBIT,
+																	ASSET_KBIT,
+																	TEXTURE_KBIT,
+																	ACTUAL_IN_KBIT,
+																	ACTUAL_OUT_KBIT;
+
+extern LLTrace::CountStatHandle<LLUnit<F64, LLUnits::Seconds> >		SIM_20_FPS_TIME,
+																	SIM_PHYSICS_20_FPS_TIME,
+																	LOSS_5_PERCENT_TIME;
 
 extern SimMeasurement<>						SIM_TIME_DILATION,
 											SIM_FPS,
@@ -144,41 +144,40 @@ extern LLTrace::SampleStatHandle<>		FPS_SAMPLE,
 										WINDOW_WIDTH,
 										WINDOW_HEIGHT;
 
-extern LLTrace::SampleStatHandle<LLTrace::Bytes>	DELTA_BANDWIDTH,
-													MAX_BANDWIDTH,
-													GL_TEX_MEM,
-													GL_BOUND_MEM,
-													RAW_MEM,
-													FORMATTED_MEM;
-
-extern SimMeasurement<LLTrace::Milliseconds>	SIM_FRAME_TIME,
-												SIM_NET_TIME,
-												SIM_OTHER_TIME,
-												SIM_PHYSICS_TIME,
-												SIM_PHYSICS_STEP_TIME,
-												SIM_PHYSICS_SHAPE_UPDATE_TIME,
-												SIM_PHYSICS_OTHER_TIME,
-												SIM_AI_TIME,
-												SIM_AGENTS_TIME,
-												SIM_IMAGES_TIME,
-												SIM_SCRIPTS_TIME,
-												SIM_SPARE_TIME,
-												SIM_SLEEP_TIME,
-												SIM_PUMP_IO_TIME;
-
-extern SimMeasurement<LLTrace::Bytes>			SIM_UNACKED_BYTES,
-												SIM_PHYSICS_MEM;
-
-
-extern LLTrace::SampleStatHandle<LLTrace::Milliseconds>	FRAMETIME_JITTER,
-														FRAMETIME_SLEW,
-														SIM_PING;
-
-extern LLTrace::EventStatHandle<LLTrace::Meters> AGENT_POSITION_SNAP;
+extern LLTrace::SampleStatHandle<LLUnit<F64, LLUnits::Megabytes> >	GL_TEX_MEM,
+																	GL_BOUND_MEM,
+																	RAW_MEM,
+																	FORMATTED_MEM;
+extern LLTrace::SampleStatHandle<LLUnit<F64, LLUnits::Kibibytes> >	DELTA_BANDWIDTH,
+																	MAX_BANDWIDTH;
+extern SimMeasurement<LLUnit<F64, LLUnits::Milliseconds> >	SIM_FRAME_TIME,
+															SIM_NET_TIME,
+															SIM_OTHER_TIME,
+															SIM_PHYSICS_TIME,
+															SIM_PHYSICS_STEP_TIME,
+															SIM_PHYSICS_SHAPE_UPDATE_TIME,
+															SIM_PHYSICS_OTHER_TIME,
+															SIM_AI_TIME,
+															SIM_AGENTS_TIME,
+															SIM_IMAGES_TIME,
+															SIM_SCRIPTS_TIME,
+															SIM_SPARE_TIME,
+															SIM_SLEEP_TIME,
+															SIM_PUMP_IO_TIME;
+
+extern SimMeasurement<LLUnit<F64, LLUnits::Bytes> >	SIM_UNACKED_BYTES,
+													SIM_PHYSICS_MEM;
+
+
+extern LLTrace::SampleStatHandle<LLUnit<F64, LLUnits::Milliseconds> >	FRAMETIME_JITTER,
+																		FRAMETIME_SLEW,
+																		SIM_PING;
+
+extern LLTrace::EventStatHandle<LLUnit<F64, LLUnits::Meters> > AGENT_POSITION_SNAP;
 
 extern LLTrace::EventStatHandle<>	LOADING_WEARABLES_LONG_DELAY;
 
-extern LLTrace::EventStatHandle<LLTrace::Milliseconds>	REGION_CROSSING_TIME,
+extern LLTrace::EventStatHandle<LLUnit<F64, LLUnits::Milliseconds> >	REGION_CROSSING_TIME,
 														FRAME_STACKTIME,
 														UPDATE_STACKTIME,
 														NETWORK_STACKTIME,
@@ -186,12 +185,12 @@ extern LLTrace::EventStatHandle<LLTrace::Milliseconds>	REGION_CROSSING_TIME,
 														REBUILD_STACKTIME,
 														RENDER_STACKTIME;
 
-extern LLTrace::EventStatHandle<LLTrace::Seconds>	AVATAR_EDIT_TIME,
-													TOOLBOX_TIME,
-													MOUSELOOK_TIME,
-													FPS_10_TIME,
-													FPS_8_TIME,
-													FPS_2_TIME;
+extern LLTrace::EventStatHandle<LLUnit<F64, LLUnits::Seconds> >	AVATAR_EDIT_TIME,
+																TOOLBOX_TIME,
+																MOUSELOOK_TIME,
+																FPS_10_TIME,
+																FPS_8_TIME,
+																FPS_2_TIME;
 
 }
 
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 5003ec7e7bed37fbad8daff5b1dd33da07d39c88..431a3b330cf9014dc272db14d187bc3f66ab11cb 100755
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -671,8 +671,8 @@ void LLViewerTextureList::updateImages(F32 max_time)
 		sample(NUM_RAW_IMAGES, LLImageRaw::sRawImageCount);
 		sample(GL_TEX_MEM, LLImageGL::sGlobalTextureMemory);
 		sample(GL_BOUND_MEM, LLImageGL::sBoundTextureMemory);
-		sample(RAW_MEM, LLTrace::Bytes(LLImageRaw::sGlobalRawMemory));
-		sample(FORMATTED_MEM, LLTrace::Bytes(LLImageFormatted::sGlobalFormattedMemory));
+		sample(RAW_MEM, LLUnit<F64, LLUnits::Bytes>(LLImageRaw::sGlobalRawMemory));
+		sample(FORMATTED_MEM, LLUnit<F64, LLUnits::Bytes>(LLImageFormatted::sGlobalFormattedMemory));
 	}
 
 	{
@@ -1374,7 +1374,7 @@ void LLViewerTextureList::receiveImageHeader(LLMessageSystem *msg, void **user_d
 	{
 		received_size = msg->getReceiveSize() ;		
 	}
-	add(LLStatViewer::TEXTURE_KBIT, LLTrace::Bytes(received_size));
+	add(LLStatViewer::TEXTURE_KBIT, LLUnit<F64, LLUnits::Bytes>(received_size));
 	add(LLStatViewer::TEXTURE_PACKETS, 1);
 	
 	U8 codec;
@@ -1448,7 +1448,7 @@ void LLViewerTextureList::receiveImagePacket(LLMessageSystem *msg, void **user_d
 		received_size = msg->getReceiveSize() ;		
 	}
 
-	add(LLStatViewer::TEXTURE_KBIT, LLTrace::Bytes(received_size));
+	add(LLStatViewer::TEXTURE_KBIT, LLUnit<F64, LLUnits::Bytes>(received_size));
 	add(LLStatViewer::TEXTURE_PACKETS, 1);
 	
 	//llprintline("Start decode, image header...");
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 7d99b11360f48e8684814387016f4df0d05cd560..67da311c5a65df1ecf4a32496320a3f575fb4a69 100755
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -900,7 +900,7 @@ void LLVOAvatarSelf::updateRegion(LLViewerRegion *regionp)
 		if (mLastRegionHandle != 0)
 		{
 			++mRegionCrossingCount;
-			LLTrace::Seconds delta = mRegionCrossingTimer.getElapsedTimeF32();
+			LLUnit<F64, LLUnits::Seconds> delta = mRegionCrossingTimer.getElapsedTimeF32();
 			record(LLStatViewer::REGION_CROSSING_TIME, delta);
 
 			// Diagnostics
diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp
index b49152508ce70d86e4397b032561d5ea7f96e8fe..a95adbf4426d1affdbd9784381ea7c198c93d3bb 100755
--- a/indra/newview/llworld.cpp
+++ b/indra/newview/llworld.cpp
@@ -732,9 +732,9 @@ void LLWorld::updateNetStats()
 	S32 actual_in_bits = gMessageSystem->mPacketRing.getAndResetActualInBits();
 	S32 actual_out_bits = gMessageSystem->mPacketRing.getAndResetActualOutBits();
 
-	add(LLStatViewer::ACTUAL_IN_KBIT, LLTrace::Bits(actual_in_bits));
-	add(LLStatViewer::ACTUAL_OUT_KBIT, LLTrace::Bits(actual_out_bits));
-	add(LLStatViewer::KBIT, LLTrace::Bits(bits));
+	add(LLStatViewer::ACTUAL_IN_KBIT, LLUnit<F64, LLUnits::Bits>(actual_in_bits));
+	add(LLStatViewer::ACTUAL_OUT_KBIT, LLUnit<F64, LLUnits::Bits>(actual_out_bits));
+	add(LLStatViewer::KBIT, LLUnit<F64, LLUnits::Bits>(bits));
 	add(LLStatViewer::PACKETS_IN, packets_in);
 	add(LLStatViewer::PACKETS_OUT, packets_out);
 	add(LLStatViewer::PACKETS_LOST, packets_lost);