cleaned up proxy implementation