http://spectrummentor.com/parent-with-purpose-class/