diff --git a/example/example11.ref b/example/example11.ref
index 7d75056..8edc065 100644
--- a/example/example11.ref
+++ b/example/example11.ref
@@ -1,19 +1,19 @@
-Help on built-in function kw_func
+Help on built-in function kw_func in module example
 
 kkww__ffuunncc(...)
     Signature : (x : int, y : int) -> NoneType
 
-Help on built-in function kw_func2
+Help on built-in function kw_func2 in module example
 
 kkww__ffuunncc22(...)
     Signature : (x : int = 100L, y : int = 200L) -> NoneType
 
-Help on built-in function kw_func3
+Help on built-in function kw_func3 in module example
 
 kkww__ffuunncc33(...)
     Signature : (data : unicode = u'Hello world!') -> NoneType
 
-Help on built-in function kw_func4
+Help on built-in function kw_func4 in module example
 
 kkww__ffuunncc44(...)
     Signature : (myList : list<int> = [13L, 17L]) -> NoneType
diff --git a/example/example2.py b/example/example2.py
index 4220134..f8bda4d 100755
--- a/example/example2.py
+++ b/example/example2.py
@@ -3,6 +3,7 @@
 import sys, pydoc
 sys.path.append('.')
 
+import example
 from example import Example2
 
 Example2.value = 15
@@ -54,3 +55,9 @@
 print(instance.tuple_passthrough((True, "test", 5)))
 
 print(pydoc.render_doc(Example2, "Help on %s"))
+
+print("__name__(example) = %s" % example.__name__)
+print("__name__(example.Example2) = %s" % Example2.__name__)
+print("__module__(example.Example2) = %s" % Example2.__module__)
+print("__name__(example.Example2.get_set) = %s" % Example2.get_set.__name__)
+print("__module__(example.Example2.get_set) = %s" % Example2.get_set.__module__)
diff --git a/example/example2.ref b/example/example2.ref
index a63c3cd..08fb7cc 100644
--- a/example/example2.ref
+++ b/example/example2.ref
@@ -1,11 +1,15 @@
-key: key, value=value
+15
+5
+example.Example2: No constructor defined!
+can't set attribute
 key: key2, value=value2
 key: key, value=value
+key: key, value=value
 key: key2, value=value2
 key: key3
-key: key1
 key: key2
 key: key1
+key: key1
 key: key2
 key: key3
 Entry at positon 0: value
@@ -13,107 +17,108 @@
 list item 1: value2
 list item 0: value
 list item 1: value2
-15
-5
-example.Example2: No constructor defined!
-can't set attribute
 This exception was intentionally thrown.
-('test', True)
-(5, 'test', True)
+(u'test', True)
+(5L, u'test', True)
 Help on class Example2 in module example
 
-class EExxaammppllee22(builtins.object)
+class EExxaammppllee22(__builtin__.object)
  |  Example 2 documentation
  |  
  |  Methods defined here:
  |  
- |  ____iinniitt____(self, /, *args, **kwargs)
- |      Initialize self.  See help(type(self)) for accurate signature.
+ |  ____iinniitt____(...)
+ |      x.__init__(...) initializes x; see help(type(x)) for signature
  |  
- |  ____nneeww____ = <built-in method __new__ of example.Example2_meta object>
- |  ggeett__ddiicctt(...) from builtins.PyCapsule
+ |  ggeett__ddiicctt(...)
  |      Signature : (example.Example2) -> dict
  |      
  |      Return a Python dictionary
  |  
- |  ggeett__ddiicctt__22(...) from builtins.PyCapsule
- |      Signature : (example.Example2) -> dict<str, str>
+ |  ggeett__ddiicctt__22(...)
+ |      Signature : (example.Example2) -> dict<unicode, unicode>
  |      
  |      Return a C++ dictionary
  |  
- |  ggeett__lliisstt(...) from builtins.PyCapsule
+ |  ggeett__lliisstt(...)
  |      Signature : (example.Example2) -> list
  |      
  |      Return a Python list
  |  
- |  ggeett__lliisstt__22(...) from builtins.PyCapsule
- |      Signature : (example.Example2) -> list<str>
+ |  ggeett__lliisstt__22(...)
+ |      Signature : (example.Example2) -> list<unicode>
  |      
  |      Return a C++ list
  |  
