example project to play with some design patterns