virtual and protection proxies from Head First Design Patterns