fixed #1, support template function.
Add move and swap event, and add swap demo.