refactor move and move*bang*, pawn promotion, and castling