added client side request cache