added #perform_request method