source code from head-first-deisgnpattern