KL implementation