Some design patterns implemented