refactored request method