support non-square output