Finished except for OppositeCornerMove