Index: trunk/nv/core/library.hh
===================================================================
--- trunk/nv/core/library.hh	(revision 398)
+++ trunk/nv/core/library.hh	(revision 399)
@@ -39,5 +39,5 @@
 		 * Throws library_error on failure
 		 */
-		void open( string_ref name );
+		void open( string_view name );
 
 		/**
@@ -46,5 +46,5 @@
 		 * returns true if succeeded, false otherwise
 		 */
-		bool try_open( string_ref name );
+		bool try_open( string_view name );
 
 		/**
@@ -56,5 +56,5 @@
 		 * Returns library name
 		 */
-		string_ref get_name() const;
+		string_view get_name() const;
 
 		/**
@@ -63,5 +63,5 @@
 		 * Throws on symbol not found
 		 */
-		void* get( string_ref symbol );
+		void* get( string_view symbol );
 
 		/**
@@ -70,5 +70,5 @@
 		 * Returns null if symbol not found
 		 */
-		void* try_get( string_ref symbol );
+		void* try_get( string_view symbol );
 
 		/**
Index: trunk/nv/core/logger.hh
===================================================================
--- trunk/nv/core/logger.hh	(revision 398)
+++ trunk/nv/core/logger.hh	(revision 399)
@@ -34,5 +34,5 @@
 		 * @param message message to be logged.
 		 */
-		virtual void log( log_level level, const string_ref& message ) = 0;
+		virtual void log( log_level level, const string_view& message ) = 0;
 		/**
 		 * Enforcement of virtual destructor.
@@ -47,9 +47,9 @@
 		* Log level name (unpadded)
 		*/
-		string_ref level_name( log_level level ) const;
+		string_view level_name( log_level level ) const;
 		/**
 		* Log level name (padded)
 		*/
-		string_ref padded_level_name( log_level level ) const;
+		string_view padded_level_name( log_level level ) const;
 	};
 
@@ -86,5 +86,5 @@
 		 * @param message message to be logged.
 		 */
-		virtual void log( log_level level, const string_ref& message );
+		virtual void log( log_level level, const string_view& message );
 
 		/** 
@@ -144,5 +144,5 @@
 		 * Logging function.
 		 */
-		virtual void log( log_level level, const string_ref& message );
+		virtual void log( log_level level, const string_view& message );
 
 	private:
@@ -176,5 +176,5 @@
 		 * Logging function.
 		 */
-		virtual void log( log_level level, const string_ref& message );
+		virtual void log( log_level level, const string_view& message );
 
 	protected:
@@ -201,5 +201,5 @@
 		* @param flush_always if set to false, wont flush after each line.
 		*/
