observer pattern
fix compile warning
fix compile error
fix compile error