Modify observer.go
Add object pool pattern