-		log_file_sink( const string_ref& file_name, bool flush_always = true );
+		log_file_sink( const string_view& file_name, bool flush_always = true );
 
 		/**
Index: trunk/nv/core/logging.hh
===================================================================
--- trunk/nv/core/logging.hh	(revision 398)
+++ trunk/nv/core/logging.hh	(revision 399)
@@ -50,6 +50,6 @@
 			m_level = level;
 		}
-		virtual void log( log_level level, const string_ref& message ) = 0;
-		void log_append( string_ref ref )
+		virtual void log( log_level level, const string_view& message ) = 0;
+		void log_append( string_view ref )
 		{
 			nvmemcpy( m_pos, ref.data(), ref.size() );
@@ -84,5 +84,5 @@
 		{
 			*m_pos = '\0';
-			log( level, string_ref( m_message, (size_t)( m_pos - m_message ) ) );
+			log( level, string_view( m_message, (size_t)( m_pos - m_message ) ) );
 			m_pos = m_message;
 		}
Index: trunk/nv/core/profiler.hh
===================================================================
--- trunk/nv/core/profiler.hh	(revision 398)
+++ trunk/nv/core/profiler.hh	(revision 399)
@@ -44,6 +44,6 @@
 			}
 		protected:
-			node( const string_ref& tag, node* parent );
-			node* request_child( const string_ref& tag );
+			node( const string_view& tag, node* parent );
+			node* request_child( const string_view& tag );
 			void start();
 			bool stop();
@@ -66,5 +66,5 @@
 		~profiler();
 
-		void start_profile( const string_ref& tag );
+		void start_profile( const string_view& tag );
 		void stop_profile();
 	public:
@@ -82,5 +82,5 @@
 	{
 	public:
-		profiler_guard( string_ref tag )
+		profiler_guard( string_view tag )
 		{
 			profiler::pointer()->start_profile( tag );
@@ -96,5 +96,5 @@
 	{
 	public:
-		profiler_condition_guard( string_ref tag, bool condition )
+		profiler_condition_guard( string_view tag, bool condition )
 			: m_active( condition )
 		{
Index: trunk/nv/engine/program_manager.hh
===================================================================
--- trunk/nv/engine/program_manager.hh	(revision 398)
+++ trunk/nv/engine/program_manager.hh	(revision 399)
@@ -24,6 +24,6 @@
 	public:
 		program_manager( context* a_context );
-		virtual string_ref get_storage_name() const { return "programs"; }
-		virtual string_ref get_resource_name() const { return "program"; }
+		virtual string_view get_storage_name() const { return "programs"; }
+		virtual string_view get_resource_name() const { return "program"; }
 	protected:
 		virtual resource_id load_resource( lua::table_guard& table );
Index: trunk/nv/engine/resource_system.hh
===================================================================
--- trunk/nv/engine/resource_system.hh	(revision 398)
+++ trunk/nv/engine/resource_system.hh	(revision 399)
@@ -33,6 +33,6 @@
 		resource_manager_base() : m_lua( nullptr ) {}
 		void initialize( lua::state* state );
-		virtual string_ref get_storage_name() const = 0;
-		virtual string_ref get_resource_name() const = 0;
+		virtual string_view get_storage_name() const = 0;
+		virtual string_view get_resource_name() const = 0;
 		virtual void clear() { m_names.clear(); }
 		void load_all();
Index: trunk/nv/fmod/fmod_audio.hh
===================================================================
--- trunk/nv/fmod/fmod_audio.hh	(revision 398)
+++ trunk/nv/fmod/fmod_audio.hh	(revision 399)
@@ -35,5 +35,5 @@
 			virtual channel play_sound( sound a_sound, float volume = 1.0f, float pan = 0.0f );
 			virtual channel play_sound( sound a_sound, vec3 position );
-			virtual sound load_sound( const string_ref& a_path );
+			virtual sound load_sound( const string_view& a_path );
 			virtual void release( sound a_sound );
 			virtual void set_orientation( vec3 forward, vec3 up );
Index: trunk/nv/formats/md3_loader.hh
===================================================================
--- trunk/nv/formats/md3_loader.hh	(revision 398)
+++ trunk/nv/formats/md3_loader.hh	(revision 399)
@@ -41,5 +41,5 @@
 	private:
 		void release_mesh_frame( mesh_data* data, sint32 frame, sint32 surface );
-		key_raw_channel* load_tags( const string_ref& tag );
+		key_raw_channel* load_tags( const string_view& tag );
 		bool m_merge_all;
 		void* m_md3;
Index: trunk/nv/formats/md5_loader.hh
===================================================================
--- trunk/nv/formats/md5_loader.hh	(revision 398)
+++ trunk/nv/formats/md5_loader.hh	(revision 399)
@@ -83,5 +83,5 @@
 	protected:
 		void reset();
-		void build_frame_skeleton( mesh_node_data* nodes, uint32 index, const const_array_ref<md5_joint_info>& joint_info, const const_array_ref<transform>& base_frames, const const_array_ref<float>& frame_data );
+		void build_frame_skeleton( mesh_node_data* nodes, uint32 index, const array_view<md5_joint_info>& joint_info, const array_view<transform>& base_frames, const array_view<float>& frame_data );
 		bool prepare_mesh( mesh_node_data* nodes, uint32 vtx_count, mesh_data* mdata, md5_weight* weights, md5_weight_info* weight_info );
 	protected:
Index: trunk/nv/gfx/texture_font.hh
===================================================================
--- trunk/nv/gfx/texture_font.hh	(revision 398)
+++ trunk/nv/gfx/texture_font.hh	(revision 399)
@@ -45,5 +45,5 @@
 			texture_font( texture_atlas* atlas, const char * filename, float size );
 			const texture_glyph* get_glyph( uint16 charcode ) const;
-			bool load_glyphs( string_ref codes );
+			bool load_glyphs( string_view codes );
 			float get_size() const { return m_size; }
 			~texture_font();
Index: trunk/nv/gl/gl_device.hh
===================================================================
--- trunk/nv/gl/gl_device.hh	(revision 398)
+++ trunk/nv/gl/gl_device.hh	(revision 399)
@@ -41,8 +41,8 @@
 
 		gl_device();
-		virtual image_data* create_image_data( string_ref filename ); // temporary
+		virtual image_data* create_image_data( string_view filename ); // temporary
 		virtual image_data* create_image_data( const uint8* data, uint32 size ); // temporary
 
-		virtual program create_program( string_ref vs_source, string_ref fs_source );
+		virtual program create_program( string_view vs_source, string_view fs_source );
 		virtual buffer create_buffer( buffer_type type, buffer_hint hint, size_t size, const void* source = nullptr );
 		virtual texture create_texture( texture_type type, ivec2 size, image_format aformat, sampler asampler, void* data = nullptr );
@@ -63,6 +63,6 @@
 	
 	private:
-		bool compile( gl_program_info* p, string_ref vertex_program, string_ref fragment_program );
-		bool compile( uint32 sh_type, string_ref shader_code, unsigned& glid );
+		bool compile( gl_program_info* p, string_view vertex_program, string_view fragment_program );
+		bool compile( uint32 sh_type, string_view shader_code, unsigned& glid );
 		void update_uniforms( gl_program_info* p );
 		void load_attributes( gl_program_info* p );
Index: trunk/nv/interface/audio.hh
===================================================================
--- trunk/nv/interface/audio.hh	(revision 398)
+++ trunk/nv/interface/audio.hh	(revision 399)
@@ -33,5 +33,5 @@
 		virtual channel play_sound( sound a_sound, vec3 position ) = 0;
 		// temporary - use streams later
-		virtual sound load_sound( const string_ref& a_path ) = 0;
+		virtual sound load_sound( const string_view& a_path ) = 0;
 		virtual void release( sound a_sound ) = 0;
 		virtual void set_orientation( vec3 forward, vec3 up ) = 0;
Index: trunk/nv/interface/context.hh
===================================================================
--- trunk/nv/interface/context.hh	(revision 398)
+++ trunk/nv/interface/context.hh	(revision 399)
@@ -300,5 +300,5 @@
 		{
 			vertex_array  va = create_vertex_array();
-			const_array_ref< mesh_raw_channel* > channels = data->get_raw_channels();
+			array_view< mesh_raw_channel* > channels = data->get_raw_channels();
 			for ( uint32 ch = 0; ch < channels.size(); ++ch )
 			{
Index: trunk/nv/interface/device.hh
===================================================================
--- trunk/nv/interface/device.hh	(revision 398)
+++ trunk/nv/interface/device.hh	(revision 399)
@@ -157,10 +157,10 @@
 			initialize_engine_uniforms();
 		}
-		virtual program create_program( string_ref vs_source, string_ref fs_source ) = 0;
+		virtual program create_program( string_view vs_source, string_view fs_source ) = 0;
 		virtual buffer create_buffer( buffer_type type, buffer_hint hint, size_t size, const void* source = nullptr ) = 0;
 		virtual texture create_texture( texture_type type, ivec2 size, image_format aformat, sampler asampler, void* data = nullptr ) = 0;
 		// TODO: remove?
 		virtual texture create_texture( ivec2 size, image_format aformat, sampler asampler, void* data = nullptr ) { return create_texture( TEXTURE_2D, size, aformat, asampler, data ); }
-		virtual image_data* create_image_data( string_ref filename ) = 0; // temporary
+		virtual image_data* create_image_data( string_view filename ) = 0; // temporary
 		virtual image_data* create_image_data( const uint8* data, uint32 size ) = 0; // temporary
 		virtual void release( texture ) = 0;
@@ -205,5 +205,5 @@
 
 		template < typename T >
-		void set_opt_uniform_array( program p, const std::string& name, const const_array_ref<T>& value )
+		void set_opt_uniform_array( program p, const std::string& name, const array_view<T>& value )
 		{
 			set_uniform_array( p, name, (const T*)value.data(), value.size(), false );
Index: trunk/nv/interface/mesh_data.hh
===================================================================
--- trunk/nv/interface/mesh_data.hh	(revision 398)
+++ trunk/nv/interface/mesh_data.hh	(revision 399)
@@ -106,6 +106,6 @@
 		}
 
-		const_array_ref< mesh_raw_channel* > get_raw_channels()  const { return m_channels; }
-		const mesh_raw_channel*              get_index_channel() const { return m_index_channel; }
+		array_view< mesh_raw_channel* > get_raw_channels()  const { return m_channels; }
+		const mesh_raw_channel*         get_index_channel() const { return m_index_channel; }
 		size_t get_channel_count() const { return m_channels.size(); }
 		const mesh_raw_channel* get_channel( size_t index ) const 
Index: trunk/nv/interface/uniform.hh
===================================================================
--- trunk/nv/interface/uniform.hh	(revision 398)
+++ trunk/nv/interface/uniform.hh	(revision 399)
@@ -152,6 +152,6 @@
 	typedef nv::vector< engine_uniform_base* >                        engine_uniform_list;
 	// TODO - change to literal type map
-	typedef nv::unordered_map< string_ref, engine_uniform_factory_base* > engine_uniform_factory_map;
-	typedef nv::unordered_map< string_ref, engine_link_uniform_base* >    engine_link_uniform_factory_map;
+	typedef nv::unordered_map< string_view, engine_uniform_factory_base* > engine_uniform_factory_map;
+	typedef nv::unordered_map< string_view, engine_link_uniform_base* >    engine_link_uniform_factory_map;
 
 	class engine_uniform_m_view : public engine_uniform< mat4 >
Index: trunk/nv/lua/lua_nova.hh
===================================================================
--- trunk/nv/lua/lua_nova.hh	(revision 398)
+++ trunk/nv/lua/lua_nova.hh	(revision 399)
@@ -14,5 +14,5 @@
 	namespace lua
 	{
-		void register_storage( state* a_state, string_ref name, string_ref constructor_name );
+		void register_storage( state* a_state, string_view name, string_view constructor_name );
 		void register_nova( state* a_state );
 	}
Index: trunk/nv/lua/lua_path.hh
===================================================================
--- trunk/nv/lua/lua_path.hh	(revision 398)
+++ trunk/nv/lua/lua_path.hh	(revision 399)
@@ -55,5 +55,5 @@
 			void parse();
 			void push( uint32 value );
-			void push( string_ref p );
+			void push( string_view p );
 
 		private:
Index: trunk/nv/lua/lua_state.hh
===================================================================
--- trunk/nv/lua/lua_state.hh	(revision 398)
+++ trunk/nv/lua/lua_state.hh	(revision 399)
@@ -129,8 +129,8 @@
 			}
 			bool is_defined( const path& p ) { return is_defined( p, m_global ); }
-			void register_native_function( lfunction f, string_ref name );
+			void register_native_function( lfunction f, string_view name );
 
 			template < typename F, F f >
-			void register_function( string_ref name )
+			void register_function( string_view name )
 			{
 				register_native_function( detail::function_wrapper< F, f >, name );
@@ -138,5 +138,5 @@
 
 			template < typename C, typename F, F f >
-			void register_function( string_ref name )
+			void register_function( string_view name )
 			{
 				register_native_function( detail::object_method_wrapper< C, F, f >, name );
@@ -192,20 +192,20 @@
 			explicit state( bool load_libs = false );
 			explicit state( lua_State* state );
-			bool do_string( string_ref code, string_ref name, int rvalues = 0 );
-			bool do_file( string_ref filename );
+			bool do_string( string_view code, string_view name, int rvalues = 0 );
+			bool do_file( string_view filename );
 			int get_stack_size();
 			void log_stack();
 			lua_State* get_raw();
-			ref register_object( void* o, string_ref lua_name );
-			ref register_proto( string_ref id, string_ref storage );
-			void store_metadata( ref object_index, string_ref metaname, void* pointer );
+			ref register_object( void* o, string_view lua_name );
+			ref register_proto( string_view id, string_view storage );
+			void store_metadata( ref object_index, string_view metaname, void* pointer );
 			void unregister_object( ref object_index );
 
-			void register_enum( string_ref name, int value );
-			void register_singleton( string_ref name, void* o );
-
-			void register_native_object_method( string_ref lua_name, string_ref name, lfunction f );
+			void register_enum( string_view name, int value );
+			void register_singleton( string_view name, void* o );
+
+			void register_native_object_method( string_view lua_name, string_view name, lfunction f );
 			template < typename F, F f >
-			void register_object_method( string_ref lua_name, string_ref name )
+			void register_object_method( string_view lua_name, string_view name )
 			{
 				register_native_object_method( lua_name, name, detail::object_method_wrapper< typename memfn_class_type<F>::type, F, f > );
@@ -224,5 +224,5 @@
 			}
 			template < typename H >
-			ref register_handle_component( const H& handle, string_ref id )
+			ref register_handle_component( const H& handle, string_view id )
 			{
 				nv::lua::push_handle( m_state, handle );
@@ -230,5 +230,5 @@
 			}
 			template < typename H >
-			ref register_handle_component( const H& handle, string_ref id, const path& proto )
+			ref register_handle_component( const H& handle, string_view id, const path& proto )
 			{
 				if ( !proto.resolve( m_state, true ) )
@@ -240,5 +240,5 @@
 			}
 			template < typename H >
-			void unregister_handle_component( const H& handle, string_ref id )
+			void unregister_handle_component( const H& handle, string_view id )
 			{
 				nv::lua::push_handle( m_state, handle );
@@ -277,10 +277,10 @@
 
 		private:
-			ref register_handle_component_impl( string_ref id, bool empty );
-			void unregister_handle_component_impl( string_ref id );
-
-			int load_string( string_ref code, string_ref name );
-			int load_file( string_ref filename );
-			int do_current( string_ref name, int rvalues = 0 );
+			ref register_handle_component_impl( string_view id, bool empty );
+			void unregister_handle_component_impl( string_view id );
+
+			int load_string( string_view code, string_view name );
+			int load_file( string_view filename );
+			int do_current( string_view name, int rvalues = 0 );
 			void deep_pointer_copy( int index, void* obj );
 		};
@@ -293,17 +293,17 @@
 			virtual ~table_guard();
 			size_t get_size();
-			bool has_field( string_ref element );
-			std::string get_std_string( string_ref element, string_ref defval = string_ref() );
-			const_string get_string( string_ref element, string_ref defval = string_ref() );
-			char get_char( string_ref element, char defval = ' ' );
-			int get_integer( string_ref element, int defval = 0 );
-			unsigned get_unsigned( string_ref element, unsigned defval = 0 );
-			double get_double( string_ref element, double defval = 0.0 );
-			float get_float( string_ref element, float defval = 0.0 );
-			bool get_boolean( string_ref element, bool defval = false );
-			bool is_table( string_ref element );
-			bool is_number( string_ref element );
-			bool is_boolean( string_ref element );
-			bool is_string( string_ref element );
+			bool has_field( string_view element );
+			std::string get_std_string( string_view element, string_view defval = string_view() );
+			const_string get_string( string_view element, string_view defval = string_view() );
+			char get_char( string_view element, char defval = ' ' );
+			int get_integer( string_view element, int defval = 0 );
+			unsigned get_unsigned( string_view element, unsigned defval = 0 );
+			double get_double( string_view element, double defval = 0.0 );
+			float get_float( string_view element, float defval = 0.0 );
+			bool get_boolean( string_view element, bool defval = false );
+			bool is_table( string_view element );
+			bool is_number( string_view element );
+			bool is_boolean( string_view element );
+			bool is_string( string_view element );
 		private:
 			int m_level;
Index: trunk/nv/lua/lua_values.hh
===================================================================
--- trunk/nv/lua/lua_values.hh	(revision 398)
+++ trunk/nv/lua/lua_values.hh	(revision 399)
@@ -74,5 +74,5 @@
 			void push_bool       ( lua_State *L, bool v );
 			void push_string     ( lua_State *L, const std::string& s );
-			void push_string_ref ( lua_State *L, string_ref s );
+			void push_string_view( lua_State *L, string_view s );
 			void push_cstring    ( lua_State *L, const char* s );
 			void push_pointer    ( lua_State *L, void* p );
@@ -85,5 +85,5 @@
 			std::string to_string     ( lua_State *L, int index );
 			const char* to_cstring    ( lua_State *L, int index );
-			string_ref  to_string_ref ( lua_State *L, int index );
+			string_view to_string_view( lua_State *L, int index );
 			void*       to_pointer    ( lua_State *L, int index );
 			void*       to_ref_object ( lua_State *L, int index );
@@ -95,5 +95,5 @@
 			std::string to_string     ( lua_State *L, int index, const std::string& def );
 			const char* to_cstring    ( lua_State *L, int index, const char* def );
-			string_ref  to_string_ref ( lua_State *L, int index, string_ref def );
+			string_view to_string_view( lua_State *L, int index, string_view def );
 			void*       to_pointer    ( lua_State *L, int index, void* def );
 			void*       to_ref_object ( lua_State *L, int index, void* def );
@@ -159,9 +159,9 @@
 
 		template <>
-		struct pass_traits < string_ref >
-		{
-			static void push( lua_State *L, string_ref s ) { detail::push_string_ref( L, s ); }
-			static string_ref to( lua_State *L, int index ) { return detail::to_string_ref( L, index ); }
-			static string_ref to( lua_State *L, int index, string_ref def ) { return detail::to_string_ref( L, index, def ); }
+		struct pass_traits < string_view >
+		{
+			static void push( lua_State *L, string_view s ) { detail::push_string_view( L, s ); }
+			static string_view to( lua_State *L, int index ) { return detail::to_string_view( L, index ); }
+			static string_view to( lua_State *L, int index, string_view def ) { return detail::to_string_view( L, index, def ); }
 		};
 
Index: trunk/nv/sdl/sdl_audio.hh
===================================================================
--- trunk/nv/sdl/sdl_audio.hh	(revision 398)
+++ trunk/nv/sdl/sdl_audio.hh	(revision 399)
@@ -33,5 +33,5 @@
 			virtual channel play_sound( sound a_sound, float volume = 1.0f, float pan = 0.0f );
 			virtual channel play_sound( sound a_sound, vec3 position );
-			virtual sound load_sound( const string_ref& a_path );
+			virtual sound load_sound( const string_view& a_path );
 			virtual void release( sound a_sound );
 			virtual void set_orientation( vec3 forward, vec3 up );
Index: trunk/nv/stl/container/contiguous_storage_policy.hh
===================================================================
--- trunk/nv/stl/container/contiguous_storage_policy.hh	(revision 398)
+++ trunk/nv/stl/container/contiguous_storage_policy.hh	(revision 399)
@@ -45,5 +45,5 @@
 
 		operator array_ref< value_type >() { return array_ref< value_type >( Storage::data(), size() ); }
-		operator const_array_ref< value_type >() const { return const_array_ref< value_type >( Storage::data(), size() ); }
+		operator array_view< value_type >() const { return array_view< value_type >( Storage::data(), size() ); }
 
 		// allow move
@@ -72,5 +72,5 @@
 
 		operator array_ref< value_type >() { return array_ref< value_type >( Storage::data(), size() ); }
-		operator const_array_ref< value_type >() const { return const_array_ref< value_type >( Storage::data(), size() ); }
+		operator array_view< value_type >() const { return array_view< value_type >( Storage::data(), size() ); }
 	protected:
 		constexpr resizable_storage() : m_size( 0 ) {}
@@ -141,5 +141,5 @@
 
 		operator array_ref< value_type >() { return array_ref< value_type >( Storage::data(), size() ); }
-		operator const_array_ref< value_type >() const { return const_array_ref< value_type >( Storage::data(), size() ); }
+		operator array_view< value_type >() const { return array_view< value_type >( Storage::data(), size() ); }
 	protected:
 		constexpr growable_storage() : m_size( 0 ), m_capacity( 0 ) {}
Index: trunk/nv/stl/memory.hh
===================================================================
--- trunk/nv/stl/memory.hh	(revision 398)
+++ trunk/nv/stl/memory.hh	(revision 399)
@@ -34,5 +34,5 @@
 
 	template< typename T >
-	class storage_view
+	class storage_ref
 	{
 	public:
@@ -43,7 +43,7 @@
 		static constexpr bool is_const    = false;
 
-		constexpr storage_view() 
+		constexpr storage_ref() 
 			: m_data( nullptr ), m_size( 0 ) {}
-		constexpr storage_view( value_type* a_data, size_type a_size )
+		constexpr storage_ref( value_type* a_data, size_type a_size )
 			: m_data( a_data ), m_size( a_size ) {}
 
@@ -67,5 +67,5 @@
 
 	template< typename T >
-	class const_storage_view
+	class storage_view
 	{
 	public:
@@ -76,9 +76,9 @@
 		static constexpr bool is_const    = true;
 
-		constexpr const_storage_view()
+		constexpr storage_view()
 			: m_data( nullptr ), m_size( 0 ) {}
-		constexpr const_storage_view( const value_type* a_data, size_type a_size )
+		constexpr storage_view( const value_type* a_data, size_type a_size )
 			: m_data( a_data ), m_size( a_size ) {}
-		constexpr const_storage_view( const storage_view<T>& view )
+		constexpr storage_view( const storage_ref<T>& view )
 			: m_data( view.data() ), m_size( view.size() ) {}
 
@@ -474,8 +474,8 @@
 
 	template < typename T > 
-	using const_array_ref = detail::add_random_access< detail::add_iterators < const_storage_view< T > > >;
-	template < typename T >
-	using array_ref       = detail::add_random_access< detail::add_iterators < storage_view< T > > >;
-	using const_mem_ref = const_array_ref< char >;
+	using array_view    = detail::add_random_access< detail::add_iterators < storage_view< T > > >;
+	template < typename T >
+	using array_ref     = detail::add_random_access< detail::add_iterators < storage_ref< T > > >;
+	using mem_view      = array_view< char >;
 	using mem_ref       = array_ref< char >;
 
Index: trunk/nv/stl/string.hh
===================================================================
--- trunk/nv/stl/string.hh	(revision 398)
+++ trunk/nv/stl/string.hh	(revision 399)
@@ -77,10 +77,10 @@
 	};
 	
-	class string_ref;
+	class string_view;
 
 	// string base class - will become a base for a string class later
-	class string_base : public detail::add_iterators< const_storage_view< char > >
-	{
-		typedef detail::add_iterators< const_storage_view< char > > inherited;
+	class string_base : public detail::add_iterators< storage_view< char > >
+	{
+		typedef detail::add_iterators< storage_view< char > > inherited;
 	public:
 		typedef char           value_type;
@@ -197,5 +197,5 @@
 
 		// string operations
-		string_ref substr( size_type p, size_type n = npos ) const;
+		string_view substr( size_type p, size_type n = npos ) const;
 
 		inline size_t hash() const
@@ -245,23 +245,23 @@
 
 
-	class string_ref : public string_base
+	class string_view : public string_base
 	{
 	public:
-		inline string_ref() {}
-		inline string_ref( const string_ref& rhs )
+		inline string_view() {}
+		inline string_view( const string_view& rhs )
 			: string_base( rhs.data(), rhs.size() )
 		{
 		}
-		inline string_ref( const string_base& rhs )
+		inline string_view( const string_base& rhs )
 			: string_base( rhs.data(), rhs.size() )
 		{
 		}
 
-		inline string_ref( const std::string& str )
+		inline string_view( const std::string& str )
 			: string_base( str.data(), str.size() )
 		{
 		}
 
-		inline string_ref( const char* str, size_type len )
+		inline string_view( const char* str, size_type len )
 			: string_base( str, len )
 		{
@@ -270,17 +270,17 @@
 		// Literal constructors
 		template< size_t N >
-		inline string_ref( char( &s )[N] ) : string_base( s, N - 1 ) {}
-		template< size_t N >
-		inline string_ref( const char( &s )[N] ) : string_base( s, N - 1 ) {}
+		inline string_view( char( &s )[N] ) : string_base( s, N - 1 ) {}
+		template< size_t N >
+		inline string_view( const char( &s )[N] ) : string_base( s, N - 1 ) {}
 
 		// Non-literal constructors
 		template< typename U >
-		inline string_ref( U str, typename enable_if<is_same<U, const char*>::value>::type* = nullptr ) : string_base( str, nvstrlen( str ) ) {}
+		inline string_view( U str, typename enable_if<is_same<U, const char*>::value>::type* = nullptr ) : string_base( str, nvstrlen( str ) ) {}
 
 		// Non-literal constructors
 		template< typename U >
-		inline string_ref( U str, typename enable_if<is_same<U, char*>::value>::type* = nullptr ) : string_base( str, nvstrlen( str ) ) {}
-
-		inline string_ref& operator=( const string_ref &rhs )
+		inline string_view( U str, typename enable_if<is_same<U, char*>::value>::type* = nullptr ) : string_base( str, nvstrlen( str ) ) {}
+
+		inline string_view& operator=( const string_view &rhs )
 		{
 			assign( rhs.data(), rhs.size() );
@@ -309,5 +309,5 @@
 
 	template< typename H >
-	struct hash< string_ref, H > : hash< string_base, H >{};
+	struct hash< string_view, H > : hash< string_base, H >{};
 
 	// const string is movable but not copyable
@@ -364,9 +364,9 @@
 	};
 
-	inline string_ref string_base::substr( size_type p, size_type n ) const
-	{
-		if ( p > size() ) return string_ref(); // NV_THROW( out_of_range( "substr" ) );
+	inline string_view string_base::substr( size_type p, size_type n ) const
+	{
+		if ( p > size() ) return string_view(); // NV_THROW( out_of_range( "substr" ) );
 		if ( n == p || p + n > size() ) n = size() - p;
-		return string_ref( data() + p, n );
+		return string_view( data() + p, n );
 	}
 
@@ -374,17 +374,17 @@
 inline bool operator OPERATOR ( const string_base& lhs, const std::string& rhs )\
 {\
-	return lhs OPERATOR string_ref( rhs );\
+	return lhs OPERATOR string_view( rhs );\
 }\
 inline bool operator OPERATOR ( const std::string& lhs, const string_base& rhs )\
 {\
-	return string_ref( lhs ) OPERATOR rhs;\
+	return string_view( lhs ) OPERATOR rhs;\
 }\
 inline bool operator OPERATOR ( const string_base& lhs, const char* rhs )\
 {\
-	return lhs OPERATOR string_ref( rhs );\
+	return lhs OPERATOR string_view( rhs );\
 }\
 inline bool operator OPERATOR ( const char* lhs, const string_base& rhs )\
 {\
-	return string_ref( lhs ) OPERATOR rhs;\
+	return string_view( lhs ) OPERATOR rhs;\
 }\
 
@@ -432,13 +432,13 @@
 size_t f64_to_buffer( f64 n, char* str );
 
-inline string_ref trimmed( const string_ref& str )
+inline string_view trimmed( const string_view& str )
 {
 	size_t endpos = str.find_last_not_of( " \r\n\t" );
 	size_t startpos = str.find_first_not_of( " \r\n\t" );
 
-	if ( string_ref::npos != endpos || string_ref::npos != startpos )
-	{
-		if ( string_ref::npos == startpos ) startpos = 0;
-		if ( string_ref::npos != endpos )   endpos = endpos + 1 - startpos;
+	if ( string_view::npos != endpos || string_view::npos != startpos )
+	{
+		if ( string_view::npos == startpos ) startpos = 0;
+		if ( string_view::npos != endpos )   endpos = endpos + 1 - startpos;
 		return str.substr( startpos, endpos );
 	}
@@ -446,8 +446,8 @@
 }
 
-inline string_ref rtrimmed( const string_ref& str )
+inline string_view rtrimmed( const string_view& str )
 {
 	size_t endpos = str.find_last_not_of( " \r\n\t" );
-	if ( string_ref::npos != endpos )
+	if ( string_view::npos != endpos )
 	{
 		return str.substr( 0, endpos + 1 );
@@ -456,8 +456,8 @@
 }
 
-inline string_ref ltrimmed( const string_ref& str )
+inline string_view ltrimmed( const string_view& str )
 {
 	size_t startpos = str.find_first_not_of( " \r\n\t" );
-	if ( string_ref::npos != startpos )
+	if ( string_view::npos != startpos )
 	{
 		return str.substr( startpos );
@@ -467,8 +467,8 @@
 
 
-inline string_ref extract_extension( string_ref filename )
+inline string_view extract_extension( string_view filename )
 {
 	size_t lastdot = filename.find_last_of( '.' );
-	if ( string_ref::npos != lastdot )
+	if ( string_view::npos != lastdot )
 		return filename.substr( lastdot + 1 );
 	return filename;
Index: trunk/src/core/library.cc
===================================================================
--- trunk/src/core/library.cc	(revision 398)
+++ trunk/src/core/library.cc	(revision 399)
@@ -41,5 +41,5 @@
 }
 
-void library::open( string_ref name )
+void library::open( string_view name )
 {
 	m_name.assign( name.data(), name.size() );
@@ -51,5 +51,5 @@
 }
 
-bool nv::library::try_open( string_ref name )
+bool nv::library::try_open( string_view name )
 {
 	m_name.assign( name.data(), name.size() );
@@ -62,7 +62,7 @@
 }
 
-string_ref library::get_name() const
+string_view library::get_name() const
 {
-    return string_ref( m_name );
+    return string_view( m_name );
 }
 
@@ -76,5 +76,5 @@
 
 	std::string name = m_name;
-	string_ref ext( NV_LIB_EXT );
+	string_view ext( NV_LIB_EXT );
 
 	if ( name.length() < ext.length() || name.substr( name.length() - ext.length(), ext.length() ) != ext )
@@ -94,5 +94,5 @@
 }
 
-void* library::get( string_ref symbol )
+void* library::get( string_view symbol )
 {
 	void* result = (void*) NV_LIB_GET( (NV_LIB_HANDLE) m_handle, symbol.data() );
@@ -104,5 +104,5 @@
 }
 
-void* nv::library::try_get( string_ref symbol )
+void* nv::library::try_get( string_view symbol )
 {
 	return (void*) NV_LIB_GET( (NV_LIB_HANDLE) m_handle, symbol.data() );
Index: trunk/src/core/logger.cc
===================================================================
--- trunk/src/core/logger.cc	(revision 398)
+++ trunk/src/core/logger.cc	(revision 399)
@@ -85,5 +85,5 @@
 
 // log function
-void logger::log( log_level level, const string_ref& message )
+void logger::log( log_level level, const string_view& message )
 {
 	for ( auto& sink_info : m_log_sinks )
@@ -141,5 +141,5 @@
 
 // console logging
-void log_console_sink::log( log_level level, const string_ref& message )
+void log_console_sink::log( log_level level, const string_view& message )
 {
 	char stamp[16];
@@ -177,5 +177,5 @@
 
 // handle logging
-void log_handle_sink::log( log_level level, const string_ref& message )
+void log_handle_sink::log( log_level level, const string_view& message )
 {
 	char stamp[16];
@@ -204,5 +204,5 @@
 }
 
-nv::log_file_sink::log_file_sink( const string_ref& file_name, bool flush_always /*= true */ )
+nv::log_file_sink::log_file_sink( const string_view& file_name, bool flush_always /*= true */ )
 	: log_handle_sink( nullptr, flush_always )
 {
@@ -257,12 +257,12 @@
 }
 
