proxy implementation