Some bugs at 90n angles, but works