add dynamic proxy design pattern