added proxy pattern