repo for studying design patterns