add proxy design pattern