Head first design pattern implementaions