Using composition to add new proxies using functor. Additionally, part3 uses generics.