add design pattern