Molecular basis of co-operativity in protein folding