Defined castling, may need tweaks. Not tested, but compiles