Make listener registration API more flexible
Reorganize source code files
Generate UI project