https://github.com/me115/design_patterns