added luhns algorithm