changes to is_diamond to include self