I've implemented everything except castling and check