refactor http code, use request manager singleton with thread pooling and retry functionality