design pattern update