introduce generics for http