just for design pattern practice and some notes