Initial namespace support
Improve name generation interface
Abstract name source in name generation
Merge a bugfix from master
Handle shadowing in a separate module