async def send_http_response(writer,
                             http_code: int,
                             headers: List[Tuple[str, str]],
                             content: bytes,
                             http_status: str= None
                             ) -> None:
    """
    generate http response payload and send to writer
    """
    # generate response payload
    if not http_status:
        http_status = STATUS_CODES.get(http_code, 'Unknown')

    response: bytes = f'HTTP/1.1 {http_code} {http_status}\r\n'.encode()
    for k, v in headers:
        response += f'{k}: {v}\r\n'.encode()
    response += b'\r\n'
    response += content

    # send payload
    writer.write(response)
    await writer.drain()