Practicing implementing some different design patterns