implemented move generator