refactored request building and sending