http://nomnel.net/blog/open-class-and-delegation/