add diagonal support