implemented proxy design pattern