- |  ggeett__sseett(...) from builtins.PyCapsule
+ |  ggeett__sseett(...)
  |      Signature : (example.Example2) -> set
  |      
  |      Return a Python set
  |  
- |  ggeett__sseett22(...) from builtins.PyCapsule
+ |  ggeett__sseett22(...)
  |      Signature : (example.Example2) -> set
  |      
  |      Return a C++ set
  |  
- |  nneeww__iinnssttaannccee(...) from builtins.PyCapsule
- |      Signature : () -> example.Example2
- |      
- |      Return an instance
- |  
- |  ppaaiirr__ppaasssstthhrroouugghh(...) from builtins.PyCapsule
- |      Signature : (example.Example2, (bool, str)) -> (str, bool)
+ |  ppaaiirr__ppaasssstthhrroouugghh(...)
+ |      Signature : (example.Example2, (bool, unicode)) -> (unicode, bool)
  |      
  |      Return a pair in reversed order
  |  
- |  pprriinntt__ddiicctt(...) from builtins.PyCapsule
- |      Signature : (example.Example2, dict) -> None
+ |  pprriinntt__ddiicctt(...)
+ |      Signature : (example.Example2, dict) -> NoneType
  |      
  |      Print entries of a Python dictionary
  |  
- |  pprriinntt__ddiicctt__22(...) from builtins.PyCapsule
- |      Signature : (example.Example2, dict<str, str>) -> None
+ |  pprriinntt__ddiicctt__22(...)
+ |      Signature : (example.Example2, dict<unicode, unicode>) -> NoneType
  |      
  |      Print entries of a C++ dictionary
  |  
- |  pprriinntt__lliisstt(...) from builtins.PyCapsule
- |      Signature : (example.Example2, list) -> None
+ |  pprriinntt__lliisstt(...)
+ |      Signature : (example.Example2, list) -> NoneType
  |      
  |      Print entries of a Python list
  |  
- |  pprriinntt__lliisstt__22(...) from builtins.PyCapsule
- |      Signature : (example.Example2, list<str>) -> None
+ |  pprriinntt__lliisstt__22(...)
+ |      Signature : (example.Example2, list<unicode>) -> NoneType
  |      
  |      Print entries of a C++ list
  |  
- |  pprriinntt__sseett(...) from builtins.PyCapsule
- |      Signature : (example.Example2, set) -> None
+ |  pprriinntt__sseett(...)
+ |      Signature : (example.Example2, set) -> NoneType
  |      
  |      Print entries of a Python set
  |  
- |  pprriinntt__sseett__22(...) from builtins.PyCapsule
- |      Signature : (example.Example2, set<str>) -> None
+ |  pprriinntt__sseett__22(...)
+ |      Signature : (example.Example2, set<unicode>) -> NoneType
  |      
  |      Print entries of a C++ set
  |  
- |  tthhrrooww__eexxcceeppttiioonn(...) from builtins.PyCapsule
- |      Signature : (example.Example2) -> None
+ |  tthhrrooww__eexxcceeppttiioonn(...)
+ |      Signature : (example.Example2) -> NoneType
  |      
  |      Throw an exception
  |  
- |  ttuuppllee__ppaasssstthhrroouugghh(...) from builtins.PyCapsule
- |      Signature : (example.Example2, (bool, str, int)) -> (int, str, bool)
+ |  ttuuppllee__ppaasssstthhrroouugghh(...)
+ |      Signature : (example.Example2, (bool, unicode, int)) -> (int, unicode, bool)
  |      
  |      Return a triple in reversed order
  |  
  |  ----------------------------------------------------------------------
  |  Data and other attributes defined here:
  |  
- |  ____ppyybbiinndd1111____ = <capsule object NULL>
+ |  ____nneeww____ = <built-in method __new__ of example.Example2__Meta object>
+ |      T.__new__(S, ...) -> a new object with type S, a subtype of T
+ |  
+ |  nneeww__iinnssttaannccee = <built-in method new_instance of PyCapsule object>
+ |      Signature : () -> example.Example2
+ |      
+ |      Return an instance
 
+__name__(example) = example
+__name__(example.Example2) = Example2
+__module__(example.Example2) = example
+__name__(example.Example2.get_set) = get_set
+__module__(example.Example2.get_set) = example
 Destructing Example2
