Index: trunk/nv/lua/lua_dispatch.hh
===================================================================
--- trunk/nv/lua/lua_dispatch.hh	(revision 252)
+++ trunk/nv/lua/lua_dispatch.hh	(revision 253)
@@ -138,5 +138,5 @@
 			};
 
-			template < typename F, F* f > 
+			template < typename F, F f > 
 			int function_wrapper( lua_State* L ) 
 			{
@@ -144,16 +144,16 @@
 			}
 
-			template < typename C, typename F, F* f > 
+			template < typename C, typename F, F f > 
 			int object_method_wrapper( lua_State* L ) 
 			{
-				C* c = to_object( L, 1 );
-				return dispatcher<typename return_type<F>::type>::call( L, c, 2, f );
+				C* c = (C*)to_object( L, 1 );
+				return dispatcher<typename return_type<F>::type>::call( L, 2, *c, f );
 			}
 
-			template < typename C, typename F, F* f > 
+			template < typename C, typename F, F f > 
 			int fixed_method_wrapper( lua_State* L ) 
 			{
 				C* c = (C*)to_pointer( L, nv::lua::detail::upvalue_index(1) );
-				return dispatcher<typename return_type<F>::type>::call( L, c, 1, f );
+				return dispatcher<typename return_type<F>::type>::call( L, 1, *c, f );
 			}
 			
Index: trunk/nv/lua/lua_function.hh
===================================================================
--- trunk/nv/lua/lua_function.hh	(revision 252)
+++ trunk/nv/lua/lua_function.hh	(revision 253)
@@ -12,6 +12,4 @@
 #include <nv/lua/lua_values.hh>
 #include <nv/lua/lua_path.hh>
-
-struct lua_State;
 
 namespace nv
Index: trunk/nv/lua/lua_state.hh
===================================================================
--- trunk/nv/lua/lua_state.hh	(revision 252)
+++ trunk/nv/lua/lua_state.hh	(revision 253)
@@ -136,5 +136,6 @@
 			bool is_defined( const path& p ) { return is_defined( p, m_global ); }
 			void register_native_function( lfunction f, const char* name );
-			template < typename F, F* f >
+
+			template < typename F, F f >
 			void register_function( const char* name )
 			{
@@ -142,5 +143,5 @@
 			}
 
-			template < typename C, typename F, F* f > 
+			template < typename C, typename F, F f >
 			void register_function( const char* name )
 			{
@@ -212,5 +213,5 @@
 			void unregister_object( object * o );
 			void register_native_object_method( const char* lua_name, const char* name, lfunction f );
-			template < typename F, F* f >
+			template < typename F, F f >
 			void register_object_method( const char* lua_name, const char* name )
 			{
Index: trunk/nv/type_traits.hh
===================================================================
--- trunk/nv/type_traits.hh	(revision 252)
+++ trunk/nv/type_traits.hh	(revision 253)
@@ -163,9 +163,8 @@
 
 	template < typename F >
-	struct function_traits : public detail::function_traits_impl< typename std::add_pointer< F >::type >
-	{
-
-	};
-
+	struct function_traits : public detail::function_traits_impl< F >
+	{
+
+	};
 
 	template < typename T >
