added diagonal()