repo for myself learning design pattern