this repository is used as reference for design pattern implementation