call antidiagonals 'giadonals'
use Part typedefs
big cowboy refactoring to facilitate cheapish legality checks