added KL_divergence