http://www.svonberg.org/2014/12/httpswwwmadewithcodecomprojects-this-pattern/