library-design-patterns