-string_ref nv::log_sink::level_name( log_level level ) const
+string_view nv::log_sink::level_name( log_level level ) const
 {
 	return NV_LOG_LEVEL_NAME( level );
 }
 
-string_ref nv::log_sink::padded_level_name( log_level level ) const
-{
-	return string_ref( NV_LOG_LEVEL_NAME_PAD( level ), 8 );
-}
-
+string_view nv::log_sink::padded_level_name( log_level level ) const
+{
+	return string_view( NV_LOG_LEVEL_NAME_PAD( level ), 8 );
+}
+
Index: trunk/src/core/profiler.cc
===================================================================
--- trunk/src/core/profiler.cc	(revision 398)
+++ trunk/src/core/profiler.cc	(revision 399)
@@ -30,5 +30,5 @@
 }
 
-void profiler::start_profile( const string_ref& tag )
+void profiler::start_profile( const string_view& tag )
 {
 	if ( tag != m_current->m_tag )
@@ -47,5 +47,5 @@
 }
 
-profiler::node::node( const string_ref& tag, node* parent )
+profiler::node::node( const string_view& tag, node* parent )
 	: m_tag( tag.to_string() )
 	, m_parent( parent )
@@ -58,5 +58,5 @@
 }
 
-profiler::node* profiler::node::request_child( const string_ref& tag )
+profiler::node* profiler::node::request_child( const string_view& tag )
 {
 	std::string stag( tag.to_string() );
@@ -110,5 +110,5 @@
 	char buffer[128];
 	snprintf( buffer, 128, "%-23s %6s %6s %9s %6s", "TAG", "%PARNT", "CALLS", "TOTAL(ms)", "AVG(ms)" );
-	NV_LOG_INFO( string_ref( buffer, nvstrlen( buffer ) ) );
+	NV_LOG_INFO( string_view( buffer, nvstrlen( buffer ) ) );
  	log_node_children( 0, m_root );
 	NV_LOG_INFO( "-- PROFILER REPORT END ---------------------------------" );
@@ -131,5 +131,5 @@
 			snprintf( buffer + indent, 128 - indent, "%*.*s %6.2f %6d %9.2f %6.2f", indent - 23, 23 - indent,
 				c->m_tag.c_str(), pparent, calls, total_ms, avg_ms );
-			NV_LOG_INFO( string_ref( buffer, nvstrlen( buffer ) ) );
+			NV_LOG_INFO( string_view( buffer, nvstrlen( buffer ) ) );
 			if ( c->m_children.size() > 0 )
 			{
Index: trunk/src/engine/program_manager.cc
===================================================================
--- trunk/src/engine/program_manager.cc	(revision 398)
+++ trunk/src/engine/program_manager.cc	(revision 399)
@@ -37,5 +37,5 @@
 	}
 
-	nv::program program = m_context->get_device()->create_program( string_ref( vsource ), string_ref( fsource ) );
+	nv::program program = m_context->get_device()->create_program( string_view( vsource ), string_view( fsource ) );
 	return add( program );
 }
