1) protocol independent
2) url parser