changed forgive_request to static method; supported static/class method in retry; removed by_name paramters for simplicity; auto-dectect download type; fixed a encoding problem