update design pattern