it is not really a http abstraction, it's an interface