The name Writer is too generic. Maybe rename it to DelegatingWriter or ActionBasedWriter?