Non-Equilibrium Thermodynamics