KKLite:
1. improve observer pattern architecture.
2. rename class name.
3. coding style review.
4. improve code architecture.