Modify adapter.go
Add singleton pattern
Add observer pattern
Add proxy pattern