fully decouple http interface from backend implementation