design pattern add