Hiya, while I am not discouraging any new answers coming in, it will be a helluva job to beat the magnificent, massive answer to this question by /u/PangeranDipanagara