framework: decouple http and framework implmentation