Index: trunk/src/engine/resource_system.cc
===================================================================
--- trunk/src/engine/resource_system.cc	(revision 398)
+++ trunk/src/engine/resource_system.cc	(revision 399)
@@ -12,5 +12,5 @@
 {
 	m_lua = a_lua_state;
-	lua::register_storage( m_lua, get_storage_name(), string_ref( "register_" + get_resource_name().to_string() ) );
+	lua::register_storage( m_lua, get_storage_name(), string_view( "register_" + get_resource_name().to_string() ) );
 }
 
Index: trunk/src/fmod/fmod_audio.cc
===================================================================
--- trunk/src/fmod/fmod_audio.cc	(revision 398)
+++ trunk/src/fmod/fmod_audio.cc	(revision 399)
@@ -88,5 +88,5 @@
 
 
-nv::sound fmod::audio::load_sound( const string_ref& a_path )
+nv::sound fmod::audio::load_sound( const string_view& a_path )
 {
 	FMOD_SYSTEM* system = (FMOD_SYSTEM*)m_system;
Index: trunk/src/formats/assimp_loader.cc
===================================================================
--- trunk/src/formats/assimp_loader.cc	(revision 398)
+++ trunk/src/formats/assimp_loader.cc	(revision 399)
@@ -237,5 +237,5 @@
 			aiMesh* mesh = scene->mMeshes[mc];
 
-			NV_LOG_NOTICE( "Mesh #", mc, "   - ", string_ref( (char*)mesh->mName.data ) );
+			NV_LOG_NOTICE( "Mesh #", mc, "   - ", string_view( (char*)mesh->mName.data ) );
 			NV_LOG_NOTICE( "  bones   - ", mesh->mNumBones );
 			NV_LOG_NOTICE( "  uvs     - ", mesh->mNumUVComponents[0] );
Index: trunk/src/formats/md3_loader.cc
===================================================================
--- trunk/src/formats/md3_loader.cc	(revision 398)
+++ trunk/src/formats/md3_loader.cc	(revision 399)
@@ -284,5 +284,5 @@
 }
 
