Folding, Stability and Design of Proteins