add version 2
implemented changelisteners