Attempt to implement all design pattern from PoEAA (book)