add design pattern learning