-nv::key_raw_channel* nv::md3_loader::load_tags( const string_ref& tag )
+nv::key_raw_channel* nv::md3_loader::load_tags( const string_view& tag )
 {
 	md3_t* md3 = (md3_t*)m_md3;
@@ -294,5 +294,5 @@
 		{
 			const md3_tag_t& rtag = md3->tags[i + md3->header.num_tags * f];
-			string_ref rname((char*)(rtag.name));
+			string_view rname((char*)(rtag.name));
 			if (rname == tag)
 			{
@@ -425,5 +425,5 @@
 	{
 		const md3_tag_t& rtag = md3->tags[i];
-		string_ref name( (char*)(rtag.name) );
+		string_view name( (char*)(rtag.name) );
 
 		nodes[i].transform = mat4();
Index: trunk/src/formats/md5_loader.cc
===================================================================
--- trunk/src/formats/md5_loader.cc	(revision 398)
+++ trunk/src/formats/md5_loader.cc	(revision 399)
@@ -457,5 +457,5 @@
 }
 
-void md5_loader::build_frame_skeleton( mesh_node_data* nodes, uint32 index, const const_array_ref<md5_joint_info>& joint_infos, const const_array_ref<transform>& base_frames, const const_array_ref<float>& frame_data )
+void md5_loader::build_frame_skeleton( mesh_node_data* nodes, uint32 index, const array_view<md5_joint_info>& joint_infos, const array_view<transform>& base_frames, const array_view<float>& frame_data )
 {
 	assert( m_type == ANIMATION );
Index: trunk/src/formats/nmd_loader.cc
===================================================================
--- trunk/src/formats/nmd_loader.cc	(revision 398)
+++ trunk/src/formats/nmd_loader.cc	(revision 399)
@@ -162,5 +162,5 @@
 static void nmd_dump_mesh( const mesh_data* mesh, stream& stream_out )
 {
-	const_array_ref< mesh_raw_channel* > data  = mesh->get_raw_channels();
+	array_view< mesh_raw_channel* > data  = mesh->get_raw_channels();
 
 	uint32 size = sizeof( nmd_element_header );
Index: trunk/src/gfx/texture_font.cc
===================================================================
--- trunk/src/gfx/texture_font.cc	(revision 398)
+++ trunk/src/gfx/texture_font.cc	(revision 399)
@@ -92,5 +92,5 @@
 }
 
-bool texture_font::load_glyphs( string_ref codes )
+bool texture_font::load_glyphs( string_view codes )
 {
 	FT_Face face = (FT_Face)(m_rface);
Index: trunk/src/gl/gl_device.cc
===================================================================
--- trunk/src/gl/gl_device.cc	(revision 398)
+++ trunk/src/gl/gl_device.cc	(revision 399)
@@ -24,5 +24,5 @@
 }
 
-program gl_device::create_program( string_ref vs_source, string_ref fs_source )
+program gl_device::create_program( string_view vs_source, string_view fs_source )
 {
 	program result = m_programs.create();
@@ -41,5 +41,5 @@
 // this is a temporary function that will be removed once we find a way to 
 // pass binary file data around
-image_data* gl_device::create_image_data( string_ref filename )
+image_data* gl_device::create_image_data( string_view filename )
 {
 	load_sdl_image_library();
@@ -264,5 +264,5 @@
 }
 
-bool nv::gl_device::compile( gl_program_info* p, string_ref vertex_program, string_ref fragment_program )
+bool nv::gl_device::compile( gl_program_info* p, string_view vertex_program, string_view fragment_program )
 {
 	if (!compile( GL_VERTEX_SHADER,   vertex_program, p->glidv ))   { return false; }
@@ -407,5 +407,5 @@
 }
 
-bool nv::gl_device::compile( uint32 sh_type, string_ref shader_code, unsigned& glid )
+bool nv::gl_device::compile( uint32 sh_type, string_view shader_code, unsigned& glid )
 {
 	glid = glCreateShader( sh_type );
Index: trunk/src/lua/lua_nova.cc
===================================================================
--- trunk/src/lua/lua_nova.cc	(revision 398)
+++ trunk/src/lua/lua_nova.cc	(revision 399)
@@ -810,5 +810,5 @@
 }
 
-void nv::lua::register_storage( state* a_state, string_ref name, string_ref constructor_name )
+void nv::lua::register_storage( state* a_state, string_view name, string_view constructor_name )
 {
 	// TODO: error checking
Index: trunk/src/lua/lua_path.cc
===================================================================
--- trunk/src/lua/lua_path.cc	(revision 398)
+++ trunk/src/lua/lua_path.cc	(revision 399)
@@ -14,9 +14,9 @@
 {
 	if ( m_elements[0].length == 0 || m_elements[0].str == nullptr ) return;
-	string_ref spath( m_elements[0].str, m_elements[0].length );
+	string_view spath( m_elements[0].str, m_elements[0].length );
 	m_count = 0;
 	size_t point = spath.find( '.' );
 
-	while ( point != string_ref::npos )
+	while ( point != string_view::npos )
 	{
 		m_elements[m_count].str    = spath.data();
@@ -39,5 +39,5 @@
 }
 
-void nv::lua::path::push( string_ref p )
+void nv::lua::path::push( string_view p )
 {
 	m_elements[ m_count ].str    = p.data();
Index: trunk/src/lua/lua_state.cc
===================================================================
--- trunk/src/lua/lua_state.cc	(revision 398)
+++ trunk/src/lua/lua_state.cc	(revision 399)
@@ -80,5 +80,5 @@
 }
 
-void lua::state_wrapper::register_native_function( lfunction f, string_ref name )
+void lua::state_wrapper::register_native_function( lfunction f, string_view name )
 {
 	if ( m_global ) push_global_table();
@@ -171,5 +171,5 @@
 }
 
-bool lua::table_guard::has_field( string_ref element )
+bool lua::table_guard::has_field( string_view element )
 {
 	lua_getfield( m_state, -1, element.data() );
@@ -179,5 +179,5 @@
 }
 
-std::string lua::table_guard::get_std_string( string_ref element, string_ref defval /*= string_ref() */ )
+std::string lua::table_guard::get_std_string( string_view element, string_view defval /*= string_view() */ )
 {
 	lua_getfield( m_state, -1, element.data() );
@@ -198,5 +198,5 @@
 }
 
-const_string lua::table_guard::get_string( string_ref element, string_ref defval /*= string_ref() */ )
+const_string lua::table_guard::get_string( string_view element, string_view defval /*= string_view() */ )
 {
  	lua_getfield( m_state, -1, element.data() );
@@ -217,5 +217,5 @@
 }
 
-char lua::table_guard::get_char( string_ref element, char defval /*= "" */ )
+char lua::table_guard::get_char( string_view element, char defval /*= "" */ )
 {
 	lua_getfield( m_state, -1, element.data() );
@@ -225,5 +225,5 @@
 }
 
-int lua::table_guard::get_integer( string_ref element, int defval /*= "" */ )
+int lua::table_guard::get_integer( string_view element, int defval /*= "" */ )
 {
 	lua_getfield( m_state, -1, element.data() );
@@ -233,5 +233,5 @@
 }
 
-unsigned lua::table_guard::get_unsigned( string_ref element, unsigned defval /*= "" */ )
+unsigned lua::table_guard::get_unsigned( string_view element, unsigned defval /*= "" */ )
 {
 	lua_getfield( m_state, -1, element.data() );
@@ -241,5 +241,5 @@
 }
 
-double lua::table_guard::get_double( string_ref element, double defval /*= "" */ )
+double lua::table_guard::get_double( string_view element, double defval /*= "" */ )
 {
 	lua_getfield( m_state, -1, element.data() );
@@ -250,5 +250,5 @@
 
 
-float nv::lua::table_guard::get_float( string_ref element, float defval /*= 0.0 */ )
+float nv::lua::table_guard::get_float( string_view element, float defval /*= 0.0 */ )
 {
 	lua_getfield( m_state, -1, element.data() );
@@ -258,5 +258,5 @@
 }
 
-bool lua::table_guard::get_boolean( string_ref element, bool defval /*= "" */ )
+bool lua::table_guard::get_boolean( string_view element, bool defval /*= "" */ )
 {
 	lua_getfield( m_state, -1, element.data() );
@@ -266,5 +266,5 @@
 }
 
-bool nv::lua::table_guard::is_table( string_ref element )
+bool nv::lua::table_guard::is_table( string_view element )
 {
 	lua_getfield( m_state, -1, element.data() );
@@ -274,5 +274,5 @@
 }
 
-bool nv::lua::table_guard::is_number( string_ref element )
+bool nv::lua::table_guard::is_number( string_view element )
 {
 	lua_getfield( m_state, -1, element.data() );
@@ -282,5 +282,5 @@
 }
 
-bool nv::lua::table_guard::is_boolean( string_ref element )
+bool nv::lua::table_guard::is_boolean( string_view element )
 {
 	lua_getfield( m_state, -1, element.data() );
@@ -290,5 +290,5 @@
 }
 
-bool nv::lua::table_guard::is_string( string_ref element )
+bool nv::lua::table_guard::is_string( string_view element )
 {
 	lua_getfield( m_state, -1, element.data() );
@@ -350,5 +350,5 @@
 }
 
-int lua::state::load_string( string_ref code, string_ref name )
+int lua::state::load_string( string_view code, string_view name )
 {
 	NV_LOG_TRACE( "Loading Lua string '", name, "'");
@@ -356,5 +356,5 @@
 }
 
-int lua::state::load_file( string_ref filename )
+int lua::state::load_file( string_view filename )
 {
 	NV_LOG_NOTICE( "Loading Lua file '", filename, "'");
@@ -362,5 +362,5 @@
 }
 
-bool lua::state::do_string( string_ref code, string_ref name, int rvalues )
+bool lua::state::do_string( string_view code, string_view name, int rvalues )
 {
 	lua::stack_guard( this );
@@ -374,5 +374,5 @@
 }
 
-bool lua::state::do_file( string_ref filename )
+bool lua::state::do_file( string_view filename )
 {
 	lua::stack_guard( this );
@@ -386,5 +386,5 @@
 }
 
-int lua::state::do_current( string_ref name, int rvalues )
+int lua::state::do_current( string_view name, int rvalues )
 {
 	int result = lua_pcall(m_state, 0, rvalues, 0);
@@ -417,5 +417,5 @@
 }
 
-lua::ref lua::state::register_object( void* o, string_ref lua_name )
+lua::ref lua::state::register_object( void* o, string_view lua_name )
 {
 	if ( o == nullptr ) return lua::ref( lua::ref::none );
@@ -430,5 +430,5 @@
 }
 
-lua::ref lua::state::register_proto( string_ref id, string_ref storage )
+lua::ref lua::state::register_proto( string_view id, string_view storage )
 {
 	stack_guard guard( this );
@@ -446,5 +446,5 @@
 }
 
-void lua::state::register_native_object_method( string_ref lua_name, string_ref name, lfunction f )
+void lua::state::register_native_object_method( string_view lua_name, string_view name, lfunction f )
 {
 	stack_guard guard( this );
@@ -508,5 +508,5 @@
 }
 
-void nv::lua::state::store_metadata( ref object_index, string_ref metaname, void* pointer )
+void nv::lua::state::store_metadata( ref object_index, string_view metaname, void* pointer )
 {
 	if ( !object_index.is_valid() ) return;
@@ -518,5 +518,5 @@
 }
 
-void nv::lua::state::register_enum( string_ref name, int value )
+void nv::lua::state::register_enum( string_view name, int value )
 {
 	lua_pushinteger( m_state, value );
@@ -524,5 +524,5 @@
 }
 
-nv::lua::ref nv::lua::state::register_handle_component_impl( string_ref id, bool empty )
+nv::lua::ref nv::lua::state::register_handle_component_impl( string_view id, bool empty )
 {
 	int args = empty ? 1 : 2;
@@ -547,5 +547,5 @@
 }
 
-void nv::lua::state::unregister_handle_component_impl( string_ref id )
+void nv::lua::state::unregister_handle_component_impl( string_view id )
 {
 	NV_LUA_STACK_ASSERT( m_state, -1 );
@@ -562,5 +562,5 @@
 }
 
-void nv::lua::state::register_singleton( string_ref name, void* o )
+void nv::lua::state::register_singleton( string_view name, void* o )
 {
 	if ( o == nullptr ) return;
Index: trunk/src/lua/lua_values.cc
===================================================================
--- trunk/src/lua/lua_values.cc	(revision 398)
+++ trunk/src/lua/lua_values.cc	(revision 399)
@@ -75,5 +75,5 @@
 }
 
-void nv::lua::detail::push_string_ref( lua_State *L, string_ref s )
+void nv::lua::detail::push_string_view( lua_State *L, string_view s )
 {
 	lua_pushlstring( L, s.data(), s.size() );
@@ -123,9 +123,9 @@
 }
 
-nv::string_ref nv::lua::detail::to_string_ref( lua_State *L, int index )
+nv::string_view nv::lua::detail::to_string_view( lua_State *L, int index )
 {
 	size_t length = 0;
 	const char* result = lua_tolstring( L, index, &length );
-	return string_ref( result, length );
+	return string_view( result, length );
 }
 
Index: trunk/src/sdl/sdl_audio.cc
===================================================================
--- trunk/src/sdl/sdl_audio.cc	(revision 398)
+++ trunk/src/sdl/sdl_audio.cc	(revision 399)
@@ -85,5 +85,5 @@
 }
 
-nv::sound nv::sdl::audio::load_sound( const string_ref& a_path )
+nv::sound nv::sdl::audio::load_sound( const string_view& a_path )
 {
 	// TODO: this is a really weird error - if we remove this check, all hell gets loose
