only en passant and castling left and app could be rewritten