refactor request sending methods to reduce redundancy