add lazy move generation
add king saftey to move generation