Head first design pattern implementations