added design-patterns