implementation proxy design pattern