in the middle of refactoring to implement en passant.
refactoring finished. en-passant working.