Index: trunk/nv/core/common.hh
===================================================================
--- trunk/nv/core/common.hh	(revision 321)
+++ trunk/nv/core/common.hh	(revision 322)
@@ -82,4 +82,17 @@
 #define NV_DEBUG 0
 #endif
+#endif
+
+#if NV_DEBUG
+#ifndef NV_PROFILER
+#define NV_PROFILER 
+#endif
+#endif
+
+#ifdef NV_PROFILER
+#undef NV_PROFILER
+#define NV_PROFILER 1
+#else
+#define NV_PROFILER 0
 #endif
 
Index: trunk/nv/core/profiler.hh
===================================================================
--- trunk/nv/core/profiler.hh	(revision 321)
+++ trunk/nv/core/profiler.hh	(revision 322)
@@ -18,5 +18,9 @@
 #include <unordered_map>
 
+#if NV_PROFILER 
 #define NV_PROFILE( tag ) nv::profiler_guard __profile( tag )
+#else
+#define NV_PROFILE( tag )
+#endif
 
 namespace nv
Index: trunk/nv/interface/render_state.hh
===================================================================
--- trunk/nv/interface/render_state.hh	(revision 321)
+++ trunk/nv/interface/render_state.hh	(revision 322)
@@ -95,4 +95,5 @@
 
 		blending() :
+			enabled( false ),
 			src_rgb_factor( ONE ), src_alpha_factor( ONE ), 
 			dst_rgb_factor( ZERO ), dst_alpha_factor( ZERO ), 
@@ -199,4 +200,5 @@
 		nv::polygon_mode polygon_mode;
 		bool depth_mask;
+		render_state() : depth_mask( true ) {}
 	};
 
Index: trunk/src/gui/gui_renderer.cc
===================================================================
--- trunk/src/gui/gui_renderer.cc	(revision 321)
+++ trunk/src/gui/gui_renderer.cc	(revision 322)
@@ -11,4 +11,5 @@
 #include "nv/interface/device.hh"
 #include "nv/interface/context.hh"
+#include "nv/core/logging.hh"
 
 static const char *nv_gui_vertex_shader =
@@ -123,4 +124,5 @@
 	, m_reupload( true )
 {
+	NV_LOG( LOG_TRACE, "Creating GUI renderer..." );
 	m_context = w->get_context();
 	m_area.dim( dimension( w->get_width(), w->get_height() ) );
@@ -133,4 +135,5 @@
 	delete[] wfill;
 
+	NV_LOG( LOG_TRACE, "Creating render data..." );
 	screen_render_data* sr = new screen_render_data( w->get_context(), 1024 );
 	m_render_data = sr;
@@ -152,4 +155,5 @@
 	m_render_state.blending.src_alpha_factor = blending::SRC_ALPHA;
 	m_render_state.blending.dst_alpha_factor = blending::ONE_MINUS_SRC_ALPHA;
+	NV_LOG( LOG_TRACE, "GUI Renderer created" );
 }
 
Index: trunk/src/sdl/sdl_audio.cc
===================================================================
--- trunk/src/sdl/sdl_audio.cc	(revision 321)
+++ trunk/src/sdl/sdl_audio.cc	(revision 322)
@@ -43,5 +43,10 @@
 nv::sound* nv::sdl::audio::load_sound( const std::string& a_path )
 {
-	Mix_Chunk *sample = Mix_LoadWAV( a_path.c_str() );
+	// TODO: this is a really wierd error - if we remove this check, all hell gets loose
+	if ( Mix_LoadWAV_RW == nullptr || SDL_RWFromFile == nullptr ) 
+	{
+		NV_LOG( LOG_ERROR, "SDL_mixer not loaded!" );
+	}
+	Mix_Chunk *sample = Mix_LoadWAV_RW(SDL_RWFromFile(a_path.c_str(), "rb"), 1);
 	if ( sample == nullptr )